fix: stopNote sends noteOff(ch,pitch,0) + controllerChange(CC64=0) for safety

This commit is contained in:
2026-07-27 11:17:36 +07:00
parent 90ff65f31d
commit e866ad1c0d
+4 -7
View File
@@ -163,14 +163,11 @@
stopNote: function (channel, pitch) {
if (channel < 0 || channel > 15) return;
console.log("[SonicSF] stopNote ch=" + channel + " pitch=" + pitch + " init=" + _initialized);
if (_initialized && _synthInstance) {
try { _synthInstance.noteOff(channel, pitch); } catch (e) {
console.warn("[SonicSF] noteOff threw:", e);
}
} else {
// Oscillator fallback: stop is handled by the 60000ms timeout
// Nothing to do — oscillator auto-stops after durationMs
try { _synthInstance.noteOff(channel, pitch); } catch (e) {}
try { _synthInstance.controllerChange(channel, 64, 0); } catch (e) {}
// Also send noteOff with velocity=0 for safety
try { _synthInstance.noteOff(channel, pitch, 0); } catch (e) {}
}
},