b42190e6bc
- PianoRollTabService: getParentTrackByItemId, buildActiveScope, getTrackMidiChannel helpers - parent_track_id on all MIDI items for reverse track lookup - handleSwitchMidiItem uses active_scope pattern - Toolbar shows parent track context labels - Channel assignment simplified to trackIndex % 16 - All playNote calls use unified getTrackMidiChannel