32 template<
unsigned BufferSize>
38 template<
unsigned BufferSize>
46 template<
unsigned BufferSize>
53 template<
unsigned BufferSize>
57 return mRxBuffer.getLength();
60 template<
unsigned BufferSize>
63 return mRxBuffer.read();
66 template<
unsigned BufferSize>
69 mTxBuffer.write(inData);
70 recomposeAndSendTxPackets();
75 template<
unsigned BufferSize>
78 bool received =
false;
79 midiEventPacket_t packet = MidiUSB.
read();
80 while (packet.header != 0)
84 switch (packet.header << 4)
92 mRxBuffer.write(packet.byte1);
93 mRxBuffer.write(packet.byte2);
94 mRxBuffer.write(packet.byte3);
100 mRxBuffer.write(packet.byte1);
101 mRxBuffer.write(packet.byte2);
112 mRxBuffer.write(packet.byte1);
126 packet = MidiUSB.read();
131 template<
unsigned BufferSize>
134 while (!mTxBuffer.isEmpty())
137 if (mCurrentTxPacketByteIndex == 0)
139 mCurrentTxPacket.mPacket.header = encodePacketHeader(data);
143 mCurrentTxPacket.mDataArray[mCurrentTxPacketByteIndex] = data;
145 mCurrentTxPacketByteIndex++;
147 const int packetLength = getPacketLength(mCurrentTxPacket.mPacket);
149 if (mCurrentTxPacketByteIndex == packetLength)
151 MidiUSB.write(mCurrentTxPacket.mDataArray, packetLength);
157 template<
unsigned BufferSize>
160 mCurrentTxPacket.mPacket.header = 0;
161 mCurrentTxPacket.mPacket.byte1 = 0;
162 mCurrentTxPacket.mPacket.byte2 = 0;
163 mCurrentTxPacket.mPacket.byte3 = 0;
164 mCurrentTxPacketByteIndex = 0;
167 template<
unsigned BufferSize>
171 return inStatusByte >> 4;
174 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)