Commit Graph

1143 Commits

Author SHA1 Message Date
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 82796417c1 V45.4 fix SF loop wrap gap: worklet KEEP 4->16 (85ms che stall 68-82ms, het underrun wrap dien hinh) + wrap underrun bo flush (D17 da skip engine flush; worklet flush pha gap seam) + resumeFill 8 (~43ms) thay FILL 24 (~128ms) - gap wrap ~110-235ms giam con vai chuc ms, v=202608291752 2026-08-29 17:54:36 +07:00
admin a7630f0e6d chore: bo target/ root (artifact lan) khoi index + gitignore 2026-08-29 17:50:45 +07:00
admin 788a371f72 V45.3 fix Qin tremolo khi solo track khac: activeTracksRef luon ghi state da patch (bo restore STALE) - D18b guard/scheduler thay solo-out ngay, v=202608291749 2026-08-29 17:50:12 +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 6b26d5db0e V45.1: fix load VSTi loi ReferenceError instrumentSelectorData (module scope) - guard typeof undefined, v=202608290945 2026-08-29 16:46:05 +07:00
admin c084ac8ba7 V45: D17 seamless loop wrap + D18 stop solo note-off (Qin) + D18b/c guard + engine VST load fixes
- D17: wrap_info/wrap-skip, fx wrap xfade, playhead-derived scheduling
- D18: solo stop -> NOTE_OFF all sounding timeline pitches + CC123/CC120
- D18b: track audible gain guard, tracksRef fallback
- D18c: timelinePitchesRef per-track Set, kill at applyAllTrackMuteSolo
- bridge ring _MAX 16, index v=202608290928
- plugins.py/vst_engine.py/fx_realtime.py/JuceFxEngine.cpp: VSTi load + Qin fixes (uncommitted 12:18)
2026-08-29 16:39:02 +07:00
admin 2afa828c8f V44: fix crackle - uu tien audio thread bridge (HIGHEST) + FILL 24 (cushion ~90ms) PDC 7936 2026-08-28 17:22:50 +07:00
admin 8990f04357 V43: tang FILL 8->16 chong underrun crackle (cushion 3-8 -> 11-16) + PDC 5888 2026-08-28 16:36:13 +07:00
admin bf74a0be4f G3 deploy: mac dinh dung JUCE bridge + bundle juce_fx_bridge vao engine 2026-08-28 16:21:12 +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 091abe5a91 G1: them G1_RESULTS.md 2026-08-28 12:35:59 +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 d7dd626dd5 G0: dich chinh - khong co drift bridge (run2 drained=True, recv=sent=10000), rut de xuat bu drift 2026-08-28 12:15:27 +07:00
admin d78af9304f G0: baseline latency do xong - gate G2 mo, drift bridge -0.5% phat hien 2026-08-28 12:03:13 +07:00
admin ebe17d902b docs: plan JUCE - phan bien V2: xoa risk buffer toan track (Option B leftover), param queue lock-free SPSC, validate sampleRate/blockSize doi giua chung 2026-08-28 11:49:54 +07:00
admin a10f679c0d docs: plan JUCE - phan bien split-brain (1 master clock, Option A), param pump GUI->JUCE, do jitter sigma G0 2026-08-28 11:45:46 +07:00
admin 51bac2770d docs: JUCE latency plan - thay heuristic PDC bang AudioProcessorGraph (G0-G5) 2026-08-28 11:38:46 +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 9ccc28d211 fix: use 127.0.0.1 for WebSocket when host is localhost/::1 to avoid IPv6 fallback delay (~300ms) 2026-08-26 22:45:56 +07:00
admin fa01ef02f7 V25: fix wobble khi play - re-buffer FILL sau flush (het loop underrun-flush) 2026-08-26 21:37:06 +07:00
admin f38e500326 V24: fix master-chain crackle, 1s lag, solo bypass
- worklet: FILL 48->24 (PDC 7936 dung), flush protocol khi resume sau interruption
  (clear queue + fade-in/crossfade chi voi block moi), drop block stale
- engine fx_realtime: _flush_input_locked NO-DROP (ring day -> giu pending, cap 2048),
  flush_all() dong bo in/out khi worklet resume
- app.jsx: WS flush_done + flushing guard, fallback timer 500ms
- plugins.py: xu ly {cmd:flush} -> flush_done
- index.html: bump v param
2026-08-26 20:15:13 +07:00
admin 28a06134f9 V23: fix crackle master FX - underrun fade-out tu mau cuoi + crossfade 64 mau o cap-drop/resume 2026-08-26 19:45:36 +07:00
admin 2e996af102 fix(cc11): unmute realtime dung effective list thay vi ref stale 2026-08-26 18:40:15 +07:00
admin b95c63e7db V21: keep master FX session warm on user stop - no 4s VST reload on replay
- stopAllPlayback(fade=true) giữ master FX session (không teardown) → play
  kế tiếp FX xử lý ngay, hết cửa sổ dry ~4s khi reload VST
- per-track FX vẫn teardown khi user stop (VSTi nhiều track nặng CPU)
- idle timeout 120s (FX_RT_WARM_IDLE_MS): ngừng chơi lâu → teardown giải
  phóng CPU/VST
- fxRtStart/fxRtStop/startSubTabPlayback hủy idle timer khi play
2026-08-26 18:31:25 +07:00
admin 3e6080603c v20: fix CC11 piano roll (epoch check _cc11Epoch - v19 con so _nativePlayEpoch) + SF program change khi play piano roll (bridge) 2026-08-26 18:18:20 +07:00
admin 1f78a834a8 v19: fix CC11 piano roll (epoch rieng cho CC11 timers) + Synth/GUI piano roll cho section subtrack 2026-08-26 18:07:26 +07:00
admin e53a31b525 v18: CC11 expression realtime khi play main timeline + section subTrack + local loop (dong bo voi export native_render) 2026-08-26 17:46:44 +07:00
admin 02ebf41e97 v17: Select Instrument modal highlight instrument dang load (SF preset + VST) 2026-08-26 17:17:21 +07:00
admin a0f5f98209 v16b: revert EXPRESSION_CC 7 -> 11 (test CC7 xong, ve CC11 expression) 2026-08-26 17:04:31 +07:00
admin 0e555114f8 v16: persist cc11_global_curve qua save/load (item + sub_tabs) + commitCC11Curve dong bo subTab st.notes (CC11 realtime khi Play) 2026-08-26 16:58:44 +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 e54dec4010 Fix: persist expression_curve qua project save/load; TEST CC7 thay CC11 2026-08-26 16:29:54 +07:00
admin f10f9873e9 Fix: carry expression_curve qua native track render + cache key 2026-08-26 16:20:53 +07:00
admin 5689536fb1 CC11: global curve from first to last note, manual node add/drag/remove 2026-08-26 16:15:47 +07:00
admin 56235623cd v13: CC11 default dashed lien tuc tu note dau den note cuoi (khong per-note); node tao tren dashed 2026-08-26 16:06:08 +07:00
admin e6b5e7f4d7 v12: CC11 default = flat bar at default automation pos (no auto nodes); click add node, drag move, right-click remove 2026-08-26 13:02:58 +07:00
admin fd50d99250 v11: fix CC11 lane sync - engine serve precompiled stale; click=add node, drag=move, right-click=remove; shared mode when no selection 2026-08-26 12:48:39 +07:00
admin b63e5b21d6 fix(cc11): replace auto-select (khong accumulate) + prefer selected note khi click lane (chord) + bump cache-buster v-param 2026-08-26 12:01:21 +07:00
admin 74dccaf54a feat(cc11): lane header CC dropdown + graph thread (2 fixed end nodes, preview-draw drag fix flicker) 2026-08-26 11:48:13 +07:00
admin a800834c89 fix(cc11): auto-select note on CC11 lane click so curve is visible
Draw branch renders expression curve only for selected notes, but
handleCC11MouseDown never selected the note -> anchors added but
invisible. Select the clicked note before adding the anchor.
2026-08-26 11:31:03 +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 c146d3eb14 fix(export): offline render VSTi qua engine khi chua play — fill midiCacheRef khong can play truoc 2026-08-26 07:51:08 +07:00
admin 26086cb331 fix(render): VSTi export lay preset dung bridge channel (midi_channel, khong phai track.id)
render_session_container da tinh midi_channel round-robin melodic giong
unifiedMidiRouter.allocateChannel, nhung VSTi branch truyen track.id vao
bridge_state_preset_b64 -> lay preset cua channel stale (VD track5 -> ch5
trong khi realtime choi ch2) -> export sai loai nhac cu. Dung midi_channel.
2026-08-25 21:33:33 +07:00
admin 57fa2e78fe fix(export): carry bridge-captured VSTi preset into offline render
Offline render tao bridge moi khong co preset -> plugin load init patch
-> am khac realtime (user tuong fallback). Gio doc presetBase64 tu
bridge_state.json (channel == track.id, plugin_path khop basename) va
truyen vao render_offline khi track khong nhung preset_data.
2026-08-25 21:14:48 +07:00
admin 014d02283d fix(engine): bundle daw_vst_bridge.exe vao frozen engine — VSTi export khong con fallback synth (native_bridge 501) 2026-08-25 20:11:50 +07:00
admin ae7299d097 fix(render): GM-only track (instrumentProgram, khong soundfont_id) render qua default SF2 thay vi oscillator synth 2026-08-25 19:48:07 +07:00
admin de4caefb50 fix(preview): download soundfont resolve plugin_dirs + fallback default GM (hết oscillator) 2026-08-25 17:54:39 +07:00