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);
 | |
|   }
 | |
| }
 |