From f094ece834904c57cc484032fb34bcc1877e2e8c Mon Sep 17 00:00:00 2001 From: fabien-gigante Date: Tue, 29 Dec 2020 16:56:30 +0100 Subject: [PATCH] Ensure correct message length after parsing After parsing the message length was still zero in multiple cases. Which doesn't allow for instance to use those messages as is with send() --- src/MIDI.hpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/MIDI.hpp b/src/MIDI.hpp index 144e40e8..b0401f9c 100644 --- a/src/MIDI.hpp +++ b/src/MIDI.hpp @@ -844,6 +844,7 @@ bool MidiInterface::parse() mMessage.channel = 0; mMessage.data1 = 0; mMessage.data2 = 0; + mMessage.length = 1; mMessage.valid = true; // Do not reset all input attributes, Running Status must remain unchanged. @@ -859,6 +860,7 @@ bool MidiInterface::parse() case AfterTouchChannel: case TimeCodeQuarterFrame: case SongSelect: + mMessage.length = 2; mPendingMessageExpectedLength = 2; break; @@ -869,6 +871,7 @@ bool MidiInterface::parse() case PitchBend: case AfterTouchPoly: case SongPosition: + mMessage.length = 3; mPendingMessageExpectedLength = 3; break; @@ -900,7 +903,7 @@ bool MidiInterface::parse() mMessage.channel = getChannelFromStatusByte(mPendingMessage[0]); mMessage.data1 = mPendingMessage[1]; mMessage.data2 = 0; // Completed new message has 1 data byte - mMessage.length = 1; + mMessage.length = 2; mPendingMessageIndex = 0; mPendingMessageExpectedLength = 0;