diff options
Diffstat (limited to 'libs/ardour')
-rw-r--r-- | libs/ardour/fluid_synth.cc | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/libs/ardour/fluid_synth.cc b/libs/ardour/fluid_synth.cc index 333738766a..45653a9e70 100644 --- a/libs/ardour/fluid_synth.cc +++ b/libs/ardour/fluid_synth.cc @@ -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); } |