56 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			C++
		
	
	
	
			
		
		
	
	
			56 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			C++
		
	
	
	
| #include <MIDI.h>
 | |
| 
 | |
| // This example shows how to create two instances of the library to create a merger.
 | |
| // There are two MIDI couples of IO, A and B, each using thru and merging with the
 | |
| // input from the other node. The result is the following:
 | |
| // A out = A in + B in
 | |
| // B out = B in + A in
 | |
| 
 | |
| #if defined(ARDUINO_SAM_DUE)
 | |
|     MIDI_CREATE_INSTANCE(HardwareSerial, Serial,     midiA);
 | |
|     MIDI_CREATE_INSTANCE(HardwareSerial, Serial1,    midiB);
 | |
| #elif defined(ARDUINO_SAMD_ZERO)
 | |
|     MIDI_CREATE_INSTANCE(Serial_, SerialUSB,  midiA);
 | |
|     MIDI_CREATE_INSTANCE(HardwareSerial, Serial1,    midiB);
 | |
| #elif defined(USBCON) || defined(__MK20DX128__) || defined(__MK20DX256__) || defined(__MKL26Z64__)
 | |
|     #include <SoftwareSerial.h>
 | |
|     SoftwareSerial softSerial(2,3);
 | |
|     MIDI_CREATE_INSTANCE(HardwareSerial, Serial1,     midiA);
 | |
|     MIDI_CREATE_INSTANCE(SoftwareSerial, softSerial, midiB);
 | |
| #else
 | |
|     #include <SoftwareSerial.h>
 | |
|     SoftwareSerial softSerial(2,3);
 | |
|     MIDI_CREATE_INSTANCE(HardwareSerial, Serial,     midiA);
 | |
|     MIDI_CREATE_INSTANCE(SoftwareSerial, softSerial, midiB);
 | |
| #endif
 | |
| 
 | |
| void setup()
 | |
| {
 | |
|     // Initiate MIDI communications, listen to all channels
 | |
|     midiA.begin(MIDI_CHANNEL_OMNI);
 | |
|     midiB.begin(MIDI_CHANNEL_OMNI);
 | |
| }
 | |
| 
 | |
| void loop()
 | |
| {
 | |
|     if (midiA.read())
 | |
|     {
 | |
|         // Thru on A has already pushed the input message to out A.
 | |
|         // Forward the message to out B as well.
 | |
|         midiB.send(midiA.getType(),
 | |
|                    midiA.getData1(),
 | |
|                    midiA.getData2(),
 | |
|                    midiA.getChannel());
 | |
|     }
 | |
| 
 | |
|     if (midiB.read())
 | |
|     {
 | |
|         // Thru on B has already pushed the input message to out B.
 | |
|         // Forward the message to out A as well.
 | |
|         midiA.send(midiB.getType(),
 | |
|                    midiB.getData1(),
 | |
|                    midiB.getData2(),
 | |
|                    midiB.getChannel());
 | |
|     }
 | |
| }
 |