9template <
class Backend>
11 auto pullpacket = [
this](
typename Backend::MIDIUSBPacket_t &packet) {
12 packet = backend.read();
13 return packet[0] != 0x00;
18template <
class Backend>
25template <
class Backend>
30template <
class Backend>
38template <
class Backend>
40 return parser.getChannelMessage();
43template <
class Backend>
46 return parser.getSysCommonMessage();
49template <
class Backend>
51 return parser.getRealTimeMessage();
54template <
class Backend>
56 return parser.getSysExMessage();
62template <
class Backend>
65 sender.sendChannelMessage(msg,
Sender {
this});
66 if (alwaysSendImmediately_)
70template <
class Backend>
73 sender.sendSysCommonMessage(msg,
Sender {
this});
74 if (alwaysSendImmediately_)
78template <
class Backend>
80 sender.sendSysEx(msg,
Sender {
this});
81 if (alwaysSendImmediately_)
85template <
class Backend>
87 sender.sendRealTimeMessage(msg,
Sender {
this});
88 if (alwaysSendImmediately_)
LambdaPuller_< Lambda > LambdaPuller(Lambda &&lambda)
MIDIReadEvent
Values returned by the MIDI reading functions.
#define BEGIN_CS_NAMESPACE
std::enable_if< has_method_begin< T >::value >::type begin_if_possible(T &t)
Calls the begin() method of t if that method exists.
ChannelMessage getChannelMessage() const
Return the received channel voice message.
RealTimeMessage getRealTimeMessage() const
Return the received real-time message.
void sendChannelMessageImpl(ChannelMessage) override
Low-level function for sending a MIDI channel voice message.
void handleStall() override
Call back that should finish any MIDI messages that are in progress, and un-stall the pipe or MIDI so...
void update() override
Read the MIDI interface and call the callback if a message was received.
SysCommonMessage getSysCommonMessage() const
Return the received system common message.
void sendRealTimeImpl(RealTimeMessage) override
Low-level function for sending a MIDI real-time message.
void begin() override
Initialize the MIDI Interface.
void sendSysExImpl(SysExMessage) override
Low-level function for sending a system exclusive MIDI message.
void sendSysCommonImpl(SysCommonMessage) override
Low-level function for sending a MIDI system common message.
MIDIReadEvent read()
Try reading and parsing a single incoming MIDI message.
SysExMessage getSysExMessage() const
Return the received system exclusive message.
static void updateIncoming(MIDIInterface_t *iface)
Read, parse and dispatch incoming MIDI messages on the given interface.
Functor to send USB MIDI packets.
virtual void handleStall()=0
Call back that should finish any MIDI messages that are in progress, and un-stall the pipe or MIDI so...