diff options
author | Robin Gareus <robin@gareus.org> | 2016-11-28 12:53:20 +0100 |
---|---|---|
committer | Robin Gareus <robin@gareus.org> | 2016-11-28 12:53:20 +0100 |
commit | 7b687d08a19a74af3b84ec310150be7576c9ee9d (patch) | |
tree | e5682054351f26339c45dde4bd00d48981cfdb38 /libs/plugins/a-fluidsynth.lv2 | |
parent | bf15e93cdedd7a2fb1342183d7977afe97b7bcdb (diff) |
properly handle FS pitch-bend - closes #7140
Diffstat (limited to 'libs/plugins/a-fluidsynth.lv2')
-rw-r--r-- | libs/plugins/a-fluidsynth.lv2/a-fluidsynth.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/libs/plugins/a-fluidsynth.lv2/a-fluidsynth.c b/libs/plugins/a-fluidsynth.lv2/a-fluidsynth.c index 4fc53a6d22..9a83a029a7 100644 --- a/libs/plugins/a-fluidsynth.lv2/a-fluidsynth.c +++ b/libs/plugins/a-fluidsynth.lv2/a-fluidsynth.c @@ -446,8 +446,14 @@ run (LV2_Handle instance, uint32_t n_samples) fluid_midi_event_set_key (self->fmidi_event, data[1]); } if (ev->body.size > 2) { - fluid_midi_event_set_value (self->fmidi_event, data[2]); + if (0xe0 /*PITCH_BEND*/ == fluid_midi_event_get_type (self->fmidi_event)) { + fluid_midi_event_set_value (self->fmidi_event, 0); + fluid_midi_event_set_pitch (self->fmidi_event, ((data[2] & 0x7f) << 7) | (data[1] & 0x7f)); + } else { + fluid_midi_event_set_value (self->fmidi_event, data[2]); + } } + fluid_synth_handle_midi_event (self->synth, self->fmidi_event); } } |