feat: cache soundfont MP3s in OPFS and add cache controls

This commit is contained in:
Xiaohan-Tian
2026-07-02 14:11:25 -07:00
parent 4f11fe8e25
commit 86ec455dfe
10 changed files with 1040 additions and 55 deletions
+10
View File
@@ -97,6 +97,16 @@ export const enUsMessages: TranslationMessages = {
'settings.general.soundfont.managed': 'Soundfont configuration is managed by the server (kgone-server.json). Settings are read-only.',
'settings.general.soundfont.baseUrl': 'Base URL',
'settings.general.soundfont.baseUrlHelp': 'Changing this URL to an incompatible soundfont source may cause some instruments to sound wrong or not play.',
'settings.general.soundfont.cachedStatus': 'Cached Soundfont Status',
'settings.general.soundfont.cacheChecking': 'Checking soundfont cache...',
'settings.general.soundfont.cacheReady': '{count} instruments cached in browser storage.',
'settings.general.soundfont.cacheEmpty': 'No cached instruments yet.',
'settings.general.soundfont.cacheHelp': 'Cached instruments are stored in browser OPFS and reused for future instrument loads until you change the base URL or delete the cache.',
'settings.general.soundfont.cachedInstrument': 'Cached Instrument',
'settings.general.soundfont.cachedInstrumentHelp': 'Choose a cached instrument to delete only that instruments local soundfont files.',
'settings.general.soundfont.noCachedInstrumentOption': 'No cached instruments',
'settings.general.soundfont.deleteSelectedCache': 'Delete Selected Instrument Cache',
'settings.general.soundfont.deleteCache': 'Delete Soundfont Cache',
'settings.general.kgone.section': 'K.G.One Settings',
'settings.general.kgone.managed': 'K.G.One configuration is managed by the server (kgone-server.json). Settings are read-only.',
'settings.general.kgone.enabled': 'Enable K.G.One Integration',
+10
View File
@@ -94,6 +94,16 @@ export const frFrMessages: TranslationMessages = {
'settings.general.soundfont.managed': 'La configuration des soundfonts est gérée par le serveur (kgone-server.json). Ces réglages sont en lecture seule.',
'settings.general.soundfont.baseUrl': 'URL de base',
'settings.general.soundfont.baseUrlHelp': 'Une source de soundfont incompatible peut provoquer des timbres incorrects ou empêcher certains instruments de jouer.',
'settings.general.soundfont.cachedStatus': 'État du cache des soundfonts',
'settings.general.soundfont.cacheChecking': 'Vérification du cache des soundfonts...',
'settings.general.soundfont.cacheReady': '{count} instruments en cache dans le navigateur.',
'settings.general.soundfont.cacheEmpty': 'Aucun instrument en cache pour le moment.',
'settings.general.soundfont.cacheHelp': 'Les instruments en cache sont stockés dans lOPFS du navigateur et réutilisés lors des prochains chargements jusqu’à un changement dURL de base ou une suppression du cache.',
'settings.general.soundfont.cachedInstrument': 'Instrument en cache',
'settings.general.soundfont.cachedInstrumentHelp': 'Choisissez un instrument en cache pour supprimer uniquement ses fichiers soundfont locaux.',
'settings.general.soundfont.noCachedInstrumentOption': 'Aucun instrument en cache',
'settings.general.soundfont.deleteSelectedCache': 'Supprimer le cache de linstrument sélectionné',
'settings.general.soundfont.deleteCache': 'Supprimer le cache des soundfonts',
'settings.general.kgone.section': 'Réglages K.G.One',
'settings.general.kgone.managed': 'La configuration K.G.One est gérée par le serveur (kgone-server.json). Ces réglages sont en lecture seule.',
'settings.general.kgone.enabled': 'Activer l\'intégration K.G.One',
+10
View File
@@ -95,6 +95,16 @@ export const zhCnMessages: TranslationMessages = {
'settings.general.soundfont.managed': 'Soundfont 配置由服务器(kgone-server.json)管理,当前设置为只读。',
'settings.general.soundfont.baseUrl': '基础 URL',
'settings.general.soundfont.baseUrlHelp': '如果改成不兼容的 soundfont 源,某些乐器可能发声错误或无法播放。',
'settings.general.soundfont.cachedStatus': 'Soundfont 缓存状态',
'settings.general.soundfont.cacheChecking': '正在检查 soundfont 缓存...',
'settings.general.soundfont.cacheReady': '浏览器存储中已缓存 {count} 个乐器。',
'settings.general.soundfont.cacheEmpty': '当前还没有已缓存的乐器。',
'settings.general.soundfont.cacheHelp': '已缓存的乐器会保存在浏览器 OPFS 中,后续加载时会复用;更改基础 URL 或删除缓存后将重新下载。',
'settings.general.soundfont.cachedInstrument': '已缓存乐器',
'settings.general.soundfont.cachedInstrumentHelp': '选择一个已缓存乐器,只删除该乐器的本地 soundfont 文件。',
'settings.general.soundfont.noCachedInstrumentOption': '没有已缓存的乐器',
'settings.general.soundfont.deleteSelectedCache': '删除所选乐器缓存',
'settings.general.soundfont.deleteCache': '删除 Soundfont 缓存',
'settings.general.kgone.section': 'K.G.One 设置',
'settings.general.kgone.managed': 'K.G.One 配置由服务器(kgone-server.json)管理,当前设置为只读。',
'settings.general.kgone.enabled': '启用 K.G.One 集成',
+10
View File
@@ -95,6 +95,16 @@ export const zhHkMessages: TranslationMessages = {
'settings.general.soundfont.managed': 'Soundfont 設定由伺服器(kgone-server.json)管理,目前設定為唯讀。',
'settings.general.soundfont.baseUrl': '基礎 URL',
'settings.general.soundfont.baseUrlHelp': '如果改成不兼容的 soundfont 源,某些樂器可能發聲錯誤或無法播放。',
'settings.general.soundfont.cachedStatus': 'Soundfont 快取狀態',
'settings.general.soundfont.cacheChecking': '正在檢查 soundfont 快取...',
'settings.general.soundfont.cacheReady': '瀏覽器儲存空間中已快取 {count} 個樂器。',
'settings.general.soundfont.cacheEmpty': '目前還沒有已快取的樂器。',
'settings.general.soundfont.cacheHelp': '已快取的樂器會保存在瀏覽器 OPFS 中,後續載入時會重用;更改基礎 URL 或刪除快取後將重新下載。',
'settings.general.soundfont.cachedInstrument': '已快取樂器',
'settings.general.soundfont.cachedInstrumentHelp': '選擇一個已快取樂器,只刪除該樂器的本地 soundfont 檔案。',
'settings.general.soundfont.noCachedInstrumentOption': '沒有已快取的樂器',
'settings.general.soundfont.deleteSelectedCache': '刪除所選樂器快取',
'settings.general.soundfont.deleteCache': '刪除 Soundfont 快取',
'settings.general.kgone.section': 'K.G.One 設定',
'settings.general.kgone.managed': 'K.G.One 設定由伺服器(kgone-server.json)管理,目前設定為唯讀。',
'settings.general.kgone.enabled': '啟用 K.G.One 集成',