fix: SF2 bank select, midi multi-key cut, VSTi reopen hang, multi-track stuck

- NativeInstrumentEngine: track GM bank per channel (CC0/CC32), use bank in programChange
- app.jsx: send CC0/CC32+PROGRAM before notes via __ensureBridgeProgram, dedupe, clear dedupe after async LOAD
- audioRoutingEngine/bridgeAudioNode: idempotent connect (no disconnect-flush on re-connect), fixes note cut & multi-track stuck
- main.cpp: remove 10s poll in OPEN_GUI control job (blocked realtime loop, watchdog race), VstWindowProc stores channel not inst pointer, cleanup gui maps on WM_DESTROY
This commit is contained in:
2026-08-13 12:19:34 +07:00
parent d168328004
commit 3f59c2c4c2
7 changed files with 136 additions and 50 deletions
@@ -35,6 +35,9 @@ private:
void* settings; // fluid_settings_t*
void* synth; // fluid_synth_t*
int sfontId;
// Per-channel bank select (CC0<<7 | CC32) — programChange phai dung bank
// that (truoc day hardcode bank 0 -> preset o bank != 0 khong chon duoc).
uint32_t bank_[16];
};
// sfizz (.sfz)