Operators and utilities for MIDI routing.
Two or more MIDI interfaces can be connected using MIDI Pipes. The simplest pipe just carries messages from the input interface to the output interface, but you can write rules for filtering out certain messages, changing the channel of some messages, etc.
Allows you to use syntax like:
midiA = Serial1, midiB = Serial2, midiC = Serial3;
midiA >> pipes >> midiB;
midiC >> pipes >> midiB;
midiC << pipes << midiB;
A class for MIDI interfaces sending and receiving MIDI messages over a Hardware Serial port.
Class that produces multiple MIDI_Pipes.
Or for bidirectional connections:
midiA = Serial1, midiB = Serial2, midiC = Serial3;
midiA | pipes | midiB;
midiA | pipes | midiC;
MIDI_PipeFactory< N, BidirectionalMIDI_Pipe > BidirectionalMIDI_PipeFactory
Have a look at the following examples on MIDI routing:
If you're interested how the pipes work, see the documentation for MIDI_Pipe.
- See also
- Routing MIDI messages (MIDI tutorial)
|
| MIDI_Pipe & | operator>> (TrueMIDI_Source &source, MIDI_Pipe &pipe) |
| | Connect a source to a pipe (source >> pipe).
|
| TrueMIDI_Sink & | operator>> (MIDI_Pipe &pipe, TrueMIDI_Sink &sink) |
| | Connect a pipe to a sink (pipe >> sink).
|
| MIDI_Pipe & | operator<< (TrueMIDI_Sink &sink, MIDI_Pipe &pipe) |
| | Connect a sink to a pipe (sink << pipe).
|
| TrueMIDI_Source & | operator<< (MIDI_Pipe &pipe, TrueMIDI_Source &source) |
| | Connect a pipe to a source (pipe << source).
|
| MIDI_Pipe & | operator<< (MIDI_Pipe &, MIDI_Pipe &)=delete |
| | Don't connect two pipes to eachother.
|
| TrueMIDI_SinkSource & | operator| (BidirectionalMIDI_Pipe &pipe, TrueMIDI_SinkSource &sinksource) |
| | Connect a pipe to a sink+source (pipe | source+sink).
|
| BidirectionalMIDI_Pipe & | operator| (TrueMIDI_SinkSource &sinksource, BidirectionalMIDI_Pipe &pipe) |
| | Connect a sink+source to a pipe (source+sink | pipe).
|
| template<size_t N, class Pipe> |
| MIDI_Pipe & | operator>> (TrueMIDI_Source &source, MIDI_PipeFactory< N, Pipe > &pipe_fact) |
| template<size_t N, class Pipe> |
| MIDI_Pipe & | operator>> (MIDI_Pipe &, MIDI_PipeFactory< N, Pipe > &)=delete |
| template<size_t N, class Pipe> |
| TrueMIDI_Sink & | operator>> (MIDI_PipeFactory< N, Pipe > &pipe_fact, TrueMIDI_Sink &sink) |
| template<size_t N, class Pipe> |
| MIDI_Pipe & | operator>> (MIDI_PipeFactory< N, Pipe > &, MIDI_Pipe &)=delete |
| template<size_t N, class Pipe> |
| MIDI_Pipe & | operator<< (TrueMIDI_Sink &sink, MIDI_PipeFactory< N, Pipe > &pipe_fact) |
| template<size_t N, class Pipe> |
| TrueMIDI_Source & | operator<< (MIDI_PipeFactory< N, Pipe > &pipe_fact, TrueMIDI_Source &source) |
| template<size_t N> |
| TrueMIDI_SinkSource & | operator| (BidirectionalMIDI_PipeFactory< N > &pipe_fact, TrueMIDI_SinkSource &sinksource) |
| template<size_t N> |
| BidirectionalMIDI_Pipe & | operator| (TrueMIDI_SinkSource &sinksource, BidirectionalMIDI_PipeFactory< N > &pipe_fact) |