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
USBSerialMIDI_Interface Class Reference

A class for MIDI interfaces sending and receiving MIDI messages over the Serial port of the USB connection. More...

#include <MIDI_Interfaces/SerialMIDI_Interface.hpp>

Inheritance diagram for USBSerialMIDI_Interface:
Collaboration diagram for USBSerialMIDI_Interface:

Public Member Functions

 USBSerialMIDI_Interface (unsigned long baud)
 Construct a USBSerialMIDI_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

decltype(Serial) & serial
 
const unsigned long baud
 
MIDI_Callbackscallbacks = nullptr
 

Static Private Attributes

static MIDI_InterfaceDefaultMIDI_Interface = nullptr
 

Detailed Description

A class for MIDI interfaces sending and receiving MIDI messages over the Serial port of the USB connection.

Definition at line 137 of file SerialMIDI_Interface.hpp.

Constructor & Destructor Documentation

◆ USBSerialMIDI_Interface()

USBSerialMIDI_Interface ( unsigned long  baud)
inline

Construct a USBSerialMIDI_Interface with the given baud rate.

Parameters
baudThe baud rate to start the USB Serial connection with.

Definition at line 145 of file SerialMIDI_Interface.hpp.

Member Function Documentation

◆ begin()

void begin ( )
inlineoverridevirtualinherited

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

decltype(Serial) & serial
privateinherited

Definition at line 104 of file SerialMIDI_Interface.hpp.

◆ baud

const unsigned long baud
privateinherited

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: