diff --git a/src/synth/fluid_chan.c b/src/synth/fluid_chan.c index be348be66..1a5d813dc 100644 --- a/src/synth/fluid_chan.c +++ b/src/synth/fluid_chan.c @@ -334,8 +334,7 @@ fluid_channel_set_bank_msb(fluid_channel_t *chan, int bankmsb) return; } - if(style == FLUID_BANK_STYLE_GM || - chan->channel_type == CHANNEL_TYPE_DRUM) + if(style == FLUID_BANK_STYLE_GM ) { return; /* ignored */ } @@ -344,6 +343,10 @@ fluid_channel_set_bank_msb(fluid_channel_t *chan, int bankmsb) if(style == FLUID_BANK_STYLE_GS) { + if(chan->channel_type == CHANNEL_TYPE_DRUM) + { + bankmsb += DRUM_INST_BANK; + } newval = (oldval & ~BANK_MASKVAL) | (bankmsb << BANK_SHIFTVAL); } else /* style == FLUID_BANK_STYLE_MMA */ diff --git a/src/synth/fluid_synth.c b/src/synth/fluid_synth.c index 82cfac4cc..22ef6df74 100644 --- a/src/synth/fluid_synth.c +++ b/src/synth/fluid_synth.c @@ -3109,14 +3109,7 @@ fluid_synth_program_change(fluid_synth_t *synth, int chan, int prognum) channel = synth->channel[chan]; - if(channel->channel_type == CHANNEL_TYPE_DRUM) - { - banknum = DRUM_INST_BANK; - } - else - { - fluid_channel_get_sfont_bank_prog(channel, NULL, &banknum, NULL); - } + fluid_channel_get_sfont_bank_prog(channel, NULL, &banknum, NULL); if(synth->verbose) {