Arduino, sensorer och MIDI- (4 / 16 steg)
Steg 4: Arduino analoga ingångar och MIDI
Låt oss tråd upp en potentiometer till analoga stift 0 och använda data från det för att styra tonhöjden för en MIDI-not:
byte noteON = 144; //note på kommando
int potPin = A0;
void setup() {
Serial.BEGIN(9600);
}
void loop() {
int potVal = analogRead (potPin), //read data från potentiometer
Vi har att skala potentiometer data att passa mellan 0 och 127 (detta är de rad av MIDI-noterna)
byte Obs = karta (potVal, 0, 1023, 0, 127);
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);
}
Nu prova med potentiometern för att styra hastigheten på en MIDI-not:
byte noteON = 144; //note på kommando
int potPin = A0;
void setup() {
Serial.BEGIN(9600);
}
void loop() {
int potVal = analogRead (potPin), //read data från potentiometer
Vi har att skala potentiometer data att passa mellan 0 och 127 (detta är de rad av MIDI-noterna)
byte hastighet = karta (potVal, 0, 1023, 0, 127);
byte Obs = 60.
MIDImessage (noteON, Obs, velocity); //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);
}
Detta låter olika beroende på vilken typ av instrument du har din MIDI hooked upp till, men generellt bör det låter högre. Ljudet kan också vara skarpare, som om du slående en nyckel hårt, eller blåsa i ett blåsinstrument med en hel del kraft.