Commit Graph

892 Commits

Author SHA1 Message Date
admin 98574aa0ea fix: ensure all daw_engine exit on app close (abrupt kill + LAN client open)
- desktop_engine: watchdog parent check via WaitForSingleObject(SYNCHRONIZE)
  instead of OpenProcess — killed parents linger as zombie objects, OpenProcess
  succeeds forever and watchdog never fires; hard-exit after 5s if graceful
  shutdown hangs (open LAN connection)
- lib.rs: Destroyed handler sweeps any orphan daw_engine/daw_vst_bridge by
  image name before exit(0), covering manual-launch and stale engines
2026-08-16 21:18:21 +07:00
admin cead8c8c71 fix(vsti): crackle fix P1-P3 — SHM 8-slot ring + drain-delta pump + AudioWorklet sink
- SharedMemoryIPC.h/main.cpp: render into ring slot (idx & ringMask), 8 slots
- shm.rs: ring fields + read_ring_audio; lib.rs pump drains FULL delta, not just latest
- bridgeAudioNode.js: AudioWorklet primary (bridge-audio-sink), ScriptProcessor fallback
- bridgeAudioWorklet.js: ring 64 blocks, underrun fade, overrun drop + crossfade
- layout tests: sizeof 27560 (8-align via u64)
2026-08-16 20:43:50 +07:00
admin ed26e1706d fix(latency): threadpool renders + RENDER_LOCK + client pre-render cache 2026-08-16 20:21:48 +07:00
admin 90b5a63719 Bump frontend cache-buster to 202608141031 2026-08-16 19:11:15 +07:00
3dtours cc0a573ca9 docs: phân tích + hướng fix VSTi play crackle/noise (Linux review) 2026-08-16 18:54:56 +07:00
admin 781425588c fix(standalone): bundle pedalboard.midi_utils + pyfluidsynth dll path
- engine.spec hiddenimports: pedalboard.midi_utils (C++ ExternalPlugin.h
  import dong, PyInstaller khong phat hien duoc -> midi-render 500)
- engine.spec hiddenimports: fluidsynth (pyfluidsynth cffi) cho
  /soundfont-render native
- vst_engine.py: _ensure_fluidsynth_dll_on_path() - frozen app them
  exe_dir vao PATH de ctypes.util.find_library tim thay
  libfluidsynth-3.dll dat ke exe
2026-08-16 18:50:27 +07:00
admin 1d40cf27b7 feat(standalone): native VSTi midi-render cho browser client khi bridge inactive
- playNativeVstNote/scheduleNativeVstItem: render qua /api/v1/plugins/midi-render
  (pedalboard VST3 dung instrument_id/preset) -> play WAV, map token rieng
- Them nhanh nativeVst tai moi diem route nhanh cua: startTrackPlayback,
  section/subtrack, playMidiPreviewNote, piano roll preview (alt-scroll/click/
  brush/draw), keybed, MIDI hardware input
- Safety net trong scheduleMidiNoteDispatch fallthrough (ghost notes va caller khac)
- stopAllNativeVstNotes/stopNativeVstNote di kem cac diem stop hien co
2026-08-16 18:23:53 +07:00
admin b2470e1422 Show server port alongside IP in SERVER label 2026-08-16 17:59:47 +07:00
admin cdbff49ea2 Remove LAN access badge; show server IP in SERVER label 2026-08-16 17:56:55 +07:00
admin cca58c4893 feat(piano-roll): vào tab lúc main play -> chỉ play MIDI notes track đang edit, các track khác mute
useEffect [activeTab] mới: activeTab là PIANO_ROLL và main/section đang play ->
stopAllPlayback + restart play CHỈ track piano roll tại vị trí tương ứng trong
item (mainPos - item.startTime). mainResumeRef giữ để quay lại main/section
resume đúng vị trí (nhánh resume cũ không đổi).
2026-08-16 17:47:31 +07:00
admin e541d16132 merge: docs docker play VSTi (70da711) 2026-08-16 17:28:30 +07:00
admin 7bcaf19c28 feat(vst-gui): open VST3 GUI while playing (level 1)
- main.cpp: drop transportStopped defer in handleOpenGui (G0.1 legacy);
  G0.1b setReloading-before-job + single UiThread (G1.2) block the
  2-thread-1-DLL race. GUI opens immediately during PLAY, short mute
  (~0.1-0.3s first time, hasAttachedOnce_ false so reloadForGUI skips
  reload); notes already sounding are kept. Reopen after close still
  reloads (1-3s mute) - level 2 not feasible.
- app.jsx: remove !isPlayingRef.current guard before openNativeGUI in
  loadTrackInstrumentToBridge.
- rebuild app.precompiled.js + daw_vst_bridge.exe.
2026-08-16 17:27:38 +07:00
3dtours 70da711520 docs: thiết kế kiến trúc docker play VSTi ở client — giữ luồng cũ (VSTi→SF2/SF3 asset) 2026-08-16 17:08:19 +07:00
admin 223023615d fix(media-explorer): bridge preview channel 15 + NOTE_ON timing; synth dropdown portal 2026-08-16 16:58:18 +07:00
admin 574c2f885d fix(media-explorer): preview MIDI qua native bridge FluidSynth thay soundfontRender 501
- playMidiPreview standalone: thay soundfontRender backend (pyfluidsynth khong co
  trong bundle -> 501 -> cam) bang playMediaExplorerBridgePreview: allocate
  channel rieng, bridgeLoad SF2 + loadInstrument, CC0/CC32/PROGRAM, NOTE_ON/OFF
  theo beat, loop timer; bridge down -> fallback WASM
- stopMediaPlayback: NOTE_OFF toan pitch cho channel preview de note khong con
  ngan sau khi stop
2026-08-16 16:42:19 +07:00
admin 56d8c577aa deploy: sonicforge-daw.exe V10 (drag-drop fix build) 2026-08-16 16:23:37 +07:00
admin 045d84bde0 fix: drag-drop MIDI from Explorer on Windows — disable Tauri drag_drop_handler so WebView2 gets HTML5 DnD (Phương án A, FIX_DRAG_DROP_WINDOWS.md) (V10) 2026-08-16 16:20:48 +07:00
admin c29e024372 fix: stale-reload watchdog — force-unmute channel stuck in reloading >20s (60s if close/attach in flight) (V9) 2026-08-16 16:15:41 +07:00
3dtours 4c8677699c docs: đề xuất fix drag-drop MIDI file trên Windows/Tauri 2026-08-16 16:08:07 +07:00
admin b6950d6418 fix: MIDI keyboard preview silent after transport STOP — live flag bypass guard (V8) 2026-08-16 15:43:23 +07:00
admin 2d63774474 rebuild clean from scratch: native bridge + tauri + engine bundle (F6 Cap 2 in deployed engine) 2026-08-16 15:11:10 +07:00
admin 761b48e41f fix 5.2 audit findings on Windows: F-PROC-1 injection, F-MEM-5 UAF, F-PROC-2 restart race, F-PROC-3, F5, F6 2026-08-16 12:29:42 +07:00
3dtours 54b7a7a6ac 5.2: audit security/memory/child-process conflict — F-MEM-5 UAF, F-MEM-8, F-PROC-1 injection, F-PROC-2 restart race, F-PROC-3, F5, F6 (Linux review only) 2026-08-16 12:12:29 +07:00
3dtours 07f0569d81 G2: Linux review + verify — code G2 consistent, no product bugs (F1 double flush minor, F2 SF_STATE_FILE Linux fallback note, F3 cosmetic); StateStore round-trip PASS on Linux g++; report section 5.1 + journal updated 2026-08-16 11:48:51 +07:00
admin 6c19f17b61 deploy: plugin_host.exe idle-skip build 2026-08-16 11:45:02 +07:00
admin 9fa3076359 G4.3 idle-skip + no fixed-tick render: idle CPU ~0, latency 9.8ms 2026-08-16 11:44:56 +07:00
admin 9436e66835 G4.3: double-buffer sandbox SHM - SandboxHostIPC writeSlot+2x256 double audio, latency 15.6ms, multi-instance no-xrun verified 2026-08-16 11:35:31 +07:00
admin 462a5104d2 G4.2: bridge-side plugin process pool — SandboxVst3Host spawns/respawns plugin_host.exe per channel, MIDI forward + audio snapshot + watchdog mute/respawn, crash isolation verified 2026-08-16 10:52:04 +07:00
admin 7de00955d8 G4.1: sandbox plugin host (plugin_host.exe) PoC — Nexus runs in child process, GUI + audio via SHM, crash isolation verified 2026-08-16 10:36:01 +07:00
admin 700f612674 chore: commit G3.2+G3.3 deploy binaries + debug scripts; ignore debug run artifacts 2026-08-16 10:27:36 +07:00
admin d0da12f42b G3: journal — note test helper committed 85273a6 2026-08-16 10:25:19 +07:00
admin 85273a6a7f debug: fix G1.5 stress test wait_log to read log file once per poll (avoids false timeouts on 140k-line log) 2026-08-16 10:23:55 +07:00
admin 40ee80ad60 G3: update task tracking — G3.2/G3.3 done (classify stall + SEH per-channel) 2026-08-16 10:23:46 +07:00
admin 0b8e80fe2c G3.2+G3.3: classify hang/crash vs audio stall + SEH per-channel plugin crash isolation (mute channel) 2026-08-16 10:23:08 +07:00
admin 30fa98a441 G3.1: dedicated bridge heartbeat — watchdog liveness independent of audio loop 2026-08-16 10:04:16 +07:00
admin b59e416566 G2.5+G2.6: stress driver for persistence restart (N loop + kill/respawn) + verify — regression G1.5 5/5, G2.5 5+10 PASS, G0.4 probe PASS 2026-08-16 08:37:27 +07:00
admin d31312e824 G2.2: flush bridge state to disk before kill (control type=5 DUMP + Rust pre-kill) 2026-08-16 07:52:01 +07:00
admin c2ae452844 G2.4: skip redundant LOAD of already-loaded instrument (keep restored preset) 2026-08-16 07:47:53 +07:00
admin 4faa5a3504 G2.3: auto-reload instruments from state file after bridge respawn 2026-08-16 07:33:14 +07:00
admin 28441566c2 G2.1: save full instrument state to disk (path/type/preset/transport) 2026-08-16 07:28:17 +07:00
admin 8d9011222a G2.0: update progress table + journal (20260815-tasks.md) 2026-08-16 07:09:05 +07:00
admin 1fe2d261fd G2.0: StateStore (JSON state file + atomic write) 2026-08-16 07:08:37 +07:00
3dtours af9a285974 G2: ghi ro phan cong may sau tung task - Linux chi plan/review/notes, Windows sua code/build/test/fix + quy trinh 2 may 2026-08-15 22:21:38 +07:00
3dtours 5607ba5440 G2: them ke hoach thuc hien 20260815-tasks.md (phan tich G2.1-G2.6 + estimate + quy trinh Windows) 2026-08-15 22:16:48 +07:00
admin 3664ffbc47 them big_tasks.md (roadmap G0-G4, danh dau G1.1-G1.5 hoan thanh) + debug scripts/probes cua phien lam viec G0.1-G1.5 (test_g13/test_g12/test_g15_stress, patch_g1x, deploy/build bridge, probe_g0x) 2026-08-15 21:59:17 +07:00
admin c813481357 G1.4: dong bo comment voi code - bo ghi chu mute-when-editor-open con sot (dispatch channelQuiet, attach job); ghi ro reloading_ chi mute khi createView/createInstance chay 2026-08-15 21:49:00 +07:00
admin 7629783298 G1.4: bo mute-when-editor-open - channelQuiet chi con reloading; xoa editorOpen machinery (g_editorOpen/g_editorPathCount/clear_editor_open/setEditorOpenPredicate); audio loop process() binh thuong khi editor mo 2026-08-15 21:28:16 +07:00
admin b92c85ec73 G1.3: bo pump gate cu (is_teardown_window/g_ownerTid/g_juceOwnerTids/g_tidToWorker/post_and_wait) — 1 UiThread khong con race teardown-pump; CBT hook chi tren UiThread; destroy_window_on_owner destroy truc tiep 2026-08-15 21:18:49 +07:00
admin 9e6e72ac27 G1.2: 1 UiThread chung thay 16 ChannelWorker (COM STA + message pump + job queue); window+attach job tren UiThread; audio loop bo PeekMessageW; Option B close dong bo qua close_editor_now 2026-08-15 21:02:18 +07:00
admin 3587a34e31 G1.1: fix probe crash (std::thread joinable dtor -> terminate); xac nhan openGUI tren worker thread OK; closeGUI truoc teardown 2026-08-15 20:50:43 +07:00