#include <MIDI_Interfaces/USBMIDI_Sender.hpp>
A class for sending MIDI USB messages.
Includes support for chunked MIDI USB SysEx messages.
Definition at line 12 of file USBMIDI_Sender.hpp.
Public Member Functions | |
template<class Send > | |
void | sendChannelMessage (ChannelMessage, Send &&send) |
Send a MIDI Channel message using the given sender. | |
template<class Send > | |
void | sendSysCommonMessage (SysCommonMessage, Send &&send) |
Send a MIDI System Common message using the given sender. | |
template<class Send > | |
void | sendRealTimeMessage (RealTimeMessage, Send &&send) |
Send a MIDI Real-Time message using the given sender. | |
template<class Send > | |
void | sendSysEx (SysExMessage, Send &&send) |
Send a MIDI System Exclusive message using the given sender. | |
template<class Send > | |
void | sendFullSysEx (SysExMessage, Send &&send) |
Send a MIDI System Exclusive message using the given sender. | |
Private Types | |
using | CIN = MIDICodeIndexNumber |
Private Member Functions | |
template<class Send > | |
void | sendSysExStartCont1 (const uint8_t *data, Cable cable, Send &send) |
Send a single SysEx starts or continues USB packet. | |
template<class Send > | |
void | sendSysExStartCont (const uint8_t *&data, uint16_t &length, Cable cable, Send &send) |
Send as many SysEx starts or continues USB packets, such that the remaining length is 3, 2 or 1 byte. | |
template<class Send > | |
void | sendSysExEnd (const uint8_t *data, uint16_t length, Cable cable, Send &send) |
Send a SysExEnd USB packet. | |
Private Attributes | |
uint8_t | storedSysExData [16][3] |
Stores remainder of outgoing SysEx chunks. | |
uint8_t | storedSysExLength [16] = {} |
Number of remaining SysEx bytes stored. | |
|
private |
Definition at line 70 of file USBMIDI_Sender.hpp.
void sendChannelMessage | ( | ChannelMessage | msg, |
Send && | send ) |
Send a MIDI Channel message using the given sender.
Definition at line 74 of file USBMIDI_Sender.hpp.
void sendSysCommonMessage | ( | SysCommonMessage | msg, |
Send && | send ) |
Send a MIDI System Common message using the given sender.
Definition at line 82 of file USBMIDI_Sender.hpp.
void sendRealTimeMessage | ( | RealTimeMessage | msg, |
Send && | send ) |
Send a MIDI Real-Time message using the given sender.
Definition at line 99 of file USBMIDI_Sender.hpp.
void sendSysEx | ( | SysExMessage | msg, |
Send && | send ) |
Send a MIDI System Exclusive message using the given sender.
Message may be chunked, remaining bytes are stored until next chunk is sent.
Definition at line 153 of file USBMIDI_Sender.hpp.
void sendFullSysEx | ( | SysExMessage | msg, |
Send && | send ) |
Send a MIDI System Exclusive message using the given sender.
Message should be complete, i.e. from SysEx Start to SysEx End.
Definition at line 106 of file USBMIDI_Sender.hpp.
|
private |
Send a single SysEx starts or continues USB packet.
Exactly 3 bytes are sent. The data
pointer is not incremented.
Definition at line 126 of file USBMIDI_Sender.hpp.
|
private |
Send as many SysEx starts or continues USB packets, such that the remaining length is 3, 2 or 1 byte.
The data
pointer is incremented, and the length
is decremented. The reason for leaving 3, 2 or 1 bytes remaining is so the message can be finished using a SysExEnd USB packet, which has to have 3, 2 or 1 bytes.
Definition at line 132 of file USBMIDI_Sender.hpp.
|
private |
Send a SysExEnd USB packet.
The length
should be either 3, 2 or 1 bytes, and the last byte of data
should be a SysExEnd byte.
Definition at line 142 of file USBMIDI_Sender.hpp.
|
private |
Stores remainder of outgoing SysEx chunks.
Each USB packet (except the last one) should contain a multiple of 3 SysEx bytes. If the SysEx chunk size is not a multiple of 3, there will be remaining bytes that can't be sent yet, until the next chunk arrives. See the comments in the USBMIDI_Sender::sendSysEx() implementation for more details.
Definition at line 64 of file USBMIDI_Sender.hpp.
|
private |
Number of remaining SysEx bytes stored.
Definition at line 66 of file USBMIDI_Sender.hpp.