debug: add bank count log in noteOn, SpessaSynth play tries then falls back

This commit is contained in:
2026-07-26 20:00:17 +07:00
parent 3c7a002b2c
commit 6242eba3c8
+12 -7
View File
@@ -208,7 +208,8 @@
},
playNote: function (note, velocity, durationMs, startTime, program, destinationNode, channel, synthEngine) {
// SpessaSynth path: only if bank is loaded
// TEMP: always use oscillator for reliable preview
// SpessaSynth path: only when bank is confirmed loaded
if (_initialized && _synthInstance && _currentSfId) {
if (synthEngine) {
const ch = channel !== undefined ? channel : (synthEngine.soundfont_bank === 128 ? 9 : 0);
@@ -218,10 +219,14 @@
if (channel === undefined) channel = ch;
}
if (channel === undefined) channel = 0;
this._playNoteSpessa(note, velocity, durationMs, channel);
return;
// Try SpessaSynth, fallback to oscillator on error
try {
this._playNoteSpessa(note, velocity, durationMs, channel);
return;
} catch (e) {
console.warn("[SonicSF] SpessaSynth play failed, fallback:", e);
}
}
// Oscillator fallback
this._playNoteOsc(note, velocity, durationMs, startTime, program, destinationNode, channel, synthEngine);
},
@@ -234,10 +239,10 @@
const durSec = durationMs / 1000;
const doNoteOn = () => {
try {
const bl = _synthInstance.soundBankManager?.soundBankList?.length ?? 0;
console.log("[SonicSF] noteOn ch", channel, "pitch", midiPitch, "vel", midiVel, "banks:", bl);
_synthInstance.noteOn(channel, midiPitch, midiVel);
setTimeout(() => {
try { _synthInstance.noteOff(channel, midiPitch); } catch (e) {}
}, durSec * 1000);
setTimeout(() => { try { _synthInstance.noteOff(channel, midiPitch); } catch (e) {} }, durSec * 1000);
} catch (e) {
console.warn("[SonicSF] noteOn failed:", e);
}