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 | Protected Attributes | Private Member Functions | Static Private Member Functions | Private Attributes | Static Private Attributes | List of all members
SerialDebugMIDI_Interface< T > Class Template Reference

A wrapper class for debug MIDI interfaces sending and receiving human-readable MIDI messages over a Serial port of class T. More...

#include <DebugMIDI_Interface.hpp>

Inheritance diagram for SerialDebugMIDI_Interface< T >:
Collaboration diagram for SerialDebugMIDI_Interface< T >:

Public Member Functions

 SerialDebugMIDI_Interface (T &serial, unsigned long baud=defaultBaudRate)
 Construct a new Debug MIDI Interface on the given Serial interface with the given baud rate. More...
 
void begin () override
 Start the Serial interface at the predefined baud rate. More...
 
MIDI_read_t read () override
 
MIDI_ParsergetParser ()
 
ChannelMessage getChannelMessage ()
 Return the received channel message. More...
 
SysExMessage getSysExMessage () const
 Return the received system exclusive message. More...
 
uint8_t getCN () const
 Return the cable number of the received message. 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 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...
 

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...
 
bool dispatchMIDIEvent (MIDI_read_t event)
 

Protected Attributes

SerialMIDI_Parser parser
 
Stream & stream
 

Private Member Functions

void onRealtimeMessage (uint8_t message)
 
void onChannelMessage ()
 
void onSysExMessage ()
 

Static Private Member Functions

static uint8_t hexCharToNibble (char hex)
 Convert a hexadecimal character to a 4-bit nibble. More...
 

Private Attributes

T & serial
 
const unsigned long baud
 
char firstChar = '\0'
 
char secondChar = '\0'
 
MIDI_Callbackscallbacks = nullptr
 

Static Private Attributes

static MIDI_InterfaceDefaultMIDI_Interface = nullptr
 

Detailed Description

template<typename T>
class SerialDebugMIDI_Interface< T >

A wrapper class for debug MIDI interfaces sending and receiving human-readable MIDI messages over a Serial port of class T.

Note
This is a template class because the class of the Serial object is completely different on different architectures, and they do not share a common super-class that has a begin method.

Definition at line 59 of file DebugMIDI_Interface.hpp.

Constructor & Destructor Documentation

◆ SerialDebugMIDI_Interface()

template<typename T>
SerialDebugMIDI_Interface< T >::SerialDebugMIDI_Interface ( T &  serial,
unsigned long  baud = defaultBaudRate 
)
inline

Construct a new Debug MIDI Interface on the given Serial interface with the given baud rate.

Parameters
serialThe Serial interface.
baudThe baud rate for the Serial interface.

Definition at line 70 of file DebugMIDI_Interface.hpp.

Member Function Documentation

◆ begin()

template<typename T>
void SerialDebugMIDI_Interface< T >::begin ( )
inlineoverridevirtual

Start the Serial interface at the predefined baud rate.

Reimplemented from MIDI_Interface.

Definition at line 75 of file DebugMIDI_Interface.hpp.

◆ read()

MIDI_read_t StreamDebugMIDI_Interface::read ( )
overridevirtualinherited
Todo:
Documentation

Implements Parsing_MIDI_Interface.

Definition at line 40 of file DebugMIDI_Interface.cpp.

◆ sendImpl() [1/4]

void StreamDebugMIDI_Interface::sendImpl ( uint8_t  m,
uint8_t  c,
uint8_t  d1,
uint8_t  d2,
uint8_t  cn 
)
overrideprotectedvirtualinherited

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

Implements MIDI_Interface.

Definition at line 77 of file DebugMIDI_Interface.cpp.

◆ sendImpl() [2/4]

void StreamDebugMIDI_Interface::sendImpl ( uint8_t  m,
uint8_t  c,
uint8_t  d1,
uint8_t  cn 
)
overrideprotectedvirtualinherited

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

Implements MIDI_Interface.

Definition at line 88 of file DebugMIDI_Interface.cpp.

◆ sendImpl() [3/4]

void StreamDebugMIDI_Interface::sendImpl ( const uint8_t *  data,
size_t  length,
uint8_t  cn 
)
overrideprotectedvirtualinherited

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

Implements MIDI_Interface.

Definition at line 99 of file DebugMIDI_Interface.cpp.

◆ sendImpl() [4/4]

void StreamDebugMIDI_Interface::sendImpl ( uint8_t  rt,
uint8_t  cn 
)
overrideprotectedvirtualinherited

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

Implements MIDI_Interface.

Definition at line 108 of file DebugMIDI_Interface.cpp.

◆ hexCharToNibble()

static uint8_t StreamDebugMIDI_Interface::hexCharToNibble ( char  hex)
inlinestaticprivateinherited

Convert a hexadecimal character to a 4-bit nibble.

Definition at line 43 of file DebugMIDI_Interface.hpp.

◆ getParser()

MIDI_Parser& Parsing_MIDI_Interface::getParser ( )
inlineinherited

Definition at line 201 of file MIDI_Interface.hpp.

◆ getChannelMessage()

ChannelMessage Parsing_MIDI_Interface::getChannelMessage ( )
inherited

Return the received channel message.

Definition at line 120 of file MIDI_Interface.cpp.

◆ getSysExMessage()

SysExMessage Parsing_MIDI_Interface::getSysExMessage ( ) const
inherited

Return the received system exclusive message.

Examples
SysEx-Send-Receive.ino.

Definition at line 124 of file MIDI_Interface.cpp.

◆ getCN()

uint8_t Parsing_MIDI_Interface::getCN ( ) const
inherited

Return the cable number of the received message.

Definition at line 128 of file MIDI_Interface.cpp.

◆ update()

void Parsing_MIDI_Interface::update ( )
overridevirtualinherited

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

Implements MIDI_Interface.

Examples
SysEx-Send-Receive.ino.

Definition at line 132 of file MIDI_Interface.cpp.

◆ setCallbacks() [1/4]

void Parsing_MIDI_Interface::setCallbacks ( MIDI_Callbacks cb)
inlineoverridevirtualinherited

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.

Examples
SysEx-Send-Receive.ino.

Definition at line 220 of file MIDI_Interface.hpp.

◆ setCallbacks() [2/4]

virtual void MIDI_Interface::setCallbacks
inherited

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]

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

◆ 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.

◆ dispatchMIDIEvent()

bool Parsing_MIDI_Interface::dispatchMIDIEvent ( MIDI_read_t  event)
protectedinherited

Definition at line 143 of file MIDI_Interface.cpp.

◆ onRealtimeMessage()

void Parsing_MIDI_Interface::onRealtimeMessage ( uint8_t  message)
privateinherited

Definition at line 154 of file MIDI_Interface.cpp.

◆ onChannelMessage()

void Parsing_MIDI_Interface::onChannelMessage ( )
privateinherited

Definition at line 159 of file MIDI_Interface.cpp.

◆ onSysExMessage()

void Parsing_MIDI_Interface::onSysExMessage ( )
privateinherited

Definition at line 164 of file MIDI_Interface.cpp.

◆ 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.

Member Data Documentation

◆ serial

template<typename T>
T& SerialDebugMIDI_Interface< T >::serial
private

Definition at line 78 of file DebugMIDI_Interface.hpp.

◆ baud

template<typename T>
const unsigned long SerialDebugMIDI_Interface< T >::baud
private

Definition at line 79 of file DebugMIDI_Interface.hpp.

◆ firstChar

char StreamDebugMIDI_Interface::firstChar = '\0'
privateinherited

Definition at line 37 of file DebugMIDI_Interface.hpp.

◆ secondChar

char StreamDebugMIDI_Interface::secondChar = '\0'
privateinherited

Definition at line 38 of file DebugMIDI_Interface.hpp.

◆ parser

SerialMIDI_Parser StreamMIDI_Interface::parser
protectedinherited

Definition at line 39 of file SerialMIDI_Interface.hpp.

◆ stream

Stream& StreamMIDI_Interface::stream
protectedinherited

Definition at line 70 of file SerialMIDI_Interface.hpp.

◆ callbacks

MIDI_Callbacks* Parsing_MIDI_Interface::callbacks = nullptr
privateinherited

Definition at line 240 of file MIDI_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: