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:
@@ -305,14 +305,13 @@
|
|||||||
stopNote: function (channel, pitch) {
|
stopNote: function (channel, pitch) {
|
||||||
if (channel < 0 || channel > 15) return;
|
if (channel < 0 || channel > 15) return;
|
||||||
if (_initialized && _fluidModule) {
|
if (_initialized && _fluidModule) {
|
||||||
console.log("[SonicSF] stopNote ch:", channel, "pitch:", pitch);
|
|
||||||
try {
|
try {
|
||||||
var r = _fluidModule._fluid_synth_noteoff(_synthPtr, channel, pitch);
|
var r1 = _fluidModule._fluid_synth_noteoff(_synthPtr, channel, pitch);
|
||||||
if (r !== 0) console.warn("[SonicSF] noteoff returned:", r);
|
var r2 = _fluidModule._fluid_synth_noteon(_synthPtr, channel, pitch, 0);
|
||||||
} catch (e) { console.warn("[SonicSF] noteoff error:", e); }
|
if (r1 !== 0 && r2 !== 0) {
|
||||||
try {
|
console.warn("[SonicSF] noteoff/non failed ch:", channel, "pitch:", pitch, "r:", r1, r2);
|
||||||
_fluidModule._fluid_synth_all_sounds_off(_synthPtr, channel);
|
}
|
||||||
} catch (e) {}
|
} catch (e) { console.warn("[SonicSF] stopNote error:", e); }
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user