Make start_touch() truly idempotent
[ardour.git] / libs / ardour / fluid_synth.cc
index 333738766a642e067cff52b7ccc134a82909f3ca..45653a9e7046ca813c136c93428014edc4efe05f 100644 (file)
@@ -135,7 +135,12 @@ FluidSynth::midi_event (uint8_t const* const data, size_t len)
                fluid_midi_event_set_key (_f_midi_event, data[1]);
        }
        if (len > 2) {
-               fluid_midi_event_set_value (_f_midi_event, data[2]);
+               if (0xe0 /*PITCH_BEND*/ == fluid_midi_event_get_type (_f_midi_event)) {
+                       fluid_midi_event_set_value (_f_midi_event, 0);
+                       fluid_midi_event_set_pitch (_f_midi_event, ((data[2] & 0x7f) << 7) | (data[1] & 0x7f));
+               } else {
+                       fluid_midi_event_set_value (_f_midi_event, data[2]);
+               }
        }
        return FLUID_OK == fluid_synth_handle_midi_event (_synth, _f_midi_event);
 }