Skip to content

Commit

Permalink
Fix invalid MIDI Program Change decoding (LMMS#5154)
Browse files Browse the repository at this point in the history
  • Loading branch information
artur-twardowski authored and PhysSong committed Aug 26, 2019
1 parent cadcc7c commit b511883
Show file tree
Hide file tree
Showing 2 changed files with 10 additions and 6 deletions.
10 changes: 5 additions & 5 deletions src/core/midi/MidiAlsaSeq.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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 ),
Expand All @@ -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:
Expand Down
6 changes: 5 additions & 1 deletion src/core/midi/MidiClient.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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] );
Expand Down

0 comments on commit b511883

Please sign in to comment.