2.4 KiB
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/midivàoapp/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}); đổitriggerMidiExport()(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.mjsOK + PyInstaller rebuild engine + copydist/daw_engine/*sangsrc-tauri/target/release/daw_engine/+ bump cache-bustapp.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)