30 template <u
int8_t BufferSize = 120>
36 for (uint8_t i = 0; i < BufferSize; i++)
50 if (midimsg.
data[5] != 0x12)
53 const uint8_t midiOffset = midimsg.
data[6];
54 const uint8_t midiLength = midimsg.
length - 8;
55 const uint8_t *text = midimsg.
data + 7;
56 const uint8_t midiBufferEnd = midiOffset + midiLength;
58 const uint8_t bufferEnd = this->
offset + BufferSize;
61 if (midiOffset >= bufferEnd || this->
offset >= midiBufferEnd)
64 uint8_t srcStart =
max(0, this->
offset - midiOffset);
65 uint8_t dstStart =
max(0, midiOffset - this->
offset);
66 uint8_t length = midiBufferEnd - midiOffset -
68 max(0, midiBufferEnd - bufferEnd);
74 DEBUGVAL(this->
offset, midiOffset, BufferSize, midiLength, srcStart,
78 memcpy(&
buffer[dstStart], &text[srcStart], length);
80 for (uint8_t i = 0; i < length; ++i) {
81 buffer[dstStart + i] = text[srcStart + i];
82 assert(dstStart + i < BufferSize);
83 assert(srcStart + i < midiLength);