fix a-fluidsynth bank select (use MMA style, 14 bit MSB/LSB)
authorRobin Gareus <robin@gareus.org>
Tue, 31 Jan 2017 09:44:07 +0000 (10:44 +0100)
committerRobin Gareus <robin@gareus.org>
Tue, 31 Jan 2017 09:44:07 +0000 (10:44 +0100)
libs/plugins/a-fluidsynth.lv2/a-fluidsynth.cc

index 4637c6be993cd9b5a4ec64637d7caa0932223d19..0fdb01c86e29826bc0f91c549ad6de489f7e1cf5 100644 (file)
@@ -327,6 +327,7 @@ instantiate (const LV2_Descriptor*     descriptor,
        fluid_settings_setnum (self->settings, "synth.sample-rate", rate);
        fluid_settings_setint (self->settings, "synth.parallel-render", 1);
        fluid_settings_setint (self->settings, "synth.threadsafe-api", 0);
+       fluid_settings_setstr (self->settings, "synth.midi-bank-select", "mma");
 
        self->synth = new_fluid_synth (self->settings);
 
@@ -763,9 +764,8 @@ mn_file (LV2_Handle instance)
                pf ("      <PatchBank Name=\"Patch Bank %d\">\n", i->first);
                if (i->second.size() > 0) {
                        pf ("        <MIDICommands>\n");
-                       // this seems wrong (swapped MSB/LSB) but works - double check fluid + ardour.
-                       pf ("            <ControlChange Control=\"0\" Value=\"%d\"/>\n", i->first & 127);
-                       pf ("            <ControlChange Control=\"32\" Value=\"%d\"/>\n", (i->first >> 8) & 127);
+                       pf ("            <ControlChange Control=\"0\" Value=\"%d\"/>\n", (i->first >> 7) & 127);
+                       pf ("            <ControlChange Control=\"32\" Value=\"%d\"/>\n", i->first & 127);
                        pf ("        </MIDICommands>\n");
                        pf ("        <PatchNameList>\n");
                        int n = 0;