Control Surface  1.1.1
MIDI Control Surface library for Arduino
Public Member Functions | Static Public Member Functions | Protected Member Functions | Protected Attributes | Private Member Functions | Private Attributes | Static Private Attributes | List of all members
SerialMIDI_Interface< T > Class Template Reference

A wrapper class for MIDI interfaces sending and receiving MIDI messages over a Serial port of generic class T. More...

#include <MIDI_Interfaces/SerialMIDI_Interface.hpp>

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

Public Member Functions

 SerialMIDI_Interface (T &serial, unsigned long baud=MIDI_BAUD)
 Create a new 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 ()
 

Private Attributes

T & serial
 
const unsigned long baud
 
MIDI_Callbackscallbacks = nullptr
 

Static Private Attributes

static MIDI_InterfaceDefaultMIDI_Interface = nullptr
 

Detailed Description

template<class T>
class SerialMIDI_Interface< T >

A wrapper class for MIDI interfaces sending and receiving MIDI messages over a Serial port of generic class T.

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

Definition at line 84 of file SerialMIDI_Interface.hpp.

Constructor & Destructor Documentation

◆ SerialMIDI_Interface()

SerialMIDI_Interface ( T &  serial,
unsigned long  baud = MIDI_BAUD 
)
inline

Create a new 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 95 of file SerialMIDI_Interface.hpp.

Member Function Documentation

◆ begin()

void begin ( )
inlineoverridevirtual

Start the Serial interface at the predefined baud rate.

Reimplemented from MIDI_Interface.

Definition at line 101 of file SerialMIDI_Interface.hpp.

◆ read()

MIDI_read_t read ( )
inlineoverridevirtualinherited
Todo:
Documentation

Implements Parsing_MIDI_Interface.

Definition at line 28 of file SerialMIDI_Interface.hpp.

◆ sendImpl() [1/4]

void sendImpl ( uint8_t  m,
uint8_t  c,
uint8_t  d1,
uint8_t  d2,
uint8_t  cn 
)
inlineoverrideprotectedvirtualinherited

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

Implements MIDI_Interface.

Definition at line 41 of file SerialMIDI_Interface.hpp.

◆ sendImpl() [2/4]

void sendImpl ( uint8_t  m,
uint8_t  c,
uint8_t  d1,
uint8_t  cn 
)
inlineoverrideprotectedvirtualinherited

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

Implements MIDI_Interface.

Definition at line 50 of file SerialMIDI_Interface.hpp.

◆ sendImpl() [3/4]

void sendImpl ( const uint8_t *  data,
size_t  length,
uint8_t  cn 
)
inlineoverrideprotectedvirtualinherited

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

Implements MIDI_Interface.

Definition at line 57 of file SerialMIDI_Interface.hpp.

◆ sendImpl() [4/4]

void sendImpl ( uint8_t  rt,
uint8_t  cn 
)
inlineoverrideprotectedvirtualinherited

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

Implements MIDI_Interface.

Definition at line 63 of file SerialMIDI_Interface.hpp.

◆ getParser()

MIDI_Parser& getParser ( )
inlineinherited

Definition at line 201 of file MIDI_Interface.hpp.

◆ getChannelMessage()

ChannelMessage getChannelMessage ( )
inherited

Return the received channel message.

Definition at line 120 of file MIDI_Interface.cpp.

◆ getSysExMessage()

SysExMessage 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 getCN ( ) const
inherited

Return the cable number of the received message.

Definition at line 128 of file MIDI_Interface.cpp.

◆ update()

void update ( )
overridevirtualinherited

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

Implements MIDI_Interface.

Examples
Send-MIDI-Notes.ino, and SysEx-Send-Receive.ino.

Definition at line 132 of file MIDI_Interface.cpp.

◆ setCallbacks() [1/4]

void 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 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 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 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 dispatchMIDIEvent ( MIDI_read_t  event)
protectedinherited

Definition at line 143 of file MIDI_Interface.cpp.

◆ onRealtimeMessage()

void onRealtimeMessage ( uint8_t  message)
privateinherited

Definition at line 154 of file MIDI_Interface.cpp.

◆ onChannelMessage()

void onChannelMessage ( )
privateinherited

Definition at line 159 of file MIDI_Interface.cpp.

◆ onSysExMessage()

void onSysExMessage ( )
privateinherited

Definition at line 164 of file MIDI_Interface.cpp.

◆ send() [1/5]

void 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 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 send ( SysExMessage  message)
inherited

Send a MIDI System Exclusive message.

Definition at line 100 of file MIDI_Interface.cpp.

◆ send() [4/5]

void 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 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 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 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 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 sendNoteOn ( MIDICNChannelAddress  address,
uint8_t  velocity 
)
inherited

Send a MIDI Note On event.

Examples
Send-MIDI-Notes.ino.

Definition at line 58 of file MIDI_Interface.cpp.

◆ sendNoteOff()

void sendNoteOff ( MIDICNChannelAddress  address,
uint8_t  velocity 
)
inherited

Send a MIDI Note Off event.

Examples
Send-MIDI-Notes.ino.

Definition at line 64 of file MIDI_Interface.cpp.

◆ sendKP()

void sendKP ( MIDICNChannelAddress  address,
uint8_t  pressure 
)
inherited

Send a MIDI Key Pressure event.

Definition at line 70 of file MIDI_Interface.cpp.

◆ sendCC()

void 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 sendPC ( MIDICNChannelAddress  address)
inherited

Send a MIDI Program Change event.

Definition at line 85 of file MIDI_Interface.cpp.

◆ sendPC() [2/2]

void sendPC ( MIDICNChannel  address,
uint8_t  value 
)
inherited

Send a MIDI Program Change event.

Definition at line 80 of file MIDI_Interface.cpp.

◆ sendCP()

void sendCP ( MIDICNChannel  address,
uint8_t  pressure 
)
inherited

Send a MIDI Channel Pressure event.

Definition at line 90 of file MIDI_Interface.cpp.

◆ sendPB()

void 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 * getDefault ( )
staticinherited

Return the default MIDI interface.

Definition at line 18 of file MIDI_Interface.cpp.

◆ setAsDefault()

void setAsDefault ( )
inherited

Set this MIDI interface as the default interface.

Definition at line 16 of file MIDI_Interface.cpp.

Member Data Documentation

◆ serial

T& serial
private

Definition at line 104 of file SerialMIDI_Interface.hpp.

◆ baud

const unsigned long baud
private

Definition at line 105 of file SerialMIDI_Interface.hpp.

◆ parser

SerialMIDI_Parser parser
protectedinherited

Definition at line 39 of file SerialMIDI_Interface.hpp.

◆ stream

Stream& stream
protectedinherited

Definition at line 70 of file SerialMIDI_Interface.hpp.

◆ callbacks

MIDI_Callbacks* callbacks = nullptr
privateinherited

Definition at line 240 of file MIDI_Interface.hpp.

◆ DefaultMIDI_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: