locpham
36fb546d58
fix: SF2 sound (audio sink FIFO underrun) + VST3 native GUI open + GUI load race
...
- bridgeAudioNode: ScriptProcessor 4096 drained only 1 of 16 blocks -> ~94% silence; now drains all queued blocks per callback, RING_DEPTH 8->24
- app.jsx: openNativeGUI had NO caller; wire after VST3 loadInstrument OK in track Synth dropdown + Plugin Manager Load Bridge
- main.cpp: OPEN_GUI polls up to 10s for LOAD completion (worker thread) before attach - fixes race 'no instrument loaded'
- index.html: bump bridgeAudioNode/app.precompiled cache versions
2026-08-12 22:32:10 +07:00
admin
d8f8506077
fix: GUI VST native window qua bridge + audio path bridge (SF2 preview/play câm)
...
- open_vst_gui: bo WebviewWindowBuilder/thread, chi push_control type=4 (hwnd=0 -> bridge tao window)
- main.cpp: create_native_vst_window (class SonicForge_Native_VST3_Class, 800x600, khong TOPMOST),
tao trong ChannelWorker job, map guiWindows, capture arg2 by value (fix dangling)
- app.jsx: guard isBridgeActive() 8 cho -> bridge active thi moi note di router -> pushEvent -> bridge
(truoc day SF2 cam vi HAS_PYFLUIDSYNTH=FALSE -> /soundfont-render 501; VST3 path cu dung nativeSf/Carla)
- E2E: SF2 NOTE_ON qua dispatchMidiEvent -> SHM peak 0.029745; Nexus GUI native hwnd OK (license/preset)
- docs: TASKS.md + TEST_NOTES.md ghi batch fix + ket qua; gitignore vendor/junk
2026-08-12 22:12:43 +07:00
locpham
c3368d0a91
feat: native host bridge integration — C++ bridge, Rust SHM, JS routing, build scripts, docs
...
- native_bridge/: InstrumentEngineManager multi-channel, sample-accurate, CC/program/pitchbend, transport, Vst3Instrument stub (HAVE_VST3SDK)
- src-tauri: shm.rs, bridge spawn + audio pump + health monitor, open_vst_gui, externalBin, commands
- app: UnifiedMidiRouter, NativeBridgeService, bridgeAudioNode, audioRoutingEngine, Plugin Manager UI, Bridge/WASM indicator, set_position sync
- build: 3 ps1 (force-added, build/ ignored), verify_bundle --check-bridge, CI workflow
- docs: TASKS.md, TEST_NOTES.md (Windows verify checklist), install/report updates
2026-08-11 23:37:29 +07:00
3dtours
aa1cd8d5de
fix: 3 bug standalone — soundfont preview/play, Carla bridge play item, realtime sync LAN/Tauri
...
Bug1: dispatcher CREATE_MIDI_ITEM track_id number vs state string -> String(); play+preview native soundfont verified.
Bug2: Carla play item — chờ OSC ready (poll carla-status, queue nốt khi cold start), chống spawn trùng (carla-status dò port bind, open-in-carla skip khi đã chạy).
Bug3: realtime sync — GET /temp/revision (updated_at+client_id), poll 3s, apply qua deserializeProjectFromSchema; hash-skip autosave + client_id chống ping-pong.
2026-08-10 22:10:12 +07:00
3dtours
a0d8725541
feat: tách luồng âm instrument theo môi trường — docker dùng FluidSynthWASM, standalone dùng native pyfluidsynth (+Carla VSTi)
...
- runtime: detect()/capabilities() trả environment (docker|standalone)
- vst_engine: render_soundfont_midi_to_audio (pyfluidsynth native, event-stream, release tail)
- plugins: POST /soundfont-render — render MIDI notes -> WAV (auth, fallback default SF)
- frontend: SonicRuntime.environment + dataset.environment; app.jsx route preview/transport:
standalone+SF -> soundfont-render WAV (playNativeSfNote/scheduleNativeSfItem),
docker giữ WASM, VSTi standalone giữ Carla bridge
2026-08-10 20:38:54 +07:00
3dtours
61cb4b846f
FIX: 11 bugs bảo mật/ổn định (static mount chặn dotfile, delete traversal, cleanup giữ clips serverFileId, upload whitelist, password strength, auth audio endpoints, pedalboard==0.9.19, vendor CDN local) + FEATURE: Carla bridge preview/export MIDI notes âm VSTi (POST /midi-render, /carla-play-notes, nút Preview VSTi/Export MIDI->Audio; pedalboard 0.9.19 raw MIDI bytes; SONICFORGE_STORAGE_DIR cô lập test storage)
2026-08-10 18:46:54 +07:00
3dtours
75eba27dcf
FIX: (1) masteringConnected default true + ensureMasteringRouting/refreshCarlaStatus ở mọi đường play — MIDI item/preview qua mastering ngay khi chạy app; (2) _instrumentEpoch chống cache stale + retry bank 0 — hết chọn Synth String nghe Piano; (3) /carla-status + auto-open Carla + route exclusive chỉ khi Carla sống (fallback FluidSynth tránh câm); (4) keybed giữ note theo thời gian bấm (auto-off 5s phòng hờ, mouseup dừng ngay)
2026-08-10 09:51:58 +00:00
3dtours
f492104869
FIX: (1) MIDI item route CHỈ qua Carla bridge khi VSTi loaded (bỏ FluidSynth GM sai âm) ở mọi đường playback + ghosts; (2) updateSfRouting sync route gains nhánh gainNode + ensureMasteringRouting force-sync mọi node — preview MIDI keyboard qua mastering không cần bật/tắt power; (3) stopNote/panic dừng fallback oscillator theo channel:pitch — hết âm kêu liên tục sau khi thả phím
2026-08-10 09:07:42 +00:00
3dtours
c08233a163
FIX: 6 lỗi âm thanh/Carla/temp-save/Ctrl-S/FX Chain Carla bridge
...
- Soundfont preview: hủy note đang chờ load soundfont (stopNote/stopAll/panic) — hết âm loop không dừng với MIDI Keyboard; preview dùng channel riêng (applyAITrackInstrument) — hết sai instrument
- Carla bridge: endpoint /carla-stop (all-notes-off OSC + terminate process) + stopBridge() khi track chuyển VSTi -> soundfont — hết âm play qua Carla cũ
- MIDI items play qua Carla khi VSTi loaded: scheduleCarlaNote route vào startTrackPlayback + startLocalTrackPlayback + ghost notes
- Tự động lưu temp khi tắt app: beforeunload/pagehide sendBeacon + autosave 30s + ghi storage/temp/autosave.json + khôi phục khi load lại
- Ctrl-S: desktop -> save-to-disk (Documents/SonicForgeDAW/Projects); docker -> Cloud/local
- FX Chain (Mastering + FX Rack): module Carla Bridge (VST FX) — load/openInCarla + stop/unload, pass-through trong graph
2026-08-10 05:34:32 +00:00
3dtours
1cf5b18492
FIX: sửa lỗi không load soundfont trên window, MIDI item không play được qua carla
2026-08-10 10:50:02 +07:00
3dtours
1db892bb99
FIX: sửa lỗi không load instrument của soundfont trên window
2026-08-10 10:04:54 +07:00
3dtours
aa32272f36
FIX: Carla sử dụng bridge
2026-08-10 07:57:26 +07:00
3dtours
cc8b286f6c
feat: native folder picker (Explorer) + Synth liet ke VSTi da scan + fix VU leak (ban 1.1.4)
...
1) Folder picker dung WINDOW EXPLORER (khong prompt nhap tay):
- src-tauri/src/lib.rs: IPC bridge — thread watcher ipc/pick_dir.request
-> run_on_main_thread -> dialog().file().blocking_pick_folder()
(tauri-plugin-dialog = IFileDialog/Explorer) -> ghi pick_dir.response;
ghi marker tauri_bridge_ready luc setup.
- app/api/v1/plugins.py: POST /pick-dir (def sync -> threadpool, khong
auth) — uu tien Tauri bridge, fallback PowerShell FolderBrowserDialog
(Win) / osascript (macOS) / zenity-kdialog (Linux).
- app.jsx pickPluginFolder: 1) pickPluginDir (native) -> 2) __TAURI__
invoke -> 3) in-app browser -> 4) prompt (cuoi cung).
2) Nut Synth liet ke VSTi da scan (truoc day rong):
- Root: list_available() chi quet settings.VST_DIR (mac dinh
/opt/daw_engine/vst3) trong khi Plugin Manager scan plugin_dirs user.
- plugins.py list_plugins: gop _scan_vst_in_dirs(plugin_dirs) (file
.vst3/.dll/.so + folder X.vst3 Windows).
- vst_engine.py: PluginManager.extra_vst_dirs + _scan_plugins quet them
(ca folder .vst3) + get_plugin_manager doc plugin_dirs.json -> load_vst
tim thay plugin user scan khi render.
3) VU meter leak: section-tab play -> sang MAIN SESSION -> track MAIN van
animate theo am section.
- Root: VU tick fallback _sub_ (sub-node section co analyser) chay cho
ca canvas MAIN; startSubTabPlayback ghi node o key track MAIN.
- Fix: fallback _sub_ chi ap dung cho canvas SECTION (isSessVu); 2 trigger
piano-roll them prefix _sess_ theo st.parent_tab_id.
Verify: 86 tests pass; engine frozen STARTUP 1.35s, 1 engine, 0 spawn '-c';
pick-dir IPC mock tra dung path; scan VST user dirs OK.
2026-08-09 13:05:53 +00:00
3dtours
5ae4fd6149
fix: Plugin Manager '+ Add Directory' khong hien folder picker (ban 1.1.3)
...
Nguyen nhan: UI that chay tren http://127.0.0.1:8000 (engine) nen
window.__TAURI__ KHONG ton tai (Tauri chi inject vao trang no serve -
src-tauri/ui/index.html chi la loader redirect). Fallback window.prompt
KHONG hoat dong trong WebView2 (no-op) -> khong co picker nao xuat hien.
Fix: in-app folder browser qua backend (co san /media/computer +
/media/browse trong media.py, auth qua apiRequest):
- services/api.js: them browseComputer() + browseDir(path)
- app.jsx PluginManagerModal: state pmPicker + overlay UI (roots/drives
-> dirs -> 'Len' (parent) -> 'Chon thu muc nay' -> setPmDirs)
- Thu tu uu tien: __TAURI__.core.invoke('plugin:dialog|open') -> in-app
browser -> prompt (fallback cuoi, browser thuan khong phai WebView2)
- Bump ?v= cache-bust index.html (api.js + app.precompiled.js)
Verify tren engine frozen: /media/computer tra roots, /media/browse tra
{path, parent, dirs} - dir picker flow OK. Skill da ghi lai:
~/.hermes/skills/software-development/sonicforge-daw-engine-packaging
2026-08-09 11:55:16 +00:00
3dtours
8dd00cc2ea
FEAT: Plugin Manager folder picker + scan dirs (Windows/macOS), docker .env paths, status bar adaptive tips, DSP Tool vao sub-tab audioclip
...
- Plugins Manager (Tools menu): Browse folder (Tauri dialog + fallback paste path), Save & Scan VST/SoundFont dirs -> plugin_dirs.json (user override, env la base)
- Docker: VST_DIR/SOUNDFONT_DIR/PIANOBK_DIR tu .env/docker-compose mount vao container + env cho engine/celery
- Status bar: bo label 'Scroll: Zoom' -> Adaptive tips (prHint + fallback text)
- DSP Tool: move vao SUB-TAB editor audioclip (Phase Inv / Swap L/R / Reverse + apply vung chon/ca clip)
- Tauri: them tauri-plugin-dialog + dialog:default permission cho folder picker
2026-08-09 02:44:29 +00:00
3dtours
4f34491f3e
FIX: sửa lỗi hiển thị animation của VU meter khi play MIDI
2026-08-07 15:57:49 +07:00
3dtours
454dd91f96
FIX: Đã fix cross-machine (v202608060700)
2026-08-05 22:02:43 +07:00
3dtours
b3ced7a7b3
FIX: Clone AI Var kế thừa midiChannel của track gốc → 2 track DÙNG CHUNG channel
2026-08-05 15:49:44 +07:00
3dtours
4233c1eeda
FIX: Piano roll track 4 phát âm thanh instrument track 3
2026-08-05 15:17:13 +07:00
3dtours
d37f4e7557
FIX: Piano roll tab không xuất âm thanh qua mastering chain được recovery
2026-08-05 12:30:42 +07:00
3dtours
55d3464b1e
FIX: Piano roll tab không xuất âm thanh qua mastering chain
2026-08-05 12:10:50 +07:00
3dtours
856a8183b6
FIX: lỗi mở MIDI item ở trong PIANO ROLL TAB là bị lỗi âm thanh của main session
2026-08-04 22:07:48 +07:00
3dtours
0272912cff
FIX: khi click vào track number thì bị mất âm thanh, cho phép lưu màu của track
2026-08-04 16:43:44 +07:00
3dtours
c047934fc4
IMPROVE: cài đặt thêm tool để có thể phối lại cho đoạn midi item hoặc viết thêm cho nó
2026-08-04 15:23:11 +07:00
3dtours
e5b4321a55
FEAT: thêm FX RACK PANEL cho track, áp dụng cho midi item và audioclip item
2026-08-03 20:25:27 +07:00
3dtours
a9da813cb1
FEAT: thêm nút bypass cho track strip để bypass không qua mastering panel
2026-08-03 15:47:10 +07:00
3dtours
6018263044
fix: Lỗi không có âm thanh - quay lại ScriptProcessor vĩnh viễn (worklet push-model bị nghẽn main thread -> câm)
2026-08-03 12:13:26 +07:00
3dtours
36edc9daca
fix: bật AudioWorklet hết deprecation ScriptProcessor + signature guard applyMasteringSettings hết BiquadFilterNode state is bad
2026-08-03 12:11:11 +07:00
3dtours
71278f2aba
fix: mất soundfont khi ARM - clamp tham số master chain chặn NaN làm biquad state bad, toggleMasteringOnMaster idempotent, loadSoundFont retry khi lỗi thoáng qua
2026-08-03 11:44:13 +07:00
3dtours
71c3bafdb5
fix: không có âm thanh khi play MIDI item - quay lại ScriptProcessor làm renderer mặc định (worklet gây lỗi thiết bị), giữ worklet mono-safe + cache-busting
2026-08-03 11:24:59 +07:00
3dtours
34ad02dd6b
fix: crash AudioWorklet khi output mono - xử lý mọi số channel trong fluidsynth-bridge + ép stereo outputChannelCount=2
2026-08-03 11:20:30 +07:00
3dtours
47b1633bd3
fix: ReferenceError assignTrackMidiChannel - chuyển allocator channel lên module-level cho PianoRollTabEditor + bật AudioWorklet thay ScriptProcessor
2026-08-03 11:17:19 +07:00
3dtours
9b6de7f857
fix: sfload reset_presets=0 giữ nguyên instrument các track khác; preloadTrackInstruments module-level (sửa ReferenceError reload); truyền props cho ProfileModal; lọc warning No preset found channel 9
2026-08-03 11:00:08 +07:00
3dtours
25471e6ea5
fix: lag khi ARM sau reload + câm sau vài lần nhấn MIDI - dedup loadSoundFont (1 font=1 sfload, tránh cạn heap 256MB) + preload instrument khi mở/khôi phục dự án
2026-08-03 10:43:26 +07:00
3dtours
0dc95386f2
fix: ARM nhiều track phát sai instrument - synth_engine của track là nguồn quyết định thay vì channel state (bỏ che mask khi channel giữ instrument cũ/trùng)
2026-08-03 10:33:40 +07:00
3dtours
d8227904b6
fix: MIDI ARM không phát âm thanh sau khi load instrument - lazy-load soundfont trong playNote + giữ channel khi selectInstrument truyền channel tường minh
2026-08-03 10:23:32 +07:00
3dtours
73025fc387
fix: instrument SF3/Sonatina không phát âm thanh - chuyển SF3->SF2, bỏ convert SF2->SF3, sửa converter
2026-08-02 21:44:49 +07:00
3dtours
7e5f406226
fix: crackling - time-based render buffer, no voice stacking, lower synth gain/verbose
2026-07-31 10:52:22 +07:00
3dtours
ad5cda5a40
fix: reduce MIDI playback crackling (no per-note prog reload, underrun-proof render loop, gentle stopAll)
2026-07-31 10:49:31 +07:00
3dtours
223254eb07
feat: per-MIDI-item focus brightness in piano roll
2026-07-31 09:59:14 +07:00
3dtours
eb370319cb
feat: piano roll shows all same-track MIDI items notes as active
2026-07-31 09:46:55 +07:00
3dtours
1790f743d6
fix: add 400ms decay to MIDI noteoff for natural release
2026-07-31 08:26:06 +07:00
3dtours
9c487614f1
feat: auto-save 5min + backup 30min + backup management UI
...
- project_backups table + DB migration
- Backup CRUD API endpoints with auto cleanup (5-20 retention)
- setInterval 5min save + 30min backup in browser
- ProfileModal: backup list, delete, retention slider, cleanup button
2026-07-30 20:48:45 +07:00
3dtours
58a294d845
IMPROVE: cho phép lưu dự án và phục hồi dự án vừa tắt
2026-07-30 20:47:44 +07:00
3dtours
64f43cd5ad
IMPROVE: cho phép thay đổi instrument realtime khi đang playback
2026-07-30 17:32:57 +07:00
3dtours
a9be38b76f
IMPROVE: hướng dẫn AI tạo nhạc đầy đủ số bars và tracks theo yêu cầu
2026-07-30 16:39:28 +07:00
3dtours
6e1f116658
FIX: sửa MASTERING PANEL có tác dụng với mainout
2026-07-30 11:06:31 +07:00
3dtours
2c55db372a
FIX: sửa volume main out
2026-07-30 10:05:11 +07:00
3dtours
d4ad3bc1f7
feat: add comprehensive Ctrl-Z/Ctrl-Y undo/redo engine for MAIN SESSION and SECTION-TAB
2026-07-29 16:05:43 +07:00
3dtours
cff3950670
feat: AI Copilot suggestion chips + typeahead dropdown
...
- Suggestion chips bar: context-aware (amber for rearrange, indigo for creation)
- Typeahead dropdown: keyword matching on ≥2 chars, Tab to select
- getSelectedMidiItemInfo helper for context detection
- Backend: 4 rearrange presets in ai_presets.py
- PromptTemplateManager: getContextualSuggestions(hasSelectedItem)
2026-07-28 11:20:26 +07:00