From 3c4f106e14ca8d1186ad4266b2b144403074e212 Mon Sep 17 00:00:00 2001 From: 3dtours Date: Fri, 31 Jul 2026 09:26:51 +0700 Subject: [PATCH] =?UTF-8?q?FIX:=20l=E1=BB=97i=20khi=20play=20MIDI=20th?= =?UTF-8?q?=C3=AC=20cho=20ph=C3=A9p=20active=20multi=20track=20kh=C3=A1c?= =?UTF-8?q?=20realtime?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- wiki.md | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/wiki.md b/wiki.md index a2f032f..2db5c6e 100644 --- a/wiki.md +++ b/wiki.md @@ -962,3 +962,15 @@ - **Tóm tắt thay đổi:** Click vào track name ở cột trái → tự động play ngay MIDI notes của track đó (nếu có piano roll tab). Dùng `schedulePianoRollMidi(prTab, 0)` + `startSubTabPlayback(prTab, 0)` + `stopAllPlayback()`. - **Các file ảnh hưởng:** `app/static/js/app.jsx`, `app/static/js/app.precompiled.js` - **Ghi chú/Test (nếu có):** Hard reload để load JS mới. Click track có MIDI notes → nghe thấy phát ngay. + +### [2026-07-31 08:50] Task: Piano roll instrument load + multitrack play select +- **Tóm tắt thay đổi:** + 1. `handleEditMidiInTab`: khi mở piano roll tab bằng double-click MIDI item → lưu `instrumentId`, `synth_engine` vào tab, fallback `instrumentProgram` từ `synth_engine.soundfont_program`, gọi `SonicSF.selectInstrument` để load nhạc cụ của track. + 2. Đổi `activePlayTrackIds` từ single value sang mảng → click nhiều nút tên track ở cột trái piano roll để active nhiều track cùng lúc play multitrack. +- **Các file ảnh hưởng:** `app/static/js/app.jsx`, `app/static/js/app.precompiled.js` +- **Ghi chú/Test (nếu có):** Hard reload. Test: double-click MIDI item có nhạc cụ → play đúng nhạc cụ. Click nhiều track name → play multitrack. + +### [2026-07-31 09:20] Task: Multitrack play select plays immediately +- **Tóm tắt thay đổi:** Thêm `handlePianoRollRealtimePlay(trackIds)` ở App: khi click nút track name trong piano roll → tính ngay ghost layers cho các track được chọn → `stopAllPlayback()` + `SonicSF.stopAll()` → `schedulePianoRollMidi(playTab, offset)` → play ngay realtime không cần bấm play. +- **Các file ảnh hưởng:** `app/static/js/app.jsx`, `app/static/js/app.precompiled.js` +- **Ghi chú/Test (nếu có):** Hard reload. Click track button → nghe ngay. Click thêm/bớt track → re-schedule lại tức thì.