# 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 - [x] 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). - [x] 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. - [x] 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). - [x] 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`. - [x] 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)