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);