Bygga ett stort Piano (6 / 10 steg)
Steg 6: Hur man gör ljud
MIDI är ett seriellt protokoll uppfanns i början av 1980 att tillåta ett digitalt instrument att styra andra digitala musikaliska instrument. Det liknar en RS232 serieport utom:
* Den har en konstig överföringshastigheten (31250 baud).
* Den använder en strömslinga istället för spänning signalering (att undvika hum-inducerande jordslingor).
Lyckligtvis finns det en Arduino shield som implementerar ett MIDI hårdvara gränssnitt, lägga till att vissa program för seriell port och du har ett fungerande MIDI-gränssnitt.
För våra ändamål behöver vi bara generera två typer av MIDI-meddelanden:
Obs på: Genereras när en tangent är nedtryckt. Detta säger piano att starta anteckningen.
Obs OFF: Genereras när en tangent släpps. Detta säger piano att stoppa anteckningen.
Varje MIDI-kommando består av 3 byte:
* Kommandot (Observera på/av)
* Obs hastighet (hur snabbt anteckningen är pressade/släppt)
* Notera (vilken särskild nyckel har varit tryckt/släppt)
Valet för Obs velocity väcker frågor. Vissa tangentbord kan upptäcka hur snabbt du tryck på nyckel - och detta ändrar ljudet kvalitet (mestadels volym) genereras. Stora Piano kan inte upptäcka den viktiga velocity - så vi använde en hastighet som är fördefinierade, konstant anmärkning. Detta gör pianospel, mindre nyanserad än den annars skulle vara, men detta är mindre av ett problem för ett piano spelade med fötter.
Resurser:
Sparkfun gör MIDI skölden jag använde.
https://www.Sparkfun.com/products/9598
Stora Piano Firmware. MIDI och UART-drivrutin.
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