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