Browse Source

Attempt at better recovery from malformed sysex messages in a midi stream.

tags/2021-05-28
jules 12 years ago
parent
commit
14a5fcf410
1 changed files with 17 additions and 5 deletions
  1. +17
    -5
      modules/juce_audio_devices/native/juce_MidiDataConcatenator.h

+ 17
- 5
modules/juce_audio_devices/native/juce_MidiDataConcatenator.h View File

@@ -123,6 +123,14 @@ private:
{
if (pendingBytes > 0 && *d >= 0x80)
{
if (*d == 0xf7)
{
*dest++ = *d++;
++pendingBytes;
--numBytes;
break;
}
if (*d >= 0xfa || *d == 0xf8)
{
callback.handleIncomingMidiMessage (input, MidiMessage (*d, time));
@@ -131,11 +139,15 @@ private:
}
else
{
if (*d == 0xf7)
pendingBytes = 0;
int used = 0;
const MidiMessage m (d, numBytes, used, 0, time);
if (used > 0)
{
*dest++ = *d++;
pendingBytes++;
--numBytes;
callback.handleIncomingMidiMessage (input, m);
numBytes -= used;
d += used;
}
break;
@@ -144,7 +156,7 @@ private:
else
{
*dest++ = *d++;
pendingBytes++;
++pendingBytes;
--numBytes;
}
}


Loading…
Cancel
Save