diff --git a/modules/juce_audio_basics/midi/juce_MidiMessage.cpp b/modules/juce_audio_basics/midi/juce_MidiMessage.cpp index 6f6c37475d..18733a30da 100644 --- a/modules/juce_audio_basics/midi/juce_MidiMessage.cpp +++ b/modules/juce_audio_basics/midi/juce_MidiMessage.cpp @@ -152,7 +152,8 @@ MidiMessage::MidiMessage (const MidiMessage& other, const double newTimeStamp) } } -MidiMessage::MidiMessage (const void* srcData, int sz, int& numBytesUsed, const uint8 lastStatusByte, double t) +MidiMessage::MidiMessage (const void* srcData, int sz, int& numBytesUsed, const uint8 lastStatusByte, + double t, bool sysexHasEmbeddedLength) : timeStamp (t) { const uint8* src = static_cast (srcData); @@ -175,7 +176,7 @@ MidiMessage::MidiMessage (const void* srcData, int sz, int& numBytesUsed, const if (byte == 0xf0) { const uint8* d = src; - bool haveReadAllLengthBytes = false; + bool haveReadAllLengthBytes = ! sysexHasEmbeddedLength; int numVariableLengthSysexBytes = 0; while (d < src + sz) diff --git a/modules/juce_audio_basics/midi/juce_MidiMessage.h b/modules/juce_audio_basics/midi/juce_MidiMessage.h index 4694c550f1..9002aa0336 100644 --- a/modules/juce_audio_basics/midi/juce_MidiMessage.h +++ b/modules/juce_audio_basics/midi/juce_MidiMessage.h @@ -82,10 +82,14 @@ public: has in fact been dropped. @param timeStamp the time to give the midi message - this value doesn't use any particular units, so will be application-specific + @param sysexHasEmbeddedLength when reading sysexes, this flag indicates whether + to expect the data to begin with a variable-length field + indicating its size */ MidiMessage (const void* data, int maxBytesToUse, int& numBytesUsed, uint8 lastStatusByte, - double timeStamp = 0); + double timeStamp = 0, + bool sysexHasEmbeddedLength = true); /** Creates an active-sense message. Since the MidiMessage has to contain a valid message, this default constructor @@ -94,10 +98,10 @@ public: MidiMessage() noexcept; /** Creates a copy of another midi message. */ - MidiMessage (const MidiMessage& other); + MidiMessage (const MidiMessage&); /** Creates a copy of another midi message, with a different timestamp. */ - MidiMessage (const MidiMessage& other, double newTimeStamp); + MidiMessage (const MidiMessage&, double newTimeStamp); /** Destructor. */ ~MidiMessage(); @@ -106,8 +110,8 @@ public: MidiMessage& operator= (const MidiMessage& other); #if JUCE_COMPILER_SUPPORTS_MOVE_SEMANTICS - MidiMessage (MidiMessage&& other) noexcept; - MidiMessage& operator= (MidiMessage&& other) noexcept; + MidiMessage (MidiMessage&&) noexcept; + MidiMessage& operator= (MidiMessage&&) noexcept; #endif //==============================================================================