diff --git a/app/static/js/services/soundfontPlayer.js b/app/static/js/services/soundfontPlayer.js index 04a6856..b3d0654 100644 --- a/app/static/js/services/soundfontPlayer.js +++ b/app/static/js/services/soundfontPlayer.js @@ -63,17 +63,22 @@ loadSoundFont: async function (sfId) { if (!_initialized || !_synthInstance) return false; if (_currentSfId === sfId) return true; + // Check if already loaded (SpessaSynth can hold multiple banks) + const already = _synthInstance.soundBankManager?.soundBankList?.some(b => b.id === sfId); + if (already) { + _currentSfId = sfId; + return true; + } try { - // Unload previous SoundFont - if (_currentSfId) { - try { _synthInstance.soundBankManager.deleteSoundBank(_currentSfId); } catch (e) {} - } const cache = window.SonicSFStorage; let buf = cache ? await cache.getBuffer(sfId) : null; if (!buf) { const url = "/api/v1/plugins/soundfonts/download/" + encodeURIComponent(sfId) + "?t=" + Date.now(); const resp = await fetch(url); - if (!resp.ok) return false; + if (!resp.ok) { + console.warn("[SonicSF] SoundFont not found on server:", sfId); + return false; + } buf = await resp.arrayBuffer(); if (cache) await cache.saveBuffer(sfId, buf); }