Commit Graph

921 Commits

Author SHA1 Message Date
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 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 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 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 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
admin 6cee46d82a fix: SF render bridge-first (không fallback synth qua pyfluidsynth gain nhỏ) 2026-08-25 12:01:17 +07:00
admin ebf0828c55 fix(render): offline SF fallback tìm font GM có sẵn trong plugin_dirs user (Windows) 2026-08-25 09:45:08 +07:00
admin 51d948fdc9 fix(render): resolve VSTi offline qua plugin_dirs user + plugin_path schema
_resolve_instrument dùng PluginManager() chỉ scan VST_DIR mặc định -> VSTi
trong thư mục user (vd Steinberg\VSTPlugins\DUNE 3.dll) 404 -> render_engine
fallback oscillator synth -> bounce sai tiếng. Dùng get_plugin_manager()
(gộp plugin_dirs user) + resolve_plugin_path (lưới an toàn, chặn ext lạ).
render_offline nhận plugin_path từ schema synth_engine.plugin_path ưu tiên.
2026-08-25 09:24:55 +07:00
admin dd17f87e4e fix(bounce): offline render qua native bridge — bỏ gap realtime, thêm headroom, strip DIAG 2026-08-25 09:11:29 +07:00
admin 4037dbf40d fix(bounce): declare _lastDiag — second ReferenceError in BridgeAudioNode 2026-08-25 08:51:46 +07:00
admin ea3de8b53c fix(bounce): declare _frames/_peak in BridgeAudioNode — ReferenceError killed audio sink 2026-08-25 08:42:52 +07:00
admin cd63ae1901 debug(bounce): capture AUDIO_CB_ERR + BRIDGE_AUDIO_ENTER to find silent onAudio failure 2026-08-25 08:40:48 +07:00
admin 662383e538 debug(bounce): EVT_REG/BRIDGE_EVT_RX/WI_QUERY diag + fix PUSH_SENT typo 2026-08-25 08:11:02 +07:00
admin 8ef1935068 fix(midi): prefix _pushEnter/_pushSent/_pushOk/_pushFail with this. — ReferenceError blocked dispatchMidiEvent (v=202608250116) 2026-08-25 07:58:14 +07:00
admin 388da8b380 fix(midi): _pushEvt -> this._pushEvt — ReferenceError killed pushEvent before PUSH_ROUTE; ?v=202608250054 2026-08-25 07:55:11 +07:00
admin 109a8f5c5b debug(midi): PUSH_CALL fingerprint + PUSH_EXC + ?v=202608250051 — isolate stale-JS vs pushEvent break 2026-08-25 07:52:59 +07:00
admin 60d1eee107 debug(midi): diag PUSH_ROUTE/PUSH_ENTER — pin pushEvent->dispatchMidiEvent break point 2026-08-25 07:36:20 +07:00
admin a00c57d44f fix(ui): black screen — isExportingRef.current = isExporting dat truoc khai bao isExporting (TDZ ReferenceError moi render); bo sync, bounce set true/false tuong minh 2026-08-25 07:31:34 +07:00
admin fb59184dd2 fix(bounce): guardPlay drop het note-on — isPlayingRef bi render ghi de =false khi bounce setState; them isExportingRef vao guardPlay (bounce = dang phat that) + TMR_FIRE diag 2026-08-25 07:28:37 +07:00
admin 51891ac8b9 debug: HB heartbeat 250ms + DISPATCH_ON truoc pushEvent + PUSH_SENT/PUSH_MIDI_TIMEOUT (race 800ms) cho bounce silent — phan biet main-thread block vs Rust hang 2026-08-25 07:23:59 +07:00
admin f8a500c050 debug: diag PUSH_MIDI ok/fail cho push_midi_event (nghi midi queue full — bridge khong nhan note trong bounce) 2026-08-25 07:05:41 +07:00