Stap 3: Het genereren van MIDI met Arduino
Uploaden met de volgende code op de Arduino, MIDI noot 60 (midden C) ingeschakeld, wacht op 300ms, dan uitgeschakeld en wacht op een andere 200ms.
byte noteON = 144;//note on command void setup() { Serial.begin(9600); } void loop() { MIDImessage(noteON, 60, 100);//turn note on delay(300);//hold note for 300ms MIDImessage(noteON, 60, 0);//turn note off (note on with velocity 0) delay(200);//wait 200ms until triggering next note } //send MIDI message void MIDImessage(byte command, byte data1, byte data2) { Serial.write(command); Serial.write(data1); Serial.write(data2); }
In deze schets die ik heb gemaakt een helper functie genaamd MIDImessage die een opdracht de twee gegevensbytes accepteert en stuurt ze uit de Arduino van USB-aansluiting met behulp van Serial.write(). Serial.Write is als Serial.print, maar het zet wat is erin naar een binair getal voordat het wordt verzonden uit.
Probeer het herschrijven van de schets om te spelen van een reeks van nota's, fietsen via MIDI merkt 50-79, elke noot inschakelen en vervolgens uitschakelen:
byte noteON = 144;//note on command void setup() { Serial.begin(9600); } void loop() { for (byte note=50;note<80;note++) {//from note 50 (D3) to note 79 (G5) MIDImessage(noteON, note, 100);//turn note on delay(300);//hold note for 300ms MIDImessage(noteON, note, 0);//turn note off (note on with velocity 0) delay(200);//wait 200ms until triggering next note } } //send MIDI message void MIDImessage(byte command, byte data1, byte data2) { Serial.write(command); Serial.write(data1); Serial.write(data2); }