Arduino, sensorer och MIDI- (3 / 16 steg)
Steg 3: Skapa MIDI med Arduino
Ladda upp följande kod på Arduino, aktiverar MIDI-not 60 (mitten C) den, väntar 300 MS, och sedan stänger av och väntar på en annan 200ms.
byte noteON = 144; //note på kommando
void setup() {
Serial.BEGIN(9600);
}
void loop() {
MIDImessage (noteON, 60, 100); //turn anteckning på
fördröjning (300); //hold anmärkning för 300 MS
MIDImessage (noteON, 60, 0); //turn Obs off (Observera på med hastighet 0)
fördröjning (200); //wait 200ms tills utlöser nästa anteckning
}
skicka MIDI-meddelande
void MIDImessage (byte kommando, byte data1, byte data2) {
Serial.write(Command);
Serial.write(Data1);
Serial.write(data2);
}
I denna skiss skapade jag en hjälpare funktion kallad MIDImessage som accepterar ett kommando två data-byte och skickar dem ut Arduinos USB-anslutning med Serial.write(). Serial.Write är som Serial.print, men den konverterar vad är inuti den till binär innan det skickas.
Försök skriva om skissen för att spela ett antal kommentarer, cykling genom MIDI noterar 50-79, tända varje not och sedan av:
byte noteON = 144; //note på kommando
void setup() {
Serial.BEGIN(9600);
}
void loop() {
för (byte Obs = 50; Observera < 80; Obs ++) {//from Obs 50 (D3) till not 79 (G5)
MIDImessage (noteON, Obs, 100); //turn anteckning på
fördröjning (300); //hold anmärkning för 300 MS
MIDImessage (noteON, Obs, 0); //turn Obs off (Observera på med hastighet 0)
fördröjning (200); //wait 200ms tills utlöser nästa anteckning
}
}
skicka MIDI-meddelande
void MIDImessage (byte kommando, byte data1, byte data2) {
Serial.write(Command);
Serial.write(Data1);
Serial.write(data2);
}