Fix invalid MIDI Program Change decoding (#5154)

This commit is contained in:
Artur Twardowski
2019-08-26 03:05:59 +02:00
committed by Hyunjin Song
parent 0db83c55a0
commit a631c0c47e
2 changed files with 10 additions and 6 deletions

View File

@@ -563,7 +563,7 @@ void MidiAlsaSeq::run()
case SND_SEQ_EVENT_CONTROLLER:
dest->processInEvent( MidiEvent(
MidiControlChange,
MidiControlChange,
ev->data.control.channel,
ev->data.control.param,
ev->data.control.value, source ),
@@ -572,11 +572,11 @@ void MidiAlsaSeq::run()
case SND_SEQ_EVENT_PGMCHANGE:
dest->processInEvent( MidiEvent(
MidiProgramChange,
MidiProgramChange,
ev->data.control.channel,
ev->data.control.param,
ev->data.control.value, source ),
MidiTime() );
ev->data.control.value, 0,
source ),
MidiTime() );
break;
case SND_SEQ_EVENT_CHANPRESS:

View File

@@ -222,12 +222,16 @@ void MidiClientRaw::parseData( const unsigned char c )
case MidiNoteOff:
case MidiNoteOn:
case MidiKeyPressure:
case MidiProgramChange:
case MidiChannelPressure:
m_midiParseData.m_midiEvent.setKey( m_midiParseData.m_buffer[0] - KeysPerOctave );
m_midiParseData.m_midiEvent.setVelocity( m_midiParseData.m_buffer[1] );
break;
case MidiProgramChange:
m_midiParseData.m_midiEvent.setKey( m_midiParseData.m_buffer[0] );
m_midiParseData.m_midiEvent.setVelocity( m_midiParseData.m_buffer[1] );
break;
case MidiControlChange:
m_midiParseData.m_midiEvent.setControllerNumber( m_midiParseData.m_buffer[0] );
m_midiParseData.m_midiEvent.setControllerValue( m_midiParseData.m_buffer[1] );