Rémi Bernon (@rbernon) commented about dlls/dmsynth/synth.c:
TRACE("(%p, %p, %u, %u, %u)\n", fluid_preset, fluid_synth, chan, key, vel);
+ patch = preset->patch; + patch |= (preset->bank << 8) & 0x007f00; + patch |= (preset->bank << 9) & 0x7f0000; + if (chan == 9) + patch |= 0x80000000; + EnterCriticalSection(&synth->cs);
- find_region(synth, preset->bank, preset->patch, key, vel, &instrument, ®ion); - if (!region && preset->bank == 128) - find_region(synth, preset->bank, 0, key, vel, &instrument, ®ion); + find_region(synth, patch, key, vel, &instrument, ®ion); + if (!region && chan == 9) + find_region(synth, patch & 0x80000000, key, vel, &instrument, ®ion);
What about avoiding the chan == 9 duplication? ```suggestion:-2+0 find_region(synth, patch, key, vel, &instrument, ®ion); if (!region && (patch & 0x80000000)) find_region(synth, 0x80000000, key, vel, &instrument, ®ion); ``` Or maybe even move this logic to find_region? -- https://gitlab.winehq.org/wine/wine/-/merge_requests/9446#note_121794