Commit Graph

11 Commits

Author SHA1 Message Date
admin 1ca2386eee M26/P0: ep bridge FX qua SF_FX_BRIDGE_PATH + export 32-bit float dung + WS auth/PID/SHM + harness test
- app/core/fx_realtime.py: FxRealtimeSession._spawn() ton trong SF_FX_BRIDGE_PATH
  (validate os.path.isfile; thu tu SF_JUCE_FX_BRIDGE_PATH -> SF_FX_BRIDGE_PATH ->
  autodiscover). Truoc day env legacy bi bo qua nen test khong ep duoc bridge cu.
- app/core/render_engine.py: render_project bit_depth=32 -> subtype FLOAT. Truoc
  day 32 roi vao else -> PCM_16, tuc default bit_depth=32 ghi ra 16-bit sai.
- app/api/v1/plugins.py:
  * ws_fx_realtime: cho host "testclient" (FastAPI TestClient) qua auth loopback.
  * _running_sonicforge_pids(): + os.getpid()/os.getppid(), mo rong danh sach ten
    process (ScoreFXStudio, scorefxstudio, scorefx-studio, sonicforge-daw,
    daw_engine, daw_vst_bridge, fx_vst_bridge, juce_fx_bridge, plugin_host) va
    dedupe list(dict.fromkeys()).
  * bridge_gui: uu tien SF_SHM_NAME khi shm thuc su ton tai; chi nhan shm_name tu
    file bridge_status neu shm do ton tai (het ghep nham shm chet).
- tests/test_daw_phase5.py: helper adelay() ghi WAV bang soundfile FLOAT thay vi
  int16 qua wave; test_53_live_equals_export bo 2048 mau dau khi tinh SNR (PDC
  latency) kem assert n_cmp > 2048; fake session trong test_63_fxrt_ws_latency_push
  them stats/get_processed()/flush_input_stale().

Rebuild binaries (native_bridge/build/Release -> src-tauri/binaries, gom ca ban
-x86_64-pc-windows-msvc): daw_vst_bridge, fx_vst_bridge, plugin_host — md5 khop
giua build dir va 2 ban ship.

Verify: python -m pytest tests -q -> 184 passed (85.38s); smoke bit_depth
16/24/32 -> PCM_16/PCM_24/FLOAT, bien do khop.
2026-10-12 21:20:38 +07:00
admin 1d4ff1282b Gap 13: BWF/INFO metadata cho WAV export — wav_bwf.patch_bwf_metadata chen bext + LIST/INFO (INAM/IART/ISRC/ICMT) truoc data chunk, giu nguyen PCM bits; render_project(metadata=) + RenderRequest.metadata + cloud render task; ExportModal Title/Artist/ISRC; test_66 (178 passed) 2026-08-23 09:11:18 +07:00
admin 94a0bc7401 Gap 7: master volume automation lane — render_engine automation.volume_db (dB interp -30..+3 sau fader truoc normalize), schema master.automation, UI AUTOM panel MasterStripConsole + realtime scheduling tren masterBus.output.gain (play/seek/stop), serialize/parse, test_65 (177 passed) 2026-08-23 09:05:39 +07:00
admin 2b5f396133 Gap 12: soundfont render qua native bridge — render_soundfont_offline (FluidSynth C API) thay pyfluidsynth khi thiếu lib; render_engine soundfont branch fallback bridge (test_64, 176 passed) 2026-08-23 08:52:57 +07:00
admin 6b2c9a039b Gap 8: PDC realtime — WS latency push + dry-path delay compensation
Backend: /ws/fx-realtime pump drain get_latencies (SHM ring, bridge da bao REPORT_LATENCY) -> push {cmd:'latency',total,latencies} khi tong doi. Frontend: pdcDelay (DelayNode) giua dryOutput->output bu delay master chain (round-trip 2 block + latency VST3), fxRtApplyPdc cap nhat tu WS frame, reset khi chain off. Test test_63 fake session 1024 -> frame total 1024; full 175 passed.
2026-08-23 08:44:54 +07:00
admin 3ad379f0ba Gap 10: multiband compressor + de-esser (LR4 crossover, UI, test_62) 2026-08-23 08:25:07 +07:00
admin c8c49b6b9c Gap 4: MaximizerFx oversample 4x soft-clip + ceiling — zero-stuff + FIR33 anti-alias + post-decimation clamp (giảm aliasing fold-back, sample peak <= ceiling); test_61: impulse delay 8 mẫu, unity transparent, alias 9.1k -117dBFS, ceiling -1dB (24 passed) 2026-08-23 07:59:33 +07:00
admin 35076f680b C: realtime VST3 setParam live — Vst3Fx::setParam (title/shortTitle->ParamID, setParamNormalized + inputParameterChanges queue), RealtimeFxChain dispatch vst3, test_60 delay 1s->0.25s giua stream khong restart 2026-08-23 07:36:43 +07:00
admin 17e22bcf32 D2: LimiterFx brickwall — lookahead 1-5ms + oversample 4x + hard clip, UI toggle SOFT/BRICKWALL + LOOKAHEAD ms 2026-08-23 07:23:52 +07:00
admin 2a5e2af04a master strip: L/R volume + LINK + MUTE that, bo soloBtn 2026-08-22 21:41:54 +07:00
admin c3aba40ffe Phase 4+5: WebAudio I/O shim + verify DAW checklist — live=export, order, fader, PDC, smoke 2026-08-22 21:02:52 +07:00