feat: SF3 conversion + SpessaSynth client player
Server:
- soundfont_converter.py: Python SF2->SF3 via ffmpeg Ogg compression
- batch_convert_all runs on startup (daemon thread)
- GET /soundfonts/download/{sf_id} serves SF3 with SF2 fallback
- Dockerfile: add fluidsynth, vorbis-tools
Client:
- soundfontStorage.js: IndexedDB cache for SF3 buffers
- soundfontPlayer.js: dual-mode (SpessaSynth + oscillator fallback)
- app.jsx: init SpessaSynth, loadSF on instrument select
- index.html: SpessaSynth CDN import + storage script tag
Compression: DSK 11M->1.1M (90%), SGM 529M->18M (97%)
This commit is contained in:
@@ -10,9 +10,15 @@
|
||||
<script src="https://unpkg.com/lucide@latest"></script>
|
||||
<script src="https://unpkg.com/react@18.3.1/umd/react.production.min.js"></script>
|
||||
<script src="https://unpkg.com/react-dom@18.3.1/umd/react-dom.production.min.js"></script>
|
||||
<script type="module">
|
||||
import { Synthesizer } from 'https://cdn.jsdelivr.net/npm/spessasynth_lib@latest/dist/spessasynth_lib.js';
|
||||
window.SpessaSynthClass = Synthesizer;
|
||||
console.log('[SonicSF] SpessaSynth library loaded.');
|
||||
</script>
|
||||
<script src="/static/js/services/api.js?v=202607232105"></script>
|
||||
<script src="/static/js/services/audioEngine.js?v=202607232105"></script>
|
||||
<script src="/static/js/services/storage.js?v=202607232105"></script>
|
||||
<script src="/static/js/services/soundfontStorage.js?v=202607232105"></script>
|
||||
<script src="/static/js/services/soundfontPlayer.js?v=202607232105"></script>
|
||||
<script src="/static/js/services/aiGateway.js?v=202607232105"></script>
|
||||
<script src="/static/js/services/dawCommandDispatcher.js?v=202607232105"></script>
|
||||
|
||||
Reference in New Issue
Block a user