Errata for Page 310:
<-back to errata for Physical Computing.
I know I should start with the stuff I will be working with next week in class but I just got back from giving a talk on using sysex to debug arduino code over midi. http://www.suspectdevices.com/talks/EpicMidiFail/assets/fallback/index.html So my head is in the midi domain.
The pseudo code is
loop:
read sensor
convert sensor value to a note
play MIDI note
pause a quarter second
stop MIDI note
end loop
There are two ways to send the midi note on/off message.
1. You can write the (3) bytes out at 31250 baud.
int sensor = 2;
void setup()
{
// Set MIDI baud rate:
Serial.begin(31250);
}
void loop()
int value=analogRead(sensor);
int note = map(value, 1, 750/65, 60, 71);
Serial.write(0x90); //note on channel 1
Serial.write(note);
Serial.write(0x45); //velocity.
delay(250);
Serial.write(0x90); //note on channel 1
Serial.write(note);
Serial.write(0x00); //velocity=0->OFF.
}
Or you can use the GPL3d midi library provided by the arduino.
#include <Midi.h>
void setup() {
MIDI.begin(0); // input channel is set to 0
}
void loop() {
int value=analogRead(sensor);
note = map(value, 1, 750/65, 60, 71);
MIDI.sendNoteOn(note,40,0);
delay(250); // Wait for a bit
MIDI.sendNoteOff(note,0,0);
}