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 |
|
3dtours
|
1790f743d6
|
fix: add 400ms decay to MIDI noteoff for natural release
|
2026-07-31 08:26:06 +07:00 |
|
3dtours
|
9c487614f1
|
feat: auto-save 5min + backup 30min + backup management UI
- project_backups table + DB migration
- Backup CRUD API endpoints with auto cleanup (5-20 retention)
- setInterval 5min save + 30min backup in browser
- ProfileModal: backup list, delete, retention slider, cleanup button
|
2026-07-30 20:48:45 +07:00 |
|
3dtours
|
58a294d845
|
IMPROVE: cho phép lưu dự án và phục hồi dự án vừa tắt
|
2026-07-30 20:47:44 +07:00 |
|
3dtours
|
64f43cd5ad
|
IMPROVE: cho phép thay đổi instrument realtime khi đang playback
|
2026-07-30 17:32:57 +07:00 |
|
3dtours
|
a9be38b76f
|
IMPROVE: hướng dẫn AI tạo nhạc đầy đủ số bars và tracks theo yêu cầu
|
2026-07-30 16:39:28 +07:00 |
|
3dtours
|
6e1f116658
|
FIX: sửa MASTERING PANEL có tác dụng với mainout
|
2026-07-30 11:06:31 +07:00 |
|
3dtours
|
2c55db372a
|
FIX: sửa volume main out
|
2026-07-30 10:05:11 +07:00 |
|
3dtours
|
d4ad3bc1f7
|
feat: add comprehensive Ctrl-Z/Ctrl-Y undo/redo engine for MAIN SESSION and SECTION-TAB
|
2026-07-29 16:05:43 +07:00 |
|
3dtours
|
cff3950670
|
feat: AI Copilot suggestion chips + typeahead dropdown
- Suggestion chips bar: context-aware (amber for rearrange, indigo for creation)
- Typeahead dropdown: keyword matching on ≥2 chars, Tab to select
- getSelectedMidiItemInfo helper for context detection
- Backend: 4 rearrange presets in ai_presets.py
- PromptTemplateManager: getContextualSuggestions(hasSelectedItem)
|
2026-07-28 11:20:26 +07:00 |
|
3dtours
|
3f7abe0c95
|
feat: AI Rearrange Scenario Detection from spec 45_SCENARIAO_AI
- 9 rearrange scenarios with keyword matching (arpeggio, harmonies,
syncopation, walking bass, jazz, synthwave, cinematic, simplify, chromatic)
- detectRearrangeScenario() maps user prompt to specific technique rules
- buildRearrangeMessage auto-injects scenario-specific technique guidance
- 9 rearrange presets added to PromptTemplateManager (Rearrange / Variation)
|
2026-07-28 11:03:26 +07:00 |
|
3dtours
|
2eb327056d
|
fix: MIDI Rearrange — selected item triggers dedicated tool flow
- midiExtractor.js: extractSelectedMIDIContext with note name conversion
- aiGateway.js: REARRANGE_TOOL_SPEC + buildRearrangeMessage
- dawCommandDispatcher.js: register REARRANGE_MIDI_MELODY command
- app.jsx: handleAISend detects selected MIDI item → rearrange flow
- rearrangeMidiMelody handler places A/B track below source track
|
2026-07-28 10:54:35 +07:00 |
|
3dtours
|
421535ca0e
|
feat: AI MIDI Prompt Template & Preset Engine
- promptTemplateManager.js: standalone service with keyword scoring, CRUD, fav toggle
- ai_presets.py: backend CRUD router (JSON file, auth isolation)
- AIPresetModal: PromptTemplateManager, star/fav column, backend API sync
- Piano Roll AI: preset matching support
- 7 tests: matching, CRUD, anonymous auth, user isolation
|
2026-07-28 10:42:30 +07:00 |
|