admin
59cf77bcbc
fix(midi): route MIDI live via masterBus, fix media explorer drag, add action logging
...
- TrackInstrument: gate native live path (SF/VSTi WASAPI bridge bypassed
masterBus -> mastering FX + main out VU dead). Fallback to SonicSF WASM
through masterBus.input; native kept for offline render only.
- MEDIA_LIBRARY_SAMPLES: rename MIDI_Loop_02_Bass/03_Lead/05_Bass to match
actual /static/midi files (drag was 404 -> parse error).
- Add SonicAppLogger (console + POST /api/v1/logs) wired to: instrument load
error, VSTi autosample fail, MIDI item -> mastering fx chain, play -> main
out, drag MIDI errors (media explorer + window explorer).
- Add backend /api/v1/logs endpoint (server-side log, no DB).
2026-08-11 21:48:06 +07:00
admin
255e8586bc
connect solution into app: VSTi live native (vst3 attach/vst2 bridge) with WASM autosample fallback, VST GUI window (Bug 1), native-first track instrument
2026-08-11 20:35:53 +07:00
admin
371b1ca665
T16: autosample VST2 via native bridge + SF2/SF3 export hoàn chỉnh, UI chip size/note_count, re-sample on preset change, tests
2026-08-11 18:04:34 +07:00
admin
0af834a8fa
T15: drop WebAudio master for tracks - native master gain + track gain/pan IPC (SF/VST2/VST3 bridges), NativeAudioService + /api/v1/native router, native-first TrackInstrument, test matrix 8 passed
2026-08-11 17:33:12 +07:00
admin
9fc5498999
T7: hardware MIDI keyboard route qua UnifiedMidiRouter (3 nguon 1 router)
2026-08-11 15:57:12 +07:00
admin
9dcc37e037
T6: scheduler items qua router - note-on/off TIMELINE_SCHEDULER (startTime audio clock support trong router+TrackInstrument); 8 site scheduler (timeline/section/local/piano-roll/ghost) route UnifiedMidiRouter, fallback SonicSF, tracker doi xung qua note-off setTimeout
2026-08-11 15:48:21 +07:00
admin
2001d1c601
T5: unified MIDI routing - thay native preview bang UnifiedMidiRouter + TrackInstrument (per-track FluidSynth channel); keybed/click/draw/hardware MIDI note qua router, fallback SonicSF; _panicMidi stop moi voice; bo _nativeSfPreviews/playNativeSfNote/stopNativeSfNote/stopAllNativeSfNotes/_sfWasmFallbackNote
2026-08-11 15:45:53 +07:00
admin
ee30ca097e
T4: UnifiedMidiRouter - 1 diem dispatch MIDI moi nguon
...
UnifiedMidiEvent (trackId, channel, command, pitch clamp 0-127, velocity
normalize float->int 1-127, sourceType, timestampNs) + UnifiedMidiRouter:
engineRegistry Map<trackId, engine> (route theo track), dispatchMidiEvent,
activeVoiceTracker key trackId_channel_pitch (dem note-on/off dung - het
stuck notes, note-off cuoi moi tat voice), panicAllNotesOff. Chua noi
vao app (T5-T7). Test node: pitch clamp, velocity normalize, tracker,
panic clear - xanh.
2026-08-11 15:38:29 +07:00
admin
fa2f96dbe3
T3: Autosample UX - fail reason + toast + pre-warm feedback
...
vstiAutosample: fail map thanh object {ts, reason} (cooldown check
object-aware), recordFail o API-missing/response loi/catch, export
failReasonFor. soundfontPlayer: toast ly do khi ensure null (throttle
10s) roi fallback oscillator. app.jsx: pre-warm VSTi hien thi toast khi
autosample fail.
2026-08-11 15:36:10 +07:00
admin
cadb5402a3
feat: VSTi live playback 100% client-side (không Carla) — autosample SF2 backend (pedalboard) → FluidSynth WASM qua masterBus → mastering → main out; SonicVstiAutosample ensure+dedup+cooldown; runtime gating __enableCarlaLivePlayback; âm bắt qua ensureMidiCapture → clientSideExport
2026-08-11 14:28:42 +07:00
admin
7293d7ac7e
feat: VSTi autosample -> SF2/SF3 (tools/autosample_vsti.py) + bit_depth 16/24/32 render/export WAV (render_engine, plugins API, audio_editor, app.jsx encoders) + tests + task/walkthrough docs (53)
2026-08-11 12:09:02 +07:00
admin
f8cb2c6a5e
Sửa lỗi trực tiếp trên window
2026-08-11 09:51:13 +07:00
3dtours
aa1cd8d5de
fix: 3 bug standalone — soundfont preview/play, Carla bridge play item, realtime sync LAN/Tauri
...
Bug1: dispatcher CREATE_MIDI_ITEM track_id number vs state string -> String(); play+preview native soundfont verified.
Bug2: Carla play item — chờ OSC ready (poll carla-status, queue nốt khi cold start), chống spawn trùng (carla-status dò port bind, open-in-carla skip khi đã chạy).
Bug3: realtime sync — GET /temp/revision (updated_at+client_id), poll 3s, apply qua deserializeProjectFromSchema; hash-skip autosave + client_id chống ping-pong.
2026-08-10 22:10:12 +07:00
3dtours
a0d8725541
feat: tách luồng âm instrument theo môi trường — docker dùng FluidSynthWASM, standalone dùng native pyfluidsynth (+Carla VSTi)
...
- runtime: detect()/capabilities() trả environment (docker|standalone)
- vst_engine: render_soundfont_midi_to_audio (pyfluidsynth native, event-stream, release tail)
- plugins: POST /soundfont-render — render MIDI notes -> WAV (auth, fallback default SF)
- frontend: SonicRuntime.environment + dataset.environment; app.jsx route preview/transport:
standalone+SF -> soundfont-render WAV (playNativeSfNote/scheduleNativeSfItem),
docker giữ WASM, VSTi standalone giữ Carla bridge
2026-08-10 20:38:54 +07:00
3dtours
61cb4b846f
FIX: 11 bugs bảo mật/ổn định (static mount chặn dotfile, delete traversal, cleanup giữ clips serverFileId, upload whitelist, password strength, auth audio endpoints, pedalboard==0.9.19, vendor CDN local) + FEATURE: Carla bridge preview/export MIDI notes âm VSTi (POST /midi-render, /carla-play-notes, nút Preview VSTi/Export MIDI->Audio; pedalboard 0.9.19 raw MIDI bytes; SONICFORGE_STORAGE_DIR cô lập test storage)
2026-08-10 18:46:54 +07:00
3dtours
75eba27dcf
FIX: (1) masteringConnected default true + ensureMasteringRouting/refreshCarlaStatus ở mọi đường play — MIDI item/preview qua mastering ngay khi chạy app; (2) _instrumentEpoch chống cache stale + retry bank 0 — hết chọn Synth String nghe Piano; (3) /carla-status + auto-open Carla + route exclusive chỉ khi Carla sống (fallback FluidSynth tránh câm); (4) keybed giữ note theo thời gian bấm (auto-off 5s phòng hờ, mouseup dừng ngay)
2026-08-10 09:51:58 +00:00
3dtours
f492104869
FIX: (1) MIDI item route CHỈ qua Carla bridge khi VSTi loaded (bỏ FluidSynth GM sai âm) ở mọi đường playback + ghosts; (2) updateSfRouting sync route gains nhánh gainNode + ensureMasteringRouting force-sync mọi node — preview MIDI keyboard qua mastering không cần bật/tắt power; (3) stopNote/panic dừng fallback oscillator theo channel:pitch — hết âm kêu liên tục sau khi thả phím
2026-08-10 09:07:42 +00:00
3dtours
c08233a163
FIX: 6 lỗi âm thanh/Carla/temp-save/Ctrl-S/FX Chain Carla bridge
...
- Soundfont preview: hủy note đang chờ load soundfont (stopNote/stopAll/panic) — hết âm loop không dừng với MIDI Keyboard; preview dùng channel riêng (applyAITrackInstrument) — hết sai instrument
- Carla bridge: endpoint /carla-stop (all-notes-off OSC + terminate process) + stopBridge() khi track chuyển VSTi -> soundfont — hết âm play qua Carla cũ
- MIDI items play qua Carla khi VSTi loaded: scheduleCarlaNote route vào startTrackPlayback + startLocalTrackPlayback + ghost notes
- Tự động lưu temp khi tắt app: beforeunload/pagehide sendBeacon + autosave 30s + ghi storage/temp/autosave.json + khôi phục khi load lại
- Ctrl-S: desktop -> save-to-disk (Documents/SonicForgeDAW/Projects); docker -> Cloud/local
- FX Chain (Mastering + FX Rack): module Carla Bridge (VST FX) — load/openInCarla + stop/unload, pass-through trong graph
2026-08-10 05:34:32 +00:00
3dtours
1cf5b18492
FIX: sửa lỗi không load soundfont trên window, MIDI item không play được qua carla
2026-08-10 10:50:02 +07:00
3dtours
1db892bb99
FIX: sửa lỗi không load instrument của soundfont trên window
2026-08-10 10:04:54 +07:00
3dtours
aa32272f36
FIX: Carla sử dụng bridge
2026-08-10 07:57:26 +07:00
3dtours
cc8b286f6c
feat: native folder picker (Explorer) + Synth liet ke VSTi da scan + fix VU leak (ban 1.1.4)
...
1) Folder picker dung WINDOW EXPLORER (khong prompt nhap tay):
- src-tauri/src/lib.rs: IPC bridge — thread watcher ipc/pick_dir.request
-> run_on_main_thread -> dialog().file().blocking_pick_folder()
(tauri-plugin-dialog = IFileDialog/Explorer) -> ghi pick_dir.response;
ghi marker tauri_bridge_ready luc setup.
- app/api/v1/plugins.py: POST /pick-dir (def sync -> threadpool, khong
auth) — uu tien Tauri bridge, fallback PowerShell FolderBrowserDialog
(Win) / osascript (macOS) / zenity-kdialog (Linux).
- app.jsx pickPluginFolder: 1) pickPluginDir (native) -> 2) __TAURI__
invoke -> 3) in-app browser -> 4) prompt (cuoi cung).
2) Nut Synth liet ke VSTi da scan (truoc day rong):
- Root: list_available() chi quet settings.VST_DIR (mac dinh
/opt/daw_engine/vst3) trong khi Plugin Manager scan plugin_dirs user.
- plugins.py list_plugins: gop _scan_vst_in_dirs(plugin_dirs) (file
.vst3/.dll/.so + folder X.vst3 Windows).
- vst_engine.py: PluginManager.extra_vst_dirs + _scan_plugins quet them
(ca folder .vst3) + get_plugin_manager doc plugin_dirs.json -> load_vst
tim thay plugin user scan khi render.
3) VU meter leak: section-tab play -> sang MAIN SESSION -> track MAIN van
animate theo am section.
- Root: VU tick fallback _sub_ (sub-node section co analyser) chay cho
ca canvas MAIN; startSubTabPlayback ghi node o key track MAIN.
- Fix: fallback _sub_ chi ap dung cho canvas SECTION (isSessVu); 2 trigger
piano-roll them prefix _sess_ theo st.parent_tab_id.
Verify: 86 tests pass; engine frozen STARTUP 1.35s, 1 engine, 0 spawn '-c';
pick-dir IPC mock tra dung path; scan VST user dirs OK.
2026-08-09 13:05:53 +00:00
3dtours
5ae4fd6149
fix: Plugin Manager '+ Add Directory' khong hien folder picker (ban 1.1.3)
...
Nguyen nhan: UI that chay tren http://127.0.0.1:8000 (engine) nen
window.__TAURI__ KHONG ton tai (Tauri chi inject vao trang no serve -
src-tauri/ui/index.html chi la loader redirect). Fallback window.prompt
KHONG hoat dong trong WebView2 (no-op) -> khong co picker nao xuat hien.
Fix: in-app folder browser qua backend (co san /media/computer +
/media/browse trong media.py, auth qua apiRequest):
- services/api.js: them browseComputer() + browseDir(path)
- app.jsx PluginManagerModal: state pmPicker + overlay UI (roots/drives
-> dirs -> 'Len' (parent) -> 'Chon thu muc nay' -> setPmDirs)
- Thu tu uu tien: __TAURI__.core.invoke('plugin:dialog|open') -> in-app
browser -> prompt (fallback cuoi, browser thuan khong phai WebView2)
- Bump ?v= cache-bust index.html (api.js + app.precompiled.js)
Verify tren engine frozen: /media/computer tra roots, /media/browse tra
{path, parent, dirs} - dir picker flow OK. Skill da ghi lai:
~/.hermes/skills/software-development/sonicforge-daw-engine-packaging
2026-08-09 11:55:16 +00:00
3dtours
8dd00cc2ea
FEAT: Plugin Manager folder picker + scan dirs (Windows/macOS), docker .env paths, status bar adaptive tips, DSP Tool vao sub-tab audioclip
...
- Plugins Manager (Tools menu): Browse folder (Tauri dialog + fallback paste path), Save & Scan VST/SoundFont dirs -> plugin_dirs.json (user override, env la base)
- Docker: VST_DIR/SOUNDFONT_DIR/PIANOBK_DIR tu .env/docker-compose mount vao container + env cho engine/celery
- Status bar: bo label 'Scroll: Zoom' -> Adaptive tips (prHint + fallback text)
- DSP Tool: move vao SUB-TAB editor audioclip (Phase Inv / Swap L/R / Reverse + apply vung chon/ca clip)
- Tauri: them tauri-plugin-dialog + dialog:default permission cho folder picker
2026-08-09 02:44:29 +00:00
3dtours
4f34491f3e
FIX: sửa lỗi hiển thị animation của VU meter khi play MIDI
2026-08-07 15:57:49 +07:00
3dtours
454dd91f96
FIX: Đã fix cross-machine (v202608060700)
2026-08-05 22:02:43 +07:00
3dtours
b3ced7a7b3
FIX: Clone AI Var kế thừa midiChannel của track gốc → 2 track DÙNG CHUNG channel
2026-08-05 15:49:44 +07:00
3dtours
4233c1eeda
FIX: Piano roll track 4 phát âm thanh instrument track 3
2026-08-05 15:17:13 +07:00
3dtours
d37f4e7557
FIX: Piano roll tab không xuất âm thanh qua mastering chain được recovery
2026-08-05 12:30:42 +07:00
3dtours
55d3464b1e
FIX: Piano roll tab không xuất âm thanh qua mastering chain
2026-08-05 12:10:50 +07:00
3dtours
856a8183b6
FIX: lỗi mở MIDI item ở trong PIANO ROLL TAB là bị lỗi âm thanh của main session
2026-08-04 22:07:48 +07:00
3dtours
0272912cff
FIX: khi click vào track number thì bị mất âm thanh, cho phép lưu màu của track
2026-08-04 16:43:44 +07:00
3dtours
c047934fc4
IMPROVE: cài đặt thêm tool để có thể phối lại cho đoạn midi item hoặc viết thêm cho nó
2026-08-04 15:23:11 +07:00
3dtours
e5b4321a55
FEAT: thêm FX RACK PANEL cho track, áp dụng cho midi item và audioclip item
2026-08-03 20:25:27 +07:00
3dtours
a9da813cb1
FEAT: thêm nút bypass cho track strip để bypass không qua mastering panel
2026-08-03 15:47:10 +07:00
3dtours
6018263044
fix: Lỗi không có âm thanh - quay lại ScriptProcessor vĩnh viễn (worklet push-model bị nghẽn main thread -> câm)
2026-08-03 12:13:26 +07:00
3dtours
36edc9daca
fix: bật AudioWorklet hết deprecation ScriptProcessor + signature guard applyMasteringSettings hết BiquadFilterNode state is bad
2026-08-03 12:11:11 +07:00
3dtours
71278f2aba
fix: mất soundfont khi ARM - clamp tham số master chain chặn NaN làm biquad state bad, toggleMasteringOnMaster idempotent, loadSoundFont retry khi lỗi thoáng qua
2026-08-03 11:44:13 +07:00
3dtours
71c3bafdb5
fix: không có âm thanh khi play MIDI item - quay lại ScriptProcessor làm renderer mặc định (worklet gây lỗi thiết bị), giữ worklet mono-safe + cache-busting
2026-08-03 11:24:59 +07:00
3dtours
34ad02dd6b
fix: crash AudioWorklet khi output mono - xử lý mọi số channel trong fluidsynth-bridge + ép stereo outputChannelCount=2
2026-08-03 11:20:30 +07:00
3dtours
47b1633bd3
fix: ReferenceError assignTrackMidiChannel - chuyển allocator channel lên module-level cho PianoRollTabEditor + bật AudioWorklet thay ScriptProcessor
2026-08-03 11:17:19 +07:00
3dtours
9b6de7f857
fix: sfload reset_presets=0 giữ nguyên instrument các track khác; preloadTrackInstruments module-level (sửa ReferenceError reload); truyền props cho ProfileModal; lọc warning No preset found channel 9
2026-08-03 11:00:08 +07:00
3dtours
25471e6ea5
fix: lag khi ARM sau reload + câm sau vài lần nhấn MIDI - dedup loadSoundFont (1 font=1 sfload, tránh cạn heap 256MB) + preload instrument khi mở/khôi phục dự án
2026-08-03 10:43:26 +07:00
3dtours
0dc95386f2
fix: ARM nhiều track phát sai instrument - synth_engine của track là nguồn quyết định thay vì channel state (bỏ che mask khi channel giữ instrument cũ/trùng)
2026-08-03 10:33:40 +07:00
3dtours
d8227904b6
fix: MIDI ARM không phát âm thanh sau khi load instrument - lazy-load soundfont trong playNote + giữ channel khi selectInstrument truyền channel tường minh
2026-08-03 10:23:32 +07:00
3dtours
73025fc387
fix: instrument SF3/Sonatina không phát âm thanh - chuyển SF3->SF2, bỏ convert SF2->SF3, sửa converter
2026-08-02 21:44:49 +07:00
3dtours
7e5f406226
fix: crackling - time-based render buffer, no voice stacking, lower synth gain/verbose
2026-07-31 10:52:22 +07:00
3dtours
ad5cda5a40
fix: reduce MIDI playback crackling (no per-note prog reload, underrun-proof render loop, gentle stopAll)
2026-07-31 10:49:31 +07:00
3dtours
223254eb07
feat: per-MIDI-item focus brightness in piano roll
2026-07-31 09:59:14 +07:00
3dtours
eb370319cb
feat: piano roll shows all same-track MIDI items notes as active
2026-07-31 09:46:55 +07:00