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
admin
eac7f2feb8
G0.4: save/restore preset quanh reload khi close GUI (captureState/restoreState, memorystream link truc tiep)
2026-08-15 20:04:56 +07:00
admin
5313d85926
G0.3: watchdog giu 15s khi attach-in-flight (SHM flag) + RAII guard trong attach job (fix kill nham khi GUI mo)
2026-08-15 19:00:32 +07:00
admin
2f7861820e
G0.2: openVstGuiRetry toi da 2 lan + backoff 800ms + skip khi PLAY
2026-08-15 18:45:25 +07:00
admin
18394807a9
fix GUI VSTi khi PLAY: defer OPEN_GUI + silence same-path truoc attach (G0.1)
2026-08-15 18:44:02 +07:00
admin
2890856d70
deploy exe fix GUI VSTi (9f1dc37c) vao install/
2026-08-15 17:50:29 +07:00
admin
67e73a2a85
fix GUI VSTi mute/reopen/not-load: revert walkthrough 2 ve hanh vi 0cec3d3 (reloadForGUI reload-on-reopen, closeGUI khong goi view->removed(), post_close_gui reload-on-close + same-plugin silence + destroy children + pathBusy, editorOpenPredicate refcount mute, CoInitializeEx MTA, window main-thread), giu cai tien an toan (WM_ERASEBKGND/PAINT/SIZE chong trang, resizeView, call_once, jobEvent_/MsgWaitForMultipleObjects pump 128, ABOVE_NORMAL + PowerThrottling worker, setBypassed quanh assign/unload); queryInterface giu kNoInterface nhu 0cec3d3 — VERIFIED: probe_fix_flow PASS (mo GUI Nexus -> close -> reopen khong mute, load Ample khi GUI dang mo OK, screenshot khong trang); warning: driver stress test 6 Nexus cung luc crash xac suat CA tren exe stable 0cec3d3 (khong phai regression)
2026-08-15 17:50:18 +07:00
admin
f94b2fa757
wip walkthrough 2 bridge: jobEvent_/MsgWaitForMultipleObjects pump, SetThreadPriority + PowerThrottling, isBypassed silence quanh assign/unload, closeGUI view->removed(), reloadForGUI reuse instance, bo mute khi GUI mo, CoInitializeEx MTA — CHƯA verified: driver test 1/3 PASS (AV c0000005 Nexus!GetPluginFactory luc attachView ch5, nghi MTA/bo mute), exe deploy giu ban 0cec3d3 (28104a47)
2026-08-15 17:11:47 +07:00
admin
0cec3d3cce
fix GUI VSTi trắng/không load: DPI per-monitor v2 + WS_CLIPCHILDREN + view->onSize() sau attached; restore API manager header/cpp ( 2596372 xoá nhầm) và deploy exe mới
2026-08-15 16:12:29 +07:00
admin
90241f626f
fix crash daw_vst_bridge 0xc000041d khi mở GUI Nexus rồi switch sang Ample: over-gate JUCE message window (g_juceOwnerTids, chỉ chạy khi close_in_flight) + gỡ VEH tạm và mọi log [dbg] chẩn đoán, giữ [NativeBridge] production; deploy exe FINAL (đã verify 3 run driver)
2026-08-15 11:35:50 +07:00
3dtours
2596372ab1
fix crash bridge khi đổi SF→VSTi đang play: silence same-plugin theo path MỚI trước assign() (createInstance) — track restore giữ cùng DLL process song song audio loop = 2 threads 1 DLL Nexus crash; không tự mở GUI khi đang play (C++ mute channel tới khi đóng GUI → tắt âm)
2026-08-14 17:08:17 +07:00
admin
af59aaf257
fix crash daw_vst_bridge khi đóng editor Nexus đang play: reload instance trong close job + silence same-plugin quanh createInstance/createView
2026-08-14 16:52:53 +07:00
admin
0696545ae9
fix: bridge crash/stall when opening native VST GUI while playing
...
- Fix A (USER32 crash): WM_CLOSE no longer destroys the native VST
window from the main thread (plugin editor children live on the
channel worker thread). WM_CLOSE -> hide + closeGUI on worker;
WM_DESTROY erases registry. LOAD_INSTRUMENT close uses closeGUI +
SW_HIDE, waits on hasAttachedView() instead of registry erase.
- Fix B: per-process SHM name SonicForge_DAW_IPC_{pid} so stale
bridges from old builds can never attach to a new app's ring buffer.
- Fix C (stall): opening editor for a plugin whose other channel still
has a live instance of the same DLL (Nexus) deadlocked the audio
loop (reload+createView on worker while audio thread processed the
other instance). Silence same-path channels via setReloading during
reload/attach, restore afterwards; audio resumes.
- Rebuild bridge + update install/ portable package.
2026-08-14 14:36:34 +07:00
admin
a1bbf549b7
build: commit compiled native bridge + libs + app shell into install/ — daw_engine (~1.8GB) built locally via build_install.ps1
2026-08-14 11:30:26 +07:00
admin
dc54a0c3f3
fix(bridge): loop keeps playing — cancel delayed STOP#2 on PLAY (V10) + epoch-guard stale note timers (V11, crack fix)
2026-08-14 11:24:44 +07:00
admin
d42abb2a41
fix(ui): per-track volume/mute/solo now works over bridge — send CC7 via SonicMidiRouter pushEvent instead of local WASM controllerChange
2026-08-14 10:56:24 +07:00
admin
35499b614c
fix(bridge): VSTi GUI crash on instrument switch — PostMessage WM_CLOSE instead of cross-thread DestroyWindow
...
- LOAD job posts WM_CLOSE to window created on main thread (DestroyWindow from worker crashed 0xc000041d, muting all tracks)
- handleOpenGui + attach jobs skip when Vst3Instrument::hasAttachedView() (state_ && guiAttached_)
- attach failure posts WM_CLOSE; post_close_gui erases entry only when it points at the same hwnd
- cap openVstGuiRetry at 5 to stop frontend retry spam
2026-08-14 10:18:22 +07:00
admin
f7f20e3a0a
fix(bridge): stop leaves sound looping — EventList maxSize=50 drops STOP sweep note-offs
...
Root cause: Steinberg EventList defaults to maxSize=50 events. The STOP
all-notes-off sweep queues 128 note-offs per channel (16ch x 128 pitch),
so addEvent beyond 50 fails silently and the plugin never receives the
remaining note-offs — voices keep sustaining and the transport loops
forever until the bridge process is killed.
Fix: raise eventList.setMaxSize(4096) in loadPlugin. Also assign unique
noteIds per overlapping note-on (stack per pitch) so note-off releases
every voice at that pitch, and log addEvent result + channel in debug
output for verification.
2026-08-14 09:45:50 +07:00
admin
29f7fecb35
fix(ui): GUI button inline same row + same height as Synth/File/FX in TCP
2026-08-14 08:04:33 +07:00
admin
7a8122f99d
fix(v9): 5 bugs — GUI deferred until VST loaded (no white window), fixed retry 8x500ms, VST3 folder resolve for auto-load, sustain-CC64 dropped after STOP, taskkill process tree on exit, Synth+GUI same row in TCP
2026-08-13 21:57:23 +07:00
admin
96d31ee685
fix(v8): 5 bugs — orphan bridge watchdog+state overwrite, stuck-note stop race, white VST GUI retry, VSTi auto-load via saved plugin_path, track-header button overflow
...
- native bridge: dedicated watchdog thread (parent death / PID-reuse via GetProcessTimes) -> TerminateProcess self; transportStopped flag drops note-on after STOP + CC64 sustain release + allNotesOff on stop
- tauri: set_bridge_child overwrites managed BridgeProcess state (app.manage is no-op when state exists) so Destroyed handler kills restarted bridge
- ui: stopAllPlayback syncs isPlayingRef/subTabsRef + second transport stop at 150ms; onStatusChange resets __bridgeLoadedChannels at callback start (auto-restart never emits bridge-down); openVstGuiRetry waits for async C++ load before OPEN_GUI; loadVstToBridge uses synth_engine.plugin_path / listPlugins fallback and persists plugin_path on load; shrink track-header Synth/GUI buttons
2026-08-13 21:14:31 +07:00
locpham
e3f5dad2ac
fix(vst-bridge): reload VST3 on project open + bridge reconnect; GUI button ensure-load before open
...
- preloadTrackInstruments: also load VST3 tracks into bridge (no GUI) on project open
- onStatusChange(connected): reload all VST tracks after bridge restart/down recovery
- GUI button (track strip + piano roll): ensure-load then open — no white window when bridge restarted and instrument gone
- __bridgeLoadedChannels map: skip reload if already loaded (avoids plugin state reset); reset on bridge down
- piano roll: wrap Synth+GUI buttons in shrink-0 row so GUI stays on same line; compact track-strip GUI button
2026-08-13 20:32:08 +07:00
admin
4bb67b54ad
feat(ui): add GUI button beside Synth button to reopen VSTi editor — track strip + piano-roll toolbar; sends bridge OPEN_GUI via router channel
2026-08-13 19:53:01 +07:00
admin
55d232c659
fix(bridge): closeGUI on channel worker thread — WM_DESTROY runs on main, view->removed() must run on the worker apartment or plugin corrupts and next attach hangs
2026-08-13 17:06:32 +07:00