Skicka och ta emot MIDI med Arduino (8 / 11 steg)
Steg 8: Variabel hastighet och Arduino
I den här koden har jag ändrat den variabel hastigheten så att det ökar med ökande Obs nummer. I början av funktionen loop() variabla hastigheten är satt till 20, då det ökar med fem i varje iteration av den for-loop:
Velocity += 5.
så för Obs = 50, hastighet = 20, sedan för Obs = 51, hastighet = 25, sedan för Obs = 52, hastighet = 30... och så vidare.
När slutet av funktionen loop() uppnås, är hastigheten återställs till 20.
Här är en video av slutresultatet, märker hur volymen ökar med ökande hastighet.
< pre > / *
MIDI-Obs på meddelanden med variabel 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 noteON = 144; //144 = 10010000 i binärt, notera på kommando
void setup() {
Ställ in MIDI-baud-hastighet:
Serial.BEGIN(31250);
}
void loop() {
int hastighet = 20; //set hastighet till 20
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
Velocity += 5, //ad 5 till nuvarande velocity värde
}
}
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
}