Stap 6: Hoe maak je geluid
MIDI is een serieel protocol uitgevonden in de vroege jaren 1980 om een digitale muziekinstrument waarmee andere digitale muzikale instrument(en). Het is vergelijkbaar met een RS232 seriële poort met uitzondering van:
* Het heeft een vreemde baud-rate (31250 baud).
* Het maakt gebruik van een huidige lus in plaats van spanning signalering (brom-inducerende grond om loops te voorkomen).
Gelukkig is er een Arduino schild, dat een MIDI hardware-interface wordt geïmplementeerd, aan toevoegen dat sommige seriële poort software en je hebt een werkende MIDI-interface.
Voor onze doeleinden moeten we alleen twee types van MIDI-berichten genereren:
Opmerking ON: Gegenereerd wanneer een toets wordt gedrukt. Dit vertelt de piano om te beginnen met de opmerking.
Opmerking uit: Gegenereerd wanneer een toets wordt losgelaten. Dit vertelt de piano om te stoppen met de notitie.
Elke MIDI-opdracht bestaat uit 3 bytes:
* De opdracht (Let op aan/uit)
* De snelheid van de opmerking (hoe snel de notitie is ingedrukt/uitgebracht)
* De notitie (welke bepaalde toets is ingedrukt/uitgebracht)
De keuze voor opmerking velocity roept vragen op. Sommige toetsenborden kunnen ontdekken hoe snel u druk op de toets - en dit verandert de kwaliteit (meestal volume) van het geluid gegenereerd. De grote Piano kan niet detecteren de belangrijkste snelheid - zodat we een opmerking vooraf gedefinieerde, constante snelheid gebruikt. Dit maakt het pianospel dat minder genuanceerd dan het anders zou zijn, maar dit is minder een probleem voor een piano gespeeld met voeten.
Bronnen:
Sparkfun maakt het schild van de MIDI dat ik gebruikte.
https://www.Sparkfun.com/products/9598
Grote Piano Firmware. MIDI en UART-stuurprogramma.
https://github.com/deadsy/bigpiano/BLOB/Master/src/Midi.cpp
https://github.com/deadsy/bigpiano/BLOB/Master/src/Midi.h
https://github.com/deadsy/bigpiano/BLOB/Master/src/UART.cpp
https://github.com/deadsy/bigpiano/BLOB/Master/src/UART.h