diff --git a/app/static/js/services/soundfontPlayer.js b/app/static/js/services/soundfontPlayer.js index e236623..08812bb 100644 --- a/app/static/js/services/soundfontPlayer.js +++ b/app/static/js/services/soundfontPlayer.js @@ -239,12 +239,15 @@ } else { channel = _engineChMap[engKey]; } - try { - _fluidModule._fluid_synth_bank_select(_synthPtr, channel, bank); - } catch (e) {} - try { - _fluidModule._fluid_synth_program_change(_synthPtr, channel, program); - } catch (e) {} + var sfHandle = _sfHandleMap.get(sfId); + if (sfHandle !== undefined) { + try { + _fluidModule._fluid_synth_program_select(_synthPtr, channel, sfHandle, bank, program); + } catch (e) {} + } else { + try { _fluidModule._fluid_synth_bank_select(_synthPtr, channel, bank); } catch (e) {} + try { _fluidModule._fluid_synth_program_change(_synthPtr, channel, program); } catch (e) {} + } _channels[channel].bank = bank; _channels[channel].program = program; _channels[channel].isPercussion = (bank === 128); @@ -368,12 +371,15 @@ ch = usedBank === 128 ? 9 : 0; } if (ch === undefined) ch = (usedBank === 128 ? 9 : 0); - try { - _fluidModule._fluid_synth_bank_select(_synthPtr, ch, usedBank); - } catch (e) {} - try { - _fluidModule._fluid_synth_program_change(_synthPtr, ch, usedProg); - } catch (e) {} + var sfHandle = synthEngine.soundfont_id ? _sfHandleMap.get(synthEngine.soundfont_id) : undefined; + if (sfHandle !== undefined) { + try { + _fluidModule._fluid_synth_program_select(_synthPtr, ch, sfHandle, usedBank, usedProg); + } catch (e) {} + } else { + try { _fluidModule._fluid_synth_bank_select(_synthPtr, ch, usedBank); } catch (e) {} + try { _fluidModule._fluid_synth_program_change(_synthPtr, ch, usedProg); } catch (e) {} + } } else if (program !== undefined) { usedProg = program; if (ch === undefined) ch = 0;