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 | Static Private Attributes | List of all members
MIDI_Interface Class Referenceabstract

An abstract class for MIDI interfaces. More...

#include <MIDI_Interface.hpp>

Inheritance diagram for MIDI_Interface:
Collaboration diagram for MIDI_Interface:

Public Member Functions

virtual ~MIDI_Interface ()
 Destructor. More...
 
virtual void begin ()
 Initialize the MIDI Interface. 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 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 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...
 
virtual void update ()=0
 Read the MIDI interface and call the callback if a message is received. More...
 
void setAsDefault ()
 Set this MIDI interface as the default interface. 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...
 
virtual void sendImpl (uint8_t m, uint8_t c, uint8_t d1, uint8_t d2, uint8_t cn)=0
 Low-level function for sending a 3-byte MIDI message. More...
 
virtual void sendImpl (uint8_t m, uint8_t c, uint8_t d1, uint8_t cn)=0
 Low-level function for sending a 2-byte MIDI message. More...
 
virtual void sendImpl (const uint8_t *data, size_t length, uint8_t cn)=0
 Low-level function for sending a system exclusive MIDI message. More...
 
virtual void sendImpl (uint8_t rt, uint8_t cn)=0
 Low-level function for sending a single-byte MIDI message. More...
 

Static Public Member Functions

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

Protected Member Functions

 MIDI_Interface ()
 Constructor. More...
 

Static Private Attributes

static MIDI_InterfaceDefaultMIDI_Interface = nullptr
 

Detailed Description

An abstract class for MIDI interfaces.

Definition at line 16 of file MIDI_Interface.hpp.

Constructor & Destructor Documentation

◆ MIDI_Interface()

MIDI_Interface::MIDI_Interface ( )
protected

Constructor.

Definition at line 5 of file MIDI_Interface.cpp.

◆ ~MIDI_Interface()

MIDI_Interface::~MIDI_Interface ( )
virtual

Destructor.

Definition at line 9 of file MIDI_Interface.cpp.

Member Function Documentation

◆ begin()

virtual void MIDI_Interface::begin ( )
inlinevirtual

◆ send() [1/5]

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

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 
)

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.

◆ sendOnCable() [1/3]

void MIDI_Interface::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.

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 
)

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 
)

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 
)

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 
)

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 
)

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 
)

Send a MIDI Control Change event.

Definition at line 75 of file MIDI_Interface.cpp.

◆ sendPC() [1/2]

void MIDI_Interface::sendPC ( MIDICNChannelAddress  address)

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 
)

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 
)

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 
)

Send a MIDI Pitch Bend event.

Definition at line 95 of file MIDI_Interface.cpp.

◆ send() [3/5]

void MIDI_Interface::send ( SysExMessage  message)

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 
)
inline

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 
)

Send a single-byte MIDI message.

Definition at line 109 of file MIDI_Interface.cpp.

◆ update()

virtual void MIDI_Interface::update ( )
pure virtual

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

Implemented in Parsing_MIDI_Interface, BluetoothMIDI_Interface, and MultiMIDI_Interface< N >.

◆ getDefault()

MIDI_Interface * MIDI_Interface::getDefault ( )
static

Return the default MIDI interface.

Definition at line 18 of file MIDI_Interface.cpp.

◆ setAsDefault()

void MIDI_Interface::setAsDefault ( )

Set this MIDI interface as the default interface.

Definition at line 16 of file MIDI_Interface.cpp.

◆ setCallbacks() [1/2]

virtual void MIDI_Interface::setCallbacks ( MIDI_Callbacks cb)
pure virtual

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.

Implemented in Parsing_MIDI_Interface, and MultiMIDI_Interface< N >.

◆ setCallbacks() [2/2]

void MIDI_Interface::setCallbacks ( MIDI_Callbacks cb)
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.

◆ sendImpl() [1/4]

virtual void MIDI_Interface::sendImpl ( uint8_t  m,
uint8_t  c,
uint8_t  d1,
uint8_t  d2,
uint8_t  cn 
)
pure virtual

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

Implemented in USBMIDI_Interface, BluetoothMIDI_Interface, MultiMIDI_Interface< N >, StreamMIDI_Interface, and StreamDebugMIDI_Interface.

◆ sendImpl() [2/4]

virtual void MIDI_Interface::sendImpl ( uint8_t  m,
uint8_t  c,
uint8_t  d1,
uint8_t  cn 
)
pure virtual

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

Implemented in USBMIDI_Interface, BluetoothMIDI_Interface, MultiMIDI_Interface< N >, StreamMIDI_Interface, and StreamDebugMIDI_Interface.

◆ sendImpl() [3/4]

virtual void MIDI_Interface::sendImpl ( const uint8_t *  data,
size_t  length,
uint8_t  cn 
)
pure virtual

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

Implemented in USBMIDI_Interface, BluetoothMIDI_Interface, MultiMIDI_Interface< N >, StreamMIDI_Interface, and StreamDebugMIDI_Interface.

◆ sendImpl() [4/4]

virtual void MIDI_Interface::sendImpl ( uint8_t  rt,
uint8_t  cn 
)
pure virtual

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

Implemented in USBMIDI_Interface, BluetoothMIDI_Interface, StreamMIDI_Interface, MultiMIDI_Interface< N >, and StreamDebugMIDI_Interface.

Member Data Documentation

◆ DefaultMIDI_Interface

MIDI_Interface * MIDI_Interface::DefaultMIDI_Interface = nullptr
staticprivate

Definition at line 182 of file MIDI_Interface.hpp.


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