diff --git a/trunk/fluidsynth/src/drivers/fluid_winmidi.c b/trunk/fluidsynth/src/drivers/fluid_winmidi.c index 419196e..3282af5 100644 --- a/trunk/fluidsynth/src/drivers/fluid_winmidi.c +++ b/trunk/fluidsynth/src/drivers/fluid_winmidi.c @@ -293,12 +293,15 @@ fluid_winmidi_callback(HMIDIIN hmi, UINT wMsg, DWORD_PTR dwInstance, event.type = msg_type(msg_param); event.channel = msg_chan(msg_param); - if (event.type != PITCH_BEND) { - event.param1 = msg_p1(msg_param); - event.param2 = msg_p2(msg_param); - } else { /* Pitch bend is a 14 bit value */ + if (event.type == MIDI_SYSEX) + break; /* Ignore system common / system real-time messages */ + else if (event.type == PITCH_BEND) { + /* Pitch bend is a 14 bit value */ event.param1 = (msg_p2 (msg_param) << 7) | msg_p1 (msg_param); event.param2 = 0; + } else { + event.param1 = msg_p1(msg_param); + event.param2 = msg_p2(msg_param); } (*dev->driver.handler)(dev->driver.data, &event);