Commit Graph

69 Commits

Author SHA1 Message Date
3dtours ef1238b87d feat: migrate SpessaSynth → FluidSynth WASM (SF3 native, loop Gen 54 fix)
Replace SpessaSynth JS/AudioWorklet with FluidSynth C++ WASM
(@enikey87/fluidsynth-emscripten@0.1.1). CDN for dev, self-host
for prod. Fixes stuck Tremolo/Saxophone notes via compliant
Gen 44 loop mode processing. 100% audio parity with server
pyfluidsynth render (same C++ core).

- soundfontPlayer.js: FluidSynth WASM engine, preserve SonicSF API
- fluidsynthLoader.js: auto-select CDN (dev) vs self-host (prod)
- fluidsynth-bridge.js: PCM bridge AudioWorklet processor
- index.html: remove SpessaSynth importmap + module, add loader
- vendor/: libfluidsynth-2.3.0-sf3.js + .wasm (1.8MB self-host)
2026-07-27 12:48:30 +07:00
3dtours 18d2503cb9 fix: bypass SpessaSynth AudioWorklet MIDI pipeline for looped voice release
SpessaSynth 4.3.1 bug: looped voices (Tremolo Strings, Trumpet) ignore
release envelope + CC 120 when processed through MIDI message pipeline
(processMessage). Fix: send stopAll directly to worklet via
handleMessage post() bypass, plus noteOn(vel=0) as alternate note-off.
2026-07-27 12:27:51 +07:00
3dtours 981a184176 chore: bump cache version to force browser refresh 2026-07-27 10:18:34 +07:00
3dtours 4064b90874 chore: bump JS cache version to force browser refresh 2026-07-26 19:47:50 +07:00
3dtours 6a2522d039 fix: correct importmap path for spessasynth_core main entry 2026-07-26 18:56:26 +07:00
3dtours 263c4be409 fix: use importmap to resolve spessasynth_core bare import
- Add importmap in index.html to map spessasynth_core to CDN URL
- Load spessasynth_lib from CDN directly (with importmap resolving deps)
- WorkerSynthesizer fallback also uses CDN import
- Ensures library and processor use same spessasynth_core version
2026-07-26 18:55:08 +07:00
3dtours 4d42b8407c fix: serve SpessaSynth processor locally to avoid CDN version mismatch
- Download spessasynth_processor.min.js from CDN, serve as static file
- Change __SpessaSynthCDN to /static/js/services/
- Fix version mismatch between esm.sh library and CDN processor
2026-07-26 18:47:32 +07:00
3dtours 09def59cac fix: use esm.sh CDN to resolve spessasynth_core bare import
- jdelivr raw index.js has bare import 'spessasynth_core' which browser can't resolve
- esm.sh automatically rewrites bare imports to full URLs
- Keep jdelivr for worklet processor (self-contained, no imports)
- WorkerSynthesizer fallback also uses esm.sh
2026-07-26 18:09:12 +07:00
3dtours 0271be4484 fix: SpessaSynth CDN URL + AudioWorklet init flow
- Fix CDN URL: spessasynth_lib@4.3.1/dist/index.js (was @latest with wrong path)
- Use WorkletSynthesizer instead of Synthesizer (correct class name)
- Add audioWorklet.addModule() for processor CDN URL
- Await synth.isReady before use
- Use soundBankManager.addSoundBank() (correct API)
- Fallback to WorkerSynthesizer if AudioWorklet fails
2026-07-26 18:05:44 +07:00
3dtours e51b7fd355 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%)
2026-07-26 17:51:37 +07:00
3dtours 17a284ad17 feat: bổ sung phần section-item và section tab 2026-07-24 17:00:22 +07:00
3dtours 6a17e7036c fix: nhãn của soundfont hiển thị sai và không load được instrument 2026-07-23 22:32:19 +07:00
3dtours 1a28ebabee fix: piano roll và main session play 2026-07-23 21:05:26 +07:00
3dtours f0210dd019 fix: main session có thể play midi item 2026-07-23 20:52:50 +07:00
3dtours dac661e6c6 fix: piano roll tab có thể play với soundfont 2026-07-23 20:34:52 +07:00
3dtours a21266736c fix: synth để gắn soundfont cho midi 2026-07-23 19:26:26 +07:00
3dtours 055f351a17 fix: sửa lỗi cho AI thực hiện tạo MIDI 2026-07-23 18:19:12 +07:00
3dtours 225f23516f feat: thêm soundfont và VSTi cho MIDI 2026-07-23 17:47:46 +07:00
3dtours b460d40824 fix: lỗi ghi note midi vào track 2026-07-23 16:07:40 +07:00
3dtours 92877d02b7 feat: bổ sung phần record MIDI 2026-07-23 11:01:22 +07:00
3dtours 022fbb3351 fix: đã sửa lỗi AI gửi prompt và thêm các tool để AI thực hiện 2026-07-22 09:23:05 +07:00
3dtours 04403b0af7 fix tạm lỗi cài đặt AI prompt 2026-07-21 21:38:37 +07:00
3dtours ffdb4806f8 fix: zoom in lỗi nền trắng 2026-07-20 22:49:43 +07:00
3dtours 83dc97e788 fix: some bugs 2026-07-20 20:22:48 +07:00
3dtours 98af980a41 fix: double click to edit crash 2026-07-20 20:06:06 +07:00
3dtours f123199855 fix: double click to edit crash 2026-07-20 20:00:58 +07:00
3dtours f616e1fd70 fix: time selection click and shiftclick 2026-07-20 19:45:48 +07:00
3dtours 85a8dc6d17 fix: time selection click and shiftclick 2026-07-20 19:44:23 +07:00
3dtours 271f0583f4 fix: time selection show handles 2026-07-20 16:25:46 +07:00
3dtours 9e936144e1 feat: xử lí track/clip với AI 2026-07-20 15:36:28 +07:00
3dtours 2a44b81cf5 fix: cannot login with default password 2026-07-20 11:50:07 +07:00
3dtours f3f1292aa4 fix: cannot login with default password 2026-07-20 11:30:25 +07:00
3dtours c8ebdb50b0 fix: refactor 2026-07-20 10:39:07 +07:00
3dtours 3c77e98956 fix: hiển thị thời gian trên timeline theo 0.00s 2026-07-19 22:34:46 +07:00
3dtours 7d9267d175 fix: TCP của subtab 2026-07-19 21:58:16 +07:00
3dtours 283555c78e fix: lỗi vẽ volume và panning trên waveform 2026-07-19 21:21:54 +07:00
3dtours 4ca90f15ca fix: vẽ volume graph 2026-07-19 20:20:26 +07:00
3dtours 32fab9d366 fix: apply audio clip từ subtab về lại main session 2026-07-19 17:32:24 +07:00
3dtours b1f9659f06 fix: chỉnh sửa tốc độ của audio clip realtime chính xác 2026-07-19 17:27:06 +07:00
3dtours b39bfbc1bc fix: chỉnh sửa tốc độ của audio clip realtime 2026-07-19 17:11:16 +07:00
3dtours e1b6f47ad0 fix: chỉnh sửa hiển thị của audio clip trong subtab 2026-07-19 16:56:17 +07:00
3dtours 2894fae19b fix: chỉnh sửa giao diện của main session 2026-07-19 16:25:30 +07:00
3dtours 4744b2c485 fix: subtab là một phần ui của main session 2026-07-19 15:29:59 +07:00
3dtours dce104221d fix: bố cục lại UI/button với float panel 2026-07-19 12:51:24 +07:00
3dtours 60dce0135e fix: bố cục lại UI với float panel 2026-07-19 12:46:46 +07:00
3dtours 66b0811f55 fix: passthrough công cụ từ main sang sub 2026-07-19 11:32:48 +07:00
3dtours da923a7a79 fix: passthrough công cụ từ main sang sub 2026-07-19 11:30:30 +07:00
3dtours acee68e8f5 fix&feat: hiển thị tools chỉnh sửa audioclip 2026-07-19 10:21:57 +07:00
3dtours 95dc9346ef fix&feat: hiển thị tools chỉnh sửa audioclip 2026-07-19 10:19:25 +07:00
3dtours 615e0e8530 fix&feat: 12_SUBTAB.md chỉnh sửa audioclip 2026-07-19 08:47:11 +07:00