33 template<
unsigned BufferSize>
39 template<
unsigned BufferSize>
47 template<
unsigned BufferSize>
54 template<
unsigned BufferSize>
58 return mRxBuffer.getLength();
61 template<
unsigned BufferSize>
64 return mRxBuffer.read();
67 template<
unsigned BufferSize>
70 mTxBuffer.write(inData);
71 recomposeAndSendTxPackets();
76 template<
unsigned BufferSize>
79 bool received =
false;
80 midiEventPacket_t packet = MidiUSB.
read();
81 while (packet.header != 0)
85 switch (packet.header << 4)
93 mRxBuffer.write(packet.byte1);
94 mRxBuffer.write(packet.byte2);
95 mRxBuffer.write(packet.byte3);
101 mRxBuffer.write(packet.byte1);
102 mRxBuffer.write(packet.byte2);
113 mRxBuffer.write(packet.byte1);
127 packet = MidiUSB.read();
132 template<
unsigned BufferSize>
135 while (!mTxBuffer.isEmpty())
138 if (mCurrentTxPacketByteIndex == 0)
140 mCurrentTxPacket.mPacket.header = encodePacketHeader(data);
144 mCurrentTxPacket.mDataArray[mCurrentTxPacketByteIndex] = data;
146 mCurrentTxPacketByteIndex++;
148 const int packetLength = getPacketLength(mCurrentTxPacket.mPacket);
150 if (mCurrentTxPacketByteIndex == packetLength)
152 MidiUSB.write(mCurrentTxPacket.mDataArray, packetLength);
158 template<
unsigned BufferSize>
161 mCurrentTxPacket.mPacket.header = 0;
162 mCurrentTxPacket.mPacket.byte1 = 0;
163 mCurrentTxPacket.mPacket.byte2 = 0;
164 mCurrentTxPacket.mPacket.byte3 = 0;
165 mCurrentTxPacketByteIndex = 0;
168 template<
unsigned BufferSize>
172 return inStatusByte >> 4;
175 template<
unsigned BufferSize>
System Real Time - Timing Clock.
#define BEGIN_MIDI_NAMESPACE
#define END_MIDI_NAMESPACE
Channel (monophonic) AfterTouch.
System Real Time - Continue.
System Real Time - Start.
Control Change / Channel Mode.
System Common - Tune Request.
System Real Time - Active Sensing.
System Real Time - System Reset.
void begin(unsigned inBaudrate)