52 lines
1.3 KiB
C++
52 lines
1.3 KiB
C++
/*
|
|
MIDI note player
|
|
|
|
This sketch shows how to use Serial1 (pins 7 and 8) to send MIDI
|
|
note data. If this circuit is connected to a MIDI synth, it will
|
|
play the notes F#-0 (0x1E) to F#-5 (0x5A) in sequence.
|
|
|
|
|
|
The circuit:
|
|
* Pin 7 connected to MIDI jack pin 5
|
|
* MIDI jack pin 2 connected to ground
|
|
* MIDI jack pin 4 connected to +5V through 220-ohm resistor
|
|
Attach a MIDI cable to the jack, then to a MIDI synth, and play music.
|
|
|
|
created 13 Jun 2006
|
|
modified 2 Jul 2009
|
|
by Tom Igoe
|
|
|
|
http://www.arduino.cc/en/Tutorial/MIDI
|
|
|
|
Ported to the Maple 27 May 2010
|
|
by Bryan Newbold
|
|
*/
|
|
|
|
void setup() {
|
|
// Set MIDI baud rate:
|
|
Serial1.begin(31250);
|
|
}
|
|
|
|
void loop() {
|
|
// Play notes from F#-0 (0x1E) to F#-5 (0x5A):
|
|
for (int note = 0x1E; note < 0x5A; note++) {
|
|
// Note on channel 1 (0x90), some note value (note), middle
|
|
// velocity (0x45):
|
|
noteOn(0x90, note, 0x45);
|
|
delay(100);
|
|
// Note on channel 1 (0x90), some note value (note), silent
|
|
// velocity (0x00):
|
|
noteOn(0x90, note, 0x00);
|
|
delay(100);
|
|
}
|
|
}
|
|
|
|
// Plays a MIDI note. Doesn't check to see that cmd is greater than
|
|
// 127, or that data values are less than 127:
|
|
void noteOn(int cmd, int pitch, int velocity) {
|
|
Serial1.print(cmd, BYTE);
|
|
Serial1.print(pitch, BYTE);
|
|
Serial1.print(velocity, BYTE);
|
|
}
|
|
|