18template <class Backend>
24 template <
class... Args>
26 : backend(std::forward<Args>(args)...),
27 alwaysSendImmediately_(backend.preferImmediateSend()) {}
38 void handleStall()
override;
41 void begin()
override;
42 void update()
override;
76 uint8_t d1, uint8_t d2) {
77 uint8_t cn_cin = (cn.
getRaw() << 4) | uint8_t(cin);
78 iface->
backend.write({cn_cin, d0, d1, d2});
89 bool alwaysSendImmediately_ =
true;
118#if defined(TEENSYDUINO) && !defined(TEENSY_MIDIUSB_ENABLED)
120 "Teensy: USB MIDI not enabled. Enable it from the Tools > USB Type menu."
121#define CS_USB_MIDI_DISABLED
125#if (!defined(CS_USB_MIDI_NOT_SUPPORTED) && !defined(CS_USB_MIDI_DISABLED)) || \
158#elif !defined(CS_USB_MIDI_DISABLED)
MIDIReadEvent
Values returned by the MIDI reading functions.
MIDICodeIndexNumber
MIDI USB Code Index Numbers.
#define BEGIN_CS_NAMESPACE
#define AH_DIAGNOSTIC_POP()
#define AH_DIAGNOSTIC_WERROR()
A type-safe class for MIDI USB Cable numbers.
constexpr uint8_t getRaw() const
Get the cable as an integer.
A class for MIDI interfaces sending MIDI messages over a USB MIDI connection.
void alwaysSendImmediately()
Send the USB packets immediately after sending a MIDI message.
void neverSendImmediately()
Don't send the USB packets immediately after sending a MIDI message.
USBMIDI_Sender sender
Sends USB MIDI messages.
void sendNowImpl() override
Low-level function for sending any buffered outgoing MIDI messages.
USBMIDI_Parser parser
Parses USB packets into MIDI messages.
Backend backend
The (platform-specific) backend used for MIDI over USB communication.
bool alwaysSendsImmediately() const
Check if this USB interface always sends its USB packets immediately after sending a MIDI message.
GenericUSBMIDI_Interface(Args &&...args)
Construct a new GenericUSBMIDI_Interface.
An abstract class for MIDI interfaces.
A class for MIDI interfaces sending MIDI messages over a USB MIDI connection.
USBMIDI_Interface()=default
Parser for MIDI over USB packets.
A class for sending MIDI USB messages.
A class for MIDI interfaces sending and receiving MIDI messages over the Serial port of the USB conne...
Functor to send USB MIDI packets.
void operator()(Cable cn, MIDICodeIndexNumber cin, uint8_t d0, uint8_t d1, uint8_t d2)
GenericUSBMIDI_Interface * iface
AH::Array< uint8_t, 4 > MIDIUSBPacket_t