fix: multi-track ARM routes MIDI to all armed tracks
- Use filter(t => t.isArmed) instead of find() to route MIDI input to ALL armed tracks simultaneously - Use getTrackMidiChannel per track instead of raw MIDI hardware channel (msg.data[0] & 0x0F) - NoteOff, CC, PitchBend also routed to each armed track's dedicated channel - Previous code sent to channel 0 + first armed track only
This commit is contained in:
@@ -491,3 +491,9 @@
|
||||
- **Các file ảnh hưởng:** `app/static/js/services/soundfontPlayer.js`
|
||||
- **Ghi chú/Test (nếu có):** `npm run build` pass. Cần test: Track 2 set instrument, Track 1 không set → Track 1 play sine wave (không phải SF program 0 của Track 2).
|
||||
---
|
||||
|
||||
### [2026-07-27 21:29] Task: Fix multi-track ARM only first track produces sound
|
||||
- **Tóm tắt thay đổi:** ONMIDIMESSAGE handler (`app.jsx:6954-6998`) dùng raw MIDI hardware channel (`msg.data[0] & 0x0F`) thay vì dedicated channel của track, và `find(t => t.isArmed)` chỉ lấy track ARM đầu tiên. Fix: dùng `filter(t => t.isArmed)` + `getTrackMidiChannel` cho từng track — MIDI Note On/Off, CC, Pitch Bend đều route tới ALL armed tracks trên dedicated channel của mỗi track.
|
||||
- **Các file ảnh hưởng:** `app/static/js/app.jsx` (lines 6960-7040), `app/static/js/app.precompiled.js`
|
||||
- **Ghi chú/Test (nếu có):** `npm run build` pass. Cần test: ARM cả 2 track, bấm phím MIDI → cả 2 track đều phát ra instrument riêng. NoteOff gửi đúng channel.
|
||||
---
|
||||
|
||||
Reference in New Issue
Block a user