fix: stopNote dùng noteoff+noteon(vel0) thay vì all_sounds_off

- Bỏ _fluid_synth_all_sounds_off (kill cả chord)
- Thử noteoff + noteon(vel=0) - MIDI noteOff alternate
- Log cả 2 return code
This commit is contained in:
2026-07-27 15:27:53 +07:00
parent d9ad60768e
commit 00566e8ea6
+6 -7
View File
@@ -305,14 +305,13 @@
stopNote: function (channel, pitch) {
if (channel < 0 || channel > 15) return;
if (_initialized && _fluidModule) {
console.log("[SonicSF] stopNote ch:", channel, "pitch:", pitch);
try {
var r = _fluidModule._fluid_synth_noteoff(_synthPtr, channel, pitch);
if (r !== 0) console.warn("[SonicSF] noteoff returned:", r);
} catch (e) { console.warn("[SonicSF] noteoff error:", e); }
try {
_fluidModule._fluid_synth_all_sounds_off(_synthPtr, channel);
} catch (e) {}
var r1 = _fluidModule._fluid_synth_noteoff(_synthPtr, channel, pitch);
var r2 = _fluidModule._fluid_synth_noteon(_synthPtr, channel, pitch, 0);
if (r1 !== 0 && r2 !== 0) {
console.warn("[SonicSF] noteoff/non failed ch:", channel, "pitch:", pitch, "r:", r1, r2);
}
} catch (e) { console.warn("[SonicSF] stopNote error:", e); }
}
},