38 lines
1.2 KiB
C++
38 lines
1.2 KiB
C++
#include <MIDI.h>
|
|
|
|
// Simple tutorial on how to receive and send MIDI messages
|
|
// on a different serial port, using SoftwareSerial.
|
|
// Here, when receiving any message on channel 4, the Arduino
|
|
// will blink a led and play back a note for 1 second.
|
|
|
|
#if defined(ARDUINO_SAM_DUE) || defined(SAMD_SERIES)
|
|
/* example not relevant for this hardware (SoftwareSerial not supported) */
|
|
MIDI_CREATE_DEFAULT_INSTANCE();
|
|
#else
|
|
#include <SoftwareSerial.h>
|
|
using Transport = MIDI_NAMESPACE::SerialMIDI<SoftwareSerial>;
|
|
int rxPin = 18;
|
|
int txPin = 19;
|
|
SoftwareSerial mySerial = SoftwareSerial(rxPin, txPin);
|
|
Transport serialMIDI(mySerial);
|
|
MIDI_NAMESPACE::MidiInterface<Transport> MIDI((Transport&)serialMIDI);
|
|
#endif
|
|
|
|
void setup()
|
|
{
|
|
pinMode(LED_BUILTIN, OUTPUT);
|
|
MIDI.begin(4); // Launch MIDI and listen to channel 4
|
|
}
|
|
|
|
void loop()
|
|
{
|
|
if (MIDI.read()) // If we have received a message
|
|
{
|
|
digitalWrite(LED_BUILTIN, HIGH);
|
|
MIDI.sendNoteOn(42, 127, 1); // Send a Note (pitch 42, velo 127 on channel 1)
|
|
delay(1000); // Wait for a second
|
|
MIDI.sendNoteOff(42, 0, 1); // Stop the note
|
|
digitalWrite(LED_BUILTIN, LOW);
|
|
}
|
|
}
|