admin
244dc8ee9e
V45.43: fix Ozone 11 GUI crash on Intel UHD 630 + load diagnostics
...
Root-cause hypothesis: fx_vst_bridge parked embed window offscreen (-20000,-20000)
during VST3 editor attach; Ozone 11 GL init null-derefs (c0000005 in
iZOzone11Core.dll+18f6b92) on Intel ICD. Reaper hosts window on-screen -> OK.
- RenderFxJob.cpp: env toggle SF_FXGUI_ATTACH_ONSCREEN=1 -> SetWindowPos(100,100)
before fxGuiLoadAttach, park back offscreen after attach succeeds
- main_fx.cpp: FxCrashDumpHandler prints [CRASH] in <module>+0x<offset> and
[CRASH] minidump: <path> so logs name the faulting plugin DLL directly
- app.jsx VstGuiEmbed: frameLoadedRef + 90s watchdog -> onDead if bridge alive
but no frame (no more infinite 'Dang tai plugin VST...' flash); clearer onDead
toasts with %TEMP%\sf_dumps\fx_bridge_crash_*.dmp hint (track + master)
- rebuild fx_vst_bridge + daw_vst_bridge, NSIS/MSI v=202609021809
2026-09-02 21:08:49 +07:00
admin
9f3b072be0
V45.42: xoa toolbar label 'VST GUI - nhung (frame-capture)' trong VstGuiEmbed (GUI hien thi thang o row, khong con header bar) + fix flash trang khi load GUI embed o tang C++: RenderFxJob.cpp them global g_fxGuiEditorReady (set sau khi editor attach thanh cong tren pump thread), FxGuiServer.cpp /frame tu choi 503 khi chua ready, tinh mean-luma trong captureHwndToJpeg de loai frame trang/den (avg <0.02 hoac >0.98), cache g_lastGood de serve frame tot cuoi thay vi frame blank khi window dang repaint. Rebuild daw_vst_bridge+fx_vst_bridge+engine+installer NSIS/MSI v=202609021810.
2026-09-02 18:31:41 +07:00
admin
d8e5f52017
V45.40: fix bridge crash-dump hardcode duong dan may dev (C:/Users/locpham/...) -> %TEMP%\sf_dumps (GetTempPathA) - audit cross-machine. Rebuild bridge+engine+installer NSIS/MSI v=202609021627.
2026-09-02 16:50:02 +07:00
admin
b153850d5c
V45.39: fix installer khong cai VC++ redist -> VST FX 0x7E tren may sach
...
Root cause: bridges (/MD) import MSVCP140.dll/VCRUNTIME140*.dll nhung installer
KHONG bao gio cai VC++ redist. hooks.nsh dinh nghia macro 'customInstall'
- ten Tauri v2 khong goi (template dung NSIS_HOOK_POSTINSTALL) -> macro chet,
vc_redist.x64.exe khong duoc nhung, khong chay. May phat trien chay duoc vi
co MSVC BuildTools (redist san); may user sach: bridge khong start duoc ->
moi VST/VST3 FX khong load (GUI khong mo), plugin /MD khac (iZotope core...)
bao 0x7E.
Fix:
- hooks.nsh: doi macro thanh NSIS_HOOK_POSTINSTALL; vc_redist dong goi nhu
bundle resource -> (File tuong doi trong macro resolve theo thu muc
installer.nsi sinh ra, khong phai src-tauri - cung vay).
ExecWait /install /quiet /norestart; xoa file sau khi cai xong (rc 0/3010).
- tauri.conf.json: resources + vc_redist.x64.exe; nsis installMode perMachine
(vc_redist can elevation; DAW scan Program Files plugin dirs).
Verified: 7z l installer -> vc_redist.x64.exe embedded; installer.nsi insert
NSIS_HOOK_POSTINSTALL; INSTALLMODE perMachine; makensis OK. NSIS +387MB.
MSI (WiX) van khong cai redist - can cai tay tren may dung MSI.
2026-09-02 12:46:24 +07:00
admin
29b5f053a0
V45.38: suppress iZotope 0x7E dialog
...
- _is_vst2_dll: pure-Python PE export-table check (magic-aware dd offset
PE32+112) -> IZOzone11Core.dll (runtime lib, no VSTPluginMain) dropped
from VST2 lists in _scan_plugins and list_scan_all; plugins.py same.
- _hidden_desktop_startupinfo: scan subprocess runs on hidden desktop
(user32 CreateDesktopW, HDESK restype) -> third-party MessageBox invisible.
- SetErrorMode(SEM_FAILCRITICALERRORS|SEM_NOOPENFILEERRORBOX) in all 4
bridge mains: missing dependency DLL fails silently instead of blocking.
2026-09-01 20:10:33 +07:00
admin
60a87626f0
V45.36: fix SF2 preset thieu tren soundfont non-GM (Cajon.sf2) - fluidsynth error 'There is no preset with bank number 0 and preset number 40/44' lam track violin/contrabass silent. selectProgram/programChange gio fallback 3 bac: (bank,program) -> (0,program) -> (0,0) thay vi chi bank128->bank0 (fluidsynth giu preset cu -> sai am). Rebuild daw_vst_bridge MSBuild 20260901-1003.
2026-09-01 10:03:55 +07:00
admin
848bbf4d15
V45.33: rebuild bundle - bump v=202609010905 (precompiled + index, sf-fx-realtime.js?v=202609010905), rebuild 3 native bridge (daw_vst_bridge/fx_vst_bridge/plugin_host) tu source 20260831-2149 bang MSBuild 20260901-0905
2026-09-01 09:10:14 +07:00
admin
945e63918d
V45.6 fix solo Q3: bo stopAllPlayback+restart 60ms khi solo main-session (track solo giu nguyen tieng, het wobble re-attack); GIU timelinePitchesRef qua stop - kill branch NOTE_OFF tung pitch (Qin im khi solo track khac, truoc day tset=0); C++ allNotesOff sandbox VST2 qua control 7 (child panic local CC64/CC123+128 noteOff) thay 128 note-off flood queue 64-cap (Qin het treo sau STOP); IPC toggleSolo tu applyAllTrackMuteSolo (ref patch + kill); v=202608292138
2026-08-29 21:39:59 +07:00
admin
72ae22f865
V45.5 instrument solo path (Q3 debug): dbg log solo_toggle/solo_apply/solo_kill/solo_guard/play_tracks - lan test toi thay ro trang thai ref + note bi block; C++ [Vst2Sandbox] ON/OFF/CC log trong SandboxVst2Host (Qin chay sandbox, truoc day midi vao Qin hoan toan mu trong bridge.log - chi VST3 log [midi]), v=202608291806
2026-08-29 18:09:16 +07:00
admin
f3fd0109a7
V45.2 fix Qin silence (20s audio-thread stall) + SF loop downbeat delay
...
- SandboxVst2Host::loadSerializedState: queuePreset non-blocking (byte-identical
echo never matched -> waitApply always burned 20s TIMEOUT on the audio thread;
VST2 restore runs via runOnMain so every startup silenced ALL audio ~20s = Qin
'failed that su'). Bridge now holds reloading + defers saveStateJob until the
child republishes a different chunk (clobber protection, no audio block).
- sf-fx-realtime clear_queue('loop'): truncate old tail to KEEP=4 blocks
(~21ms) instead of keeping FILL 24 (~128ms) -> wrap downbeat no longer ~110ms
late; skipFade crossfade masks the truncation jump, seam crossfade recount.
- bump ?v= 202608291721 (app.jsx x2, index.html x2); deploy 3 _internal + dist.
2026-08-29 17:25:32 +07:00
admin
6cbdbd8e9c
G3: 1 clock - PDC latency that + playhead engine-derived
2026-08-28 15:51:19 +07:00
admin
c72362e088
G2: JUCE VST3 hosting + latency that qua FxLatReport - probe pureComp 2108
2026-08-28 15:28:06 +07:00
admin
9c0d35def4
G1: JUCE engine SHM chain rong POC - probe pass, khong lag them
2026-08-28 12:35:37 +07:00
admin
fa61712ecc
V42+V42A: fix seam click khi loop master FX — worklet wrap crossfade (tail->head) + native WebAudio loop cho bypass (het click beat 0); dip bypass 5ms; PDC playhead freeze/snap
2026-08-28 11:35:32 +07:00
admin
ad3dfa5c47
v15b: rebuild plugin_host with CC7 fix (realtime sandbox VST3 path)
2026-08-26 16:46:00 +07:00
admin
24109f8bc4
v15b: fix CC7 to VSTi (legacy tag kHostMidiCC+cc + volume-param fallback), CC lane grid + 0/+- labels
2026-08-26 16:45:42 +07:00
admin
2c96a223af
feat: CC11 expression automation (spec midi_note_cc11_expression)
...
- MIDINote schema + expression_curve (position_ratio 0..1, value 0..127)
- Piano roll CC lane mode Expression (CC11): draw/move/del anchors
- Offline: _expression_events grid 64 samples -> job.events -> RenderJob.cpp sample-accurate CC
- Realtime: scheduleNoteExpressionCC11 grid 16ms via bridge pushEvent / SonicSF fallback, epoch-guarded, cleared on stop
- tests/test_cc11_expression.py 6/6 (unit interp/grid/clamp + integration energy follows curve)
- rebuild daw_vst_bridge (narrowing fix) + sync binaries/dist, babel rebuild + sync 5 copies
2026-08-26 11:14:56 +07:00
admin
5b747606c7
Rebrand SonicForge Studio -> ScoreFX Studio: UI names, About logo, favicon + icons for all exe builds
2026-08-24 19:28:22 +07:00
admin
6ec249ef13
fix(fxrt): mirror sidecar exe clean build, probe toggle do latency thuc (Ozone) - cache HIT xac nhan khong reload khi toggle
2026-08-24 17:05:13 +07:00
admin
59e4951912
fix(fxrt): toggle VST bypass khong reload plugin - cache instance trong bridge, chain giu slot bypassed, bypass state trong chainKey, poll 100ms + fade-in 512 samples che gap latency
2026-08-24 16:56:10 +07:00
admin
3a3f46b7d3
fix(fxrt): mo GUI VST khong gay crackle - GUI spawn BELOW_NORMAL, mien watchdog khi mo native GUI, realtime loop ABOVE_NORMAL
2026-08-24 16:38:52 +07:00
admin
e12a8d754a
fix(fxrt): chan out ring overflow trong bridge (backpressure, het pointer collision)
2026-08-24 12:25:14 +07:00
admin
4240f15e30
fix(engine): defer set_param ra worker thread, VST API khong goi tren audio thread
2026-08-24 12:03:05 +07:00
admin
21130858d6
fix(engine): giam jitter bridge timer va fade-out khi transport stall
...
- RealtimeFxLoop: timeBeginPeriod(1) + sleep_until thay Sleep(1) -> loopMax 32.9->24.8ms
- plugins.py _pump_output: stall-fade 8 block gain 1->0 khi gap > 5.5*block_sec (~29ms),
burst send, fade-in 0->1 khi resume; poll dung asyncio.to_thread(time.sleep) vi asyncio.sleep
bi cap 15.6ms tren Win11 (IOCP) du timeBeginPeriod
- fx_realtime.py: stats dem publish/drop/stale/read cho diagnostics
- rebuild bridge binary
2026-08-24 10:40:21 +07:00
admin
10997a65b9
fix(fx-rt): het crackle master FX - limiter attack smooth + crossfade khi bat/tat chain
...
- NativeInstrumentEngine: kAttack 0.9->0.1 (het zipper khi sum nhieu track)
- app.jsx: crossfade masterFxDryGain/masterFxGain thay hard-rewire graph luc
activation/deactivation master chain FX; worklet bao 'started' -> ramp dung
luc; PDC tre sau khi dry silent (tranh gap 80ms)
- sf-fx-realtime.js: fade-in 512 mau luc FILL xong / resume sau underrun
- index.html + addModule: cache-buster v=202608241200
- rebuild app.precompiled.js, copy bundle vao dist/ + src-tauri/resources/
- keo dai fix cac round truoc: FILL 16, FXRT_BURST_MS, REBUFFER, pacing,
VST GUI click/focus, solo crackle
- them harness + plans/patch scripts
2026-08-24 07:46:09 +07:00
admin
373a96cf7b
fix(fx-gui): bring plugin window to top before real click (anchored mode)
...
Real-input clicks were landing in whatever window sat above the anchored
plugin window (foreground Chrome in tests) — WindowFromPoint at the click
point returned the browser, so the editor never saw the input. Attach to
the foreground thread, SetForegroundWindow + BringWindowToTop before the
click (still non-TOPMOST — no floating regression from 80c663e ).
2026-08-23 18:09:52 +07:00
admin
80c663e419
fix(fx-gui): re-enable real-input fallback (anchored, non-topmost)
2026-08-23 16:47:38 +07:00
admin
0acc3ee7ee
fix(fx-rt): burst 4-block input batch qua bridge — hết lag/giật/crackle master FX
...
- worklet gom 1024 mẫu (4 block) vào 1 frame interleaved, main thread tách 4 WS frame 512 floats
- bridge take=min(avail,4) xử lí 1 call process cho burst → overhead VST3 amortize 4 lần
- engine _pump_output pace theo deadline thay vì sleep cố định (outRead 131→187.5/s)
- FX_RT_ROUNDTRIP_SAMPLES 512→1792 (RTT batching ~7 block)
2026-08-23 11:44:54 +07:00
admin
e5c957fc87
Phase 3: engine render chain hop nhat — track/master doc mastering_settings.chain (imager/maximizer), PDC probe FX_LATENCIES, fix daw_vst_bridge link BuiltinFxChain, pytest 3.2/3.3
2026-08-22 20:17:59 +07:00
admin
5ad2c681e7
Remove Carla native VSTi bridge entirely
...
Drop Carla integration across frontend and backend:
- plugins.py: remove /carla-midi, /carla-status, /carla-stop, /open-in-carla,
/carla-play-notes endpoints and Carla process management
- runtime.py: remove find_carla / _carla_* helpers, detect and capabilities
- app.jsx: remove Carla bridge UI, SonicCarlaMidi routing, shouldRouteCarla
guards, VST row Carla button and preset fallback
- system.py: remove /carla-path
- Keep audio path unchanged (tracks -> masterBus -> output -> analyser),
directOut only for offline render
Build frontend, tests pass (124 passed).
2026-08-22 18:39:49 +07:00
admin
14265515aa
fix(exit): taskkill rieng tung process — kill het plugin_host/fx_vst_bridge khi thoat app (truoc day /IM gop chi chay lenh dau); CREATE_NO_WINDOW cho moi subprocess engine (het terminal chớp chớp)
2026-08-22 18:06:26 +07:00
admin
f143646ba7
fix(fx-gui): /show resize window+plugin view theo rect panel (layout khớp ô embed) — giữ offscreen, không topmost; sync sidecar mới vào bundle _internal
2026-08-22 17:52:16 +07:00
admin
4bb0db2b21
fix(fx-gui): meter VST chạy đúng — bỏ điều kiện inRead chặn peek + chống race lúc load + ẩn cửa sổ native floating
2026-08-22 17:36:31 +07:00
admin
8346bc3041
build(native): rebuild bridge + commit sidecar binary để feature theo push
...
- fix compile: performEdit dùng setParamNormalized (setParamFromEdit không tồn tại trong SDK này)
- rebuild fx_vst_bridge.exe/daw_vst_bridge.exe/plugin_host.exe (chứa /shm route + SHM audio feeder)
- src-tauri/binaries: hết ignore, commit binary + dll + vst3scan.json — máy khác clone về có ngay feature native
- xóa rác app.precompiled.js.bak + dọn bundle dirs (.bak/.new/_diag/.pytest_cache)
2026-08-22 17:12:18 +07:00
admin
4e3f2fd08a
Fix 3 bug standalone: save project lỗi schema, export MIDI/WAV không hỏi nơi lưu
...
- Bug 1: serializeTracksList bỏ section item không có sectionId (do insertSectionAtPlayhead tạo) — tránh source_data {} làm schema oneOf fail
- Bug 2: export MIDI qua save-dialog + write file, toast kèm đường dẫn
- Bug 3: export mix WAV/MP3/OGG qua save-dialog + write file, toast kèm đường dẫn
- Marker tauri_bridge_ready: xóa khi window destroy + guard SF_PARENT_PID — tránh standalone treo 120s
2026-08-21 17:13:28 +07:00
admin
b91e6d3875
bridge: fix Qin VST2 silent playback via per-child SHM sandbox
...
- out-of-process VST2 sandbox: each Qin track spawns its own plugin_host.exe child
with unique SHM (SonicForge_PluginHost2_<bridgePid>_<ch>_<seq>), watchdog <=3 respawns
- preset round-trip bridge<->child over SHM (presetIn/presetOut 64KB), stub rejection MIN_PRESET=100
- seed qin_default.b64 default preset into every fresh child; saved patch wins on restore
- forward MIDI on channel 0 (Qin_RV only listens on ch0); one instrument per child
- controls 4/5/6 = OPEN_GUI/CLOSE_GUI/QUIT
- gitignore runtime carla_projects
2026-08-20 19:16:43 +07:00
admin
7c22ae1f02
refactor(bridge): split fx bridge, stabilize VST3 host chain, drop old install engines
...
- remove diagnostic canaries from audio hot path (crackle fix) and
stuck C5 note raw-MIDI test (Vst2Instrument::init noteOff)
- split native bridge into daw_vst_bridge (VSTi) + fx_vst_bridge (VST FX)
- VST3: processData prepare before setActive, zero input buses, accept
both .vstpreset and bridge-state blob in RenderJob presets
- native_render/vst_engine: bridge-exe discovery + render_fx_chain + /fx-gui
- delete old install/ engine binaries (install via sidecar+resources now)
- add BUILD_LAYOUT.md, build_selfcheck, tools/ diagnostics
2026-08-20 09:42:42 +07:00
admin
6a3b430da0
A14: MIDI-out từ plugin (VST2/VST3) → SHM → Rust emit → DAW track
...
- Vst2Instrument: audioMaster callback thu VstEvents, push SHM midiOutQueue
- Vst3Instrument: IEventList output bus (kAudioMasterWantMidi) — check
- SharedMemoryIPC.h: midiOutQueue[64] + midiOutCount (offset 27556/28324, sizeof 28328)
- shm.rs: MidiEventIPC Serialize, drain_midi_out() emit 'bridge-midi-out'
- lib.rs: pump emit midi-out events
- nativeBridgeService.js: onMidiOut API
- app.jsx: route MIDI-out về selected track qua SonicMidiRouter (feedback guard)
- TASKS.md: A14 ✅
2026-08-19 21:12:07 +07:00
admin
da0f8fa40e
feat(native): realtime master FX chain + fx-gui fast start, hide/show, non-topmost
...
- FxGuiServer: HWND_TOP (no longer always-on-top), /hide + /show endpoints,
onStarted callback prints SF_FXGUI_PORT before plugin load (fast connect)
- RenderFxJob: RealtimeFxChain (mutex+worker, SEH-guarded, bypass slots,
deferred Vst3Fx dtor); --fx-gui split into parse/create/load-attach stages
- main: FreeConsole unless SF_KEEP_CONSOLE; control type 6 SET_FX_CHAIN feeds
g_fxChain on the audio loop; shutdown before CoUninitialize
- plugins.py: CREATE_NO_WINDOW on both Popen paths
- lib.rs: set_fx_chain command -> push_control(6)
- app.jsx/nativeBridgeService: setFxChain sync from MasteringModal; panel close
uses /hide + refs to fix closure bug; VstGuiEmbed rect refresh -> /show
2026-08-19 09:59:13 +07:00
admin
45a15da55e
fix(midi): playback khong cam loop pass 2+ va note cung pitch khong bi cat (bugs 1-2) - set isPlayingRef truoc bridge PLAY (startTrackPlayback/local/piano-roll), cancel STOP#2 retry khi loop restart; dedupe NOTE_OFF theo channel:pitch (pendingNoteOffMap + scheduleNoteOff) de NOTE_OFF tre (dur+30ms) khong cat note-on cung pitch ke tiep (bar lien nhau, piano roll note chong), clear map khi stop; sync 5 ban JS + index.html ?v=202608181807, rebuild exe release
2026-08-18 18:45:31 +07:00
3dtours
161a380a60
build(win): bundle jpeg62.dll with bridge (FxGuiServer JPEG encode needs it at runtime)
2026-08-18 17:45:47 +07:00
admin
351ee56080
fix(bridge): load dung VSTi theo track (V9) - bo early-return mui theo flag, load qua Tauri invoke khi co path, guard path sai (WaveObserver vs Nexus), chi mo GUI khi load OK; sync 6 ban JS + index.html ?v; kem cac fix bridge truoc (bugs 1-4, GUI restore)
2026-08-18 16:56:05 +07:00
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
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
b6950d6418
fix: MIDI keyboard preview silent after transport STOP — live flag bypass guard (V8)
2026-08-16 15:43:23 +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
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
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