26 template <u
int8_t BufferSize = 120>
32 for (uint8_t i = 0; i < BufferSize; i++)
46 if (midimsg.
data[5] != 0x12)
49 const uint8_t midiOffset = midimsg.
data[6];
50 const uint8_t midiLength = midimsg.
length - 8;
51 const uint8_t *text = midimsg.
data + 7;
52 const uint8_t midiBufferEnd = midiOffset + midiLength;
54 const uint8_t bufferEnd = this->
offset + BufferSize;
57 if (midiOffset >= bufferEnd || this->
offset >= midiBufferEnd)
60 uint8_t srcStart =
max(0, this->
offset - midiOffset);
61 uint8_t dstStart =
max(0, midiOffset - this->
offset);
62 uint8_t length = midiBufferEnd - midiOffset -
64 max(0, midiBufferEnd - bufferEnd);
70 DEBUGVAL(this->
offset, midiOffset, BufferSize, midiLength, srcStart,
74 memcpy(&
buffer[dstStart], &text[srcStart], length);
76 for (uint8_t i = 0; i < length; ++i) {
77 buffer[dstStart + i] = text[srcStart + i];
78 assert(dstStart + i < BufferSize);
79 assert(srcStart + i < midiLength);