Skicka och ta emot MIDI med Arduino (7 / 11 steg)
Steg 7: Obs Off med 0 hastighet
Du kanske har märkt i föregående steg video, att hastigheten föreföll sätta tillbaka till 0 när anteckningen av meddelandet skickades. Detta beror på ett MIDI-meddelande med en anteckning på kommando och hastighet 0 är samma som en anteckning från meddelande. Ibland när en programvara MIDI miljö får en anteckning från meddelande kommer automatiskt att översätta det till en anteckning på meddelande med hastighet 0 eftersom de är samma. Hittar du förmodligen att det är lättare att programmet MIDI genom att skicka dessa Observera på / hastighet = 0 meddelanden i stället för att skicka Obs iväg.
Koden nedan gör exakt samma sak som koden i det sista steget, men använder det bara Obs på kommandon. Jag har i huvudsak ersatt följande rad:
MIDImessage (noteOFF, Obs, velocity);
med:
MIDImessage (noteON, Obs, 0);
< pre > / *
MIDI-på meddelanden med 0 hastighet
Av Amanda Ghassaei
Juli 2012
* Detta program är fri programvara; Du kan vidaredistribuera det och/eller ändra
* det enligt villkoren i GNU General Public License som offentliggjorts av
* den Free Software Foundation; antingen version 3 av licensen, eller
* (på ditt alternativ) någon senare version.
*/
int hastighet = 100; //velocity för MIDI-noter, måste vara mellan 0 och 127
(högre hastighet gör vanligtvis MIDI-instrument högre)
int noteON = 144; //144 = 10010000 i binärt, notera på kommando
void setup() {
Ställ in MIDI-baud-hastighet:
Serial.BEGIN(31250);
}
void loop() {
för (int Obs = 50; Observera < 70; Obs ++) {//from not 50 (D3) till Obs 69 (A4)
MIDImessage (noteON, Obs, velocity); //turn anteckning på
fördröjning (300); //hold anmärkning för 300 MS
MIDImessage (noteON, Obs, 0); //turn anmärkning av
fördröjning (200); //wait 200ms tills utlöser nästa anteckning
}
}
skicka MIDI-meddelande
void MIDImessage (int befalla, int MIDInote, int MIDIvelocity) {
Serial.write (kommandot); //send på eller av kommandot
Serial.write (MIDInote); //send pitch data
Serial.write (MIDIvelocity); //send hastighet data
}