Files
SonicForgeStudio/IMPLEMENT_PHASE_3.md
T

2.4 KiB

IMPLEMENT_PHASE_3 — Nhật ký thực hiện BIG_PHASE_3

Cập nhật theo từng phase. Trạng thái: ✅ hoàn thành · 🔄 đang làm · ⏳ chưa làm · ⚠️ cần xác nhận/review Repo: C:/Users/locpham/SonicForgeStudio · branch: standalone-shm-bridge

TỔNG QUAN

Phase Nội dung Trạng thái Ghi chú
1 Fix Export MIDI ✅ backend + frontend + build + verify xong (commit riêng)
2 Fix Export Mix + loop ⏳
3 FX CHAIN (hợp nhất modal) ⏳
4 Nút FX TCP → FX CHAIN ⏳ wiring đã có, cần verify
5 Virtual MIDI Keyboard ⏳
6 Chords Panel ⏳ AI search defer
7 Build tổng + verify ⏳

PHASE 1 — FIX EXPORT MIDI

Đã làm

  • Khảo sát: 2 nơi export MIDI đều dùng blob download (a.click() + URL.createObjectURL) — nghi vấn WebView2 chặn (đã fix bằng server download, verify chạy thật OK).
  • Backend: thêm POST /api/v1/export/midi vào app/api/v1/audio.py — sinh file .mid format 1 (stdlib thuần), lưu vào PROCESSED_DIR, trả file_id + download_url (download qua GET network — pattern đã chạy ổn định). Bỏ track không nốt; velocity 0..1 → scale 1..127.
  • Frontend: thêm helper serverDownloadMidi(payload, filename) (POST endpoint → anchor download ${API_BASE_URL}${download_url}); đổi triggerMidiExport() (File menu, bỏ velocity *100, bỏ rest-track pitch 0) + nút piano roll "Export MIDI" (payload 1 track, guard không nốt).
  • Build: node build.mjs OK + PyInstaller rebuild engine + copy dist/daw_engine/* sang src-tauri/target/release/daw_engine/ + bump cache-bust app.precompiled.js?v=202608211103.
  • Verify: chạy app thật (engine mới), POST /export/midi → GET download → parse bytes: format 1, division 480, đủ track, velocity đúng (0.5→64, 1.0→127, 0.8→102), track rỗng bị bỏ (2→1 track).

Tồn tại / cần bổ sung

  • (trống)

Cần xác nhận (review)

  • (trống)

PHASE 2 — FIX EXPORT MIX + LOOP

(chưa bắt đầu)

PHASE 3 — FX CHAIN

(chưa bắt đầu)

PHASE 4 — NÚT FX TCP

(chưa bắt đầu)

PHASE 5 — VIRTUAL MIDI KEYBOARD

(chưa bắt đầu)

PHASE 6 — CHORDS PANEL

(chưa bắt đầu)

PHASE 7 — BUILD TỔNG & VERIFY

(chưa bắt đầu)