This is an old version of the documentation. View the latest version here.
Control Surface  1.0.0
MIDI Control Surface library for Arduino
Public Member Functions | Static Public Member Functions | Protected Member Functions | Private Attributes | Static Private Attributes | List of all members
MultiMIDI_Interface< N > Class Template Reference

A class for grouping multiple MIDI interfaces in parallel. More...

#include <MultiMIDI_Interface.hpp>

Inheritance diagram for MultiMIDI_Interface< N >:
Collaboration diagram for MultiMIDI_Interface< N >:

Public Member Functions

 MultiMIDI_Interface (const Array< Parsing_MIDI_Interface *, N > &interfaces)
 Constructor. More...
 
void begin () override
 Initialize the MIDI Interface. More...
 
void update () override
 Read the MIDI interface and call the callback if a message is received. More...
 
void setCallbacks (MIDI_Callbacks *cb) override
 Set the callbacks that will be called when a MIDI message is received. More...
 
virtual void setCallbacks (MIDI_Callbacks *cb)=0
 Set the callbacks that will be called when a MIDI message is received. More...
 
void setCallbacks (MIDI_Callbacks &cb)
 Set the callbacks that will be called when a MIDI message is received. More...
 
void send (uint8_t m, uint8_t c, uint8_t d1, uint8_t d2)
 Send a 3-byte MIDI packet. More...
 
void send (uint8_t m, uint8_t c, uint8_t d1)
 Send a 2-byte MIDI packet. More...
 
void send (SysExMessage message)
 Send a MIDI System Exclusive message. More...
 
template<size_t N>
void send (const uint8_t(&sysexdata)[N], uint8_t cn=0)
 Send a MIDI System Exclusive message. More...
 
void send (uint8_t rt, uint8_t cn=0)
 Send a single-byte MIDI message. More...
 
void sendOnCable (uint8_t m, uint8_t c, uint8_t d1, uint8_t d2, uint8_t cn)
 Send a 3-byte MIDI packet with cable number. More...
 
void sendOnCable (uint8_t m, uint8_t c, uint8_t d1, uint8_t cn)
 Send a 2-byte MIDI packet with cable number. More...
 
void sendOnCable (uint8_t r, uint8_t cn)
 Send a single-byte MIDI packet with cable number. More...
 
void sendNoteOn (MIDICNChannelAddress address, uint8_t velocity)
 Send a MIDI Note On event. More...
 
void sendNoteOff (MIDICNChannelAddress address, uint8_t velocity)
 Send a MIDI Note Off event. More...
 
void sendKP (MIDICNChannelAddress address, uint8_t pressure)
 Send a MIDI Key Pressure event. More...
 
void sendCC (MIDICNChannelAddress address, uint8_t value)
 Send a MIDI Control Change event. More...
 
void sendPC (MIDICNChannelAddress address)
 Send a MIDI Program Change event. More...
 
void sendPC (MIDICNChannel address, uint8_t value)
 Send a MIDI Program Change event. More...
 
void sendCP (MIDICNChannel address, uint8_t pressure)
 Send a MIDI Channel Pressure event. More...
 
void sendPB (MIDICNChannel address, uint16_t value)
 Send a MIDI Pitch Bend event. More...
 
void setAsDefault ()
 Set this MIDI interface as the default interface. More...
 
void setCallbacks (MIDI_Callbacks &cb)
 Set the callbacks that will be called when a MIDI message is received. More...
 

Static Public Member Functions

static MIDI_InterfacegetDefault ()
 Return the default MIDI interface. More...
 

Protected Member Functions

void sendImpl (uint8_t m, uint8_t c, uint8_t d1, uint8_t d2, uint8_t cn) override
 Low-level function for sending a 3-byte MIDI message. More...
 
void sendImpl (uint8_t m, uint8_t c, uint8_t d1, uint8_t cn) override
 Low-level function for sending a 2-byte MIDI message. More...
 
void sendImpl (const uint8_t *data, size_t length, uint8_t cn) override
 Low-level function for sending a system exclusive MIDI message. More...
 
void sendImpl (uint8_t rt, uint8_t cn) override
 Low-level function for sending a single-byte MIDI message. More...
 

Private Attributes

Array< Parsing_MIDI_Interface *, N > interfaces
 

Static Private Attributes

static MIDI_InterfaceDefaultMIDI_Interface = nullptr
 

Detailed Description

template<uint8_t N>
class MultiMIDI_Interface< N >

A class for grouping multiple MIDI interfaces in parallel.

Output is sent to all N interfaces, and incoming messages are received from all N interfaces.

Template Parameters
NThe number of interfaces.
Examples
Dual-MIDI-Interface.ino.

Definition at line 16 of file MultiMIDI_Interface.hpp.

Constructor & Destructor Documentation

◆ MultiMIDI_Interface()

template<uint8_t N>
MultiMIDI_Interface< N >::MultiMIDI_Interface ( const Array< Parsing_MIDI_Interface *, N > &  interfaces)
inline

Constructor.

Parameters
interfacesAn array of pointers to the MIDI interfaces to group together. Only the pointers are saved, the MIDI interfaces themselves must outlive this MultiMIDI_Interface.

Definition at line 26 of file MultiMIDI_Interface.hpp.

Member Function Documentation

◆ begin()

template<uint8_t N>
void MultiMIDI_Interface< N >::begin ( )
inlineoverridevirtual

Initialize the MIDI Interface.

Reimplemented from MIDI_Interface.

Definition at line 29 of file MultiMIDI_Interface.hpp.

◆ update()

template<uint8_t N>
void MultiMIDI_Interface< N >::update ( )
inlineoverridevirtual

Read the MIDI interface and call the callback if a message is received.

Implements MIDI_Interface.

Definition at line 34 of file MultiMIDI_Interface.hpp.

◆ setCallbacks() [1/4]

template<uint8_t N>
void MultiMIDI_Interface< N >::setCallbacks ( MIDI_Callbacks cb)
inlineoverridevirtual

Set the callbacks that will be called when a MIDI message is received.

Parameters
cbA pointer to an object that implements the MIDI_Callbacks class.

Implements MIDI_Interface.

Definition at line 39 of file MultiMIDI_Interface.hpp.

◆ sendImpl() [1/4]

template<uint8_t N>
void MultiMIDI_Interface< N >::sendImpl ( uint8_t  m,
uint8_t  c,
uint8_t  d1,
uint8_t  d2,
uint8_t  cn 
)
inlineoverrideprotectedvirtual

Low-level function for sending a 3-byte MIDI message.

Implements MIDI_Interface.

Definition at line 46 of file MultiMIDI_Interface.hpp.

◆ sendImpl() [2/4]

template<uint8_t N>
void MultiMIDI_Interface< N >::sendImpl ( uint8_t  m,
uint8_t  c,
uint8_t  d1,
uint8_t  cn 
)
inlineoverrideprotectedvirtual

Low-level function for sending a 2-byte MIDI message.

Implements MIDI_Interface.

Definition at line 52 of file MultiMIDI_Interface.hpp.

◆ sendImpl() [3/4]

template<uint8_t N>
void MultiMIDI_Interface< N >::sendImpl ( const uint8_t *  data,
size_t  length,
uint8_t  cn 
)
inlineoverrideprotectedvirtual

Low-level function for sending a system exclusive MIDI message.

Implements MIDI_Interface.

Definition at line 57 of file MultiMIDI_Interface.hpp.

◆ sendImpl() [4/4]

template<uint8_t N>
void MultiMIDI_Interface< N >::sendImpl ( uint8_t  rt,
uint8_t  cn 
)
inlineoverrideprotectedvirtual

Low-level function for sending a single-byte MIDI message.

Implements MIDI_Interface.

Definition at line 62 of file MultiMIDI_Interface.hpp.

◆ setCallbacks() [2/4]

template<uint8_t N>
virtual void MIDI_Interface::setCallbacks

Set the callbacks that will be called when a MIDI message is received.

Parameters
cbA pointer to an object that implements the MIDI_Callbacks class.

◆ setCallbacks() [3/4]

template<uint8_t N>
void MIDI_Interface::setCallbacks
inline

Set the callbacks that will be called when a MIDI message is received.

Parameters
cbA reference to an object that implements the MIDI_Callbacks class.

Definition at line 159 of file MIDI_Interface.hpp.

◆ send() [1/5]

void MIDI_Interface::send ( uint8_t  m,
uint8_t  c,
uint8_t  d1,
uint8_t  d2 
)
inherited

Send a 3-byte MIDI packet.

Parameters
mMIDI message type. [0x80, 0xE0]
cThe MIDI channel. [1, 16]
d1The first data byte. [0, 127]
d2The second data byte. [0, 127]
Examples
SysEx-Send-Receive.ino.

Definition at line 22 of file MIDI_Interface.cpp.

◆ send() [2/5]

void MIDI_Interface::send ( uint8_t  m,
uint8_t  c,
uint8_t  d1 
)
inherited

Send a 2-byte MIDI packet.

Parameters
mMIDI message type. [0x80, 0xE0]
cThe MIDI channel. [1, 16]
d1The first data byte. [0, 127]

Definition at line 26 of file MIDI_Interface.cpp.

◆ send() [3/5]

void MIDI_Interface::send ( SysExMessage  message)
inherited

Send a MIDI System Exclusive message.

Definition at line 100 of file MIDI_Interface.cpp.

◆ send() [4/5]

template<size_t N>
void MIDI_Interface::send ( const uint8_t(&)  sysexdata[N],
uint8_t  cn = 0 
)
inlineinherited

Send a MIDI System Exclusive message.

Definition at line 120 of file MIDI_Interface.hpp.

◆ send() [5/5]

void MIDI_Interface::send ( uint8_t  rt,
uint8_t  cn = 0 
)
inherited

Send a single-byte MIDI message.

Definition at line 109 of file MIDI_Interface.cpp.

◆ sendOnCable() [1/3]

void MIDI_Interface::sendOnCable ( uint8_t  m,
uint8_t  c,
uint8_t  d1,
uint8_t  d2,
uint8_t  cn 
)
inherited

Send a 3-byte MIDI packet with cable number.

Parameters
mMIDI message type. [0x80, 0xE0]
cThe MIDI channel. [1, 16]
d1The first data byte. [0, 127]
d2The second data byte. [0, 127]
cnThe MIDI Cable Number. [0, 15]

Definition at line 30 of file MIDI_Interface.cpp.

◆ sendOnCable() [2/3]

void MIDI_Interface::sendOnCable ( uint8_t  m,
uint8_t  c,
uint8_t  d1,
uint8_t  cn 
)
inherited

Send a 2-byte MIDI packet with cable number.

Parameters
mMIDI message type. [0x80, 0xE0]
cThe MIDI channel. [1, 16]
d1The first data byte. [0, 127]
cnThe MIDI Cable Number. [0, 15]

Definition at line 42 of file MIDI_Interface.cpp.

◆ sendOnCable() [3/3]

void MIDI_Interface::sendOnCable ( uint8_t  r,
uint8_t  cn 
)
inherited

Send a single-byte MIDI packet with cable number.

Parameters
rThe MIDI byte to send.
cnThe MIDI Cable Number. [0, 15]

Definition at line 52 of file MIDI_Interface.cpp.

◆ sendNoteOn()

void MIDI_Interface::sendNoteOn ( MIDICNChannelAddress  address,
uint8_t  velocity 
)
inherited

Send a MIDI Note On event.

Definition at line 58 of file MIDI_Interface.cpp.

◆ sendNoteOff()

void MIDI_Interface::sendNoteOff ( MIDICNChannelAddress  address,
uint8_t  velocity 
)
inherited

Send a MIDI Note Off event.

Definition at line 64 of file MIDI_Interface.cpp.

◆ sendKP()

void MIDI_Interface::sendKP ( MIDICNChannelAddress  address,
uint8_t  pressure 
)
inherited

Send a MIDI Key Pressure event.

Definition at line 70 of file MIDI_Interface.cpp.

◆ sendCC()

void MIDI_Interface::sendCC ( MIDICNChannelAddress  address,
uint8_t  value 
)
inherited

Send a MIDI Control Change event.

Definition at line 75 of file MIDI_Interface.cpp.

◆ sendPC() [1/2]

void MIDI_Interface::sendPC ( MIDICNChannelAddress  address)
inherited

Send a MIDI Program Change event.

Definition at line 85 of file MIDI_Interface.cpp.

◆ sendPC() [2/2]

void MIDI_Interface::sendPC ( MIDICNChannel  address,
uint8_t  value 
)
inherited

Send a MIDI Program Change event.

Definition at line 80 of file MIDI_Interface.cpp.

◆ sendCP()

void MIDI_Interface::sendCP ( MIDICNChannel  address,
uint8_t  pressure 
)
inherited

Send a MIDI Channel Pressure event.

Definition at line 90 of file MIDI_Interface.cpp.

◆ sendPB()

void MIDI_Interface::sendPB ( MIDICNChannel  address,
uint16_t  value 
)
inherited

Send a MIDI Pitch Bend event.

Definition at line 95 of file MIDI_Interface.cpp.

◆ getDefault()

MIDI_Interface * MIDI_Interface::getDefault ( )
staticinherited

Return the default MIDI interface.

Definition at line 18 of file MIDI_Interface.cpp.

◆ setAsDefault()

void MIDI_Interface::setAsDefault ( )
inherited

Set this MIDI interface as the default interface.

Definition at line 16 of file MIDI_Interface.cpp.

◆ setCallbacks() [4/4]

void MIDI_Interface::setCallbacks ( MIDI_Callbacks cb)
inlineinherited

Set the callbacks that will be called when a MIDI message is received.

Parameters
cbA reference to an object that implements the MIDI_Callbacks class.

Definition at line 159 of file MIDI_Interface.hpp.

Member Data Documentation

◆ interfaces

template<uint8_t N>
Array<Parsing_MIDI_Interface *, N> MultiMIDI_Interface< N >::interfaces
private

Definition at line 68 of file MultiMIDI_Interface.hpp.

◆ DefaultMIDI_Interface

MIDI_Interface * MIDI_Interface::DefaultMIDI_Interface = nullptr
staticprivateinherited

Definition at line 182 of file MIDI_Interface.hpp.


The documentation for this class was generated from the following file: