|
| 1 | +# PR_26146_065 MIDI Studio V2 Control Ownership Matrix |
| 2 | + |
| 3 | +Dynamic repeated controls are grouped by selector/pattern. "Workflow state" means implemented UI state that is not persisted as a song metadata field. |
| 4 | + |
| 5 | +| Control | Owning tab | Editable/read-only | Canonical model field | Wired/unwired | |
| 6 | +| --- | --- | --- | --- | --- | |
| 7 | +| Import JSON Manifest | Global NAV | Action | Imported game manifest / `tools.midi-studio-v2` payload | Wired | |
| 8 | +| Play | Global NAV | Action | Playback from selected canonical song/timeline data | Wired | |
| 9 | +| Stop | Global NAV | Action | Playback state | Wired | |
| 10 | +| Stop All Audio | Global NAV | Action | Preview/playback audio state | Wired | |
| 11 | +| Save Project | Global NAV | Action | Serialized MIDI Studio tool state | Wired | |
| 12 | +| Reset Song Edits | Global NAV | Action | Selected song reset baseline | Wired | |
| 13 | +| Now Playing label | Global NAV | Read-only | Derived selected/playback status | Wired | |
| 14 | +| Dirty state label | Global NAV | Read-only | Derived dirty state | Wired | |
| 15 | +| Tab buttons | Tabs | Action/view state | Active tab view state | Wired | |
| 16 | +| Accordion headers | Current tab/panel | Action/view state | Accordion view state | Wired | |
| 17 | +| Songs list song buttons | Song Setup | Action | `tools.midi-studio-v2.activeSongId` | Wired | |
| 18 | +| Add Song | Song Setup | Action | `music.songs[]`, `tools.midi-studio-v2.activeSongId` | Wired | |
| 19 | +| Name | Song Setup | Editable | `music.songs[].name` | Wired | |
| 20 | +| Id | Song Setup | Read-only derived | `music.songs[].id` derived from Name | Wired | |
| 21 | +| Tempo/BPM | Song Setup | Editable | `music.songs[].studioArrangement.tempo` | Wired | |
| 22 | +| Key | Song Setup | Editable | `music.songs[].studioArrangement.key` | Wired | |
| 23 | +| Style | Song Setup | Editable | `music.songs[].studioArrangement.style` | Wired | |
| 24 | +| Notes | Song Setup | Editable | `music.songs[].director.notes` | Wired | |
| 25 | +| Song Sheet Sections | Song Setup | Editable | `music.songs[].studioArrangement.songSheet.sections` | Wired | |
| 26 | +| Song Sheet Loop sections | Song Setup | Editable | `music.songs[].studioArrangement.songSheet.loopSections` | Wired | |
| 27 | +| Parse Guided Song Sheet | Song Setup | Action | `music.songs[].studioArrangement` derived from Song Sheet | Wired | |
| 28 | +| Song Sheet Sections summary | Song Setup | Read-only derived | Parsed `studioArrangement.songSheet.sections` | Wired | |
| 29 | +| Song Sheet Bars | Song Setup | Read-only computed | Derived from parsed Song Sheet | Wired | |
| 30 | +| Song Sheet Chord count | Song Setup | Read-only computed | Derived from parsed Song Sheet | Wired | |
| 31 | +| Song Sheet Estimated duration | Song Setup | Read-only computed | Derived from tempo and parsed Song Sheet | Wired | |
| 32 | +| Song Sheet Loop sections summary | Song Setup | Read-only derived | Parsed loop section labels | Wired | |
| 33 | +| Song Sheet Warnings | Song Setup | Read-only diagnostics | Parser warning summary | Wired | |
| 34 | +| Loop enabled | Song Setup | Editable | `music.songs[].loop.enabled` | Wired | |
| 35 | +| Loop start | Song Setup | Editable | `music.songs[].loop.startSeconds` | Wired | |
| 36 | +| Loop end | Song Setup | Editable | `music.songs[].loop.endSeconds` | Wired | |
| 37 | +| Undo | Song Setup | Disabled/action placeholder | Future editing history | Unwired/red | |
| 38 | +| Redo | Song Setup | Disabled/action placeholder | Future editing history | Unwired/red | |
| 39 | +| Snapshots | Song Setup | Disabled/action placeholder | Future editing history | Unwired/red | |
| 40 | +| Revision History | Song Setup | Disabled/action placeholder | Future editing history | Unwired/red | |
| 41 | +| Revert To Saved | Song Setup | Disabled/action placeholder | Future editing history | Unwired/red | |
| 42 | +| Autosave | Song Setup | Disabled/action placeholder | Future editing history | Unwired/red | |
| 43 | +| Quick instrument row selection | Octave Timeline | Action | Shared selected instrument id | Wired | |
| 44 | +| Quick Mute | Octave Timeline | Action | `music.songs[].studioArrangement.previewLaneSettings.muted` | Wired | |
| 45 | +| Quick Solo | Octave Timeline | Action | `music.songs[].studioArrangement.previewLaneSettings.soloed` | Wired | |
| 46 | +| Quick Hide/Show | Octave Timeline | Action | `music.songs[].studioArrangement.previewLaneSettings.visible` | Wired | |
| 47 | +| Canvas note cells | Octave Timeline | Editable canvas surface | `music.songs[].studioArrangement.lanes` | Wired | |
| 48 | +| Zoom Out | Octave Timeline | Action/view state | Octave timeline zoom state | Wired | |
| 49 | +| Zoom In | Octave Timeline | Action/view state | Octave timeline zoom state | Wired | |
| 50 | +| Loop playback toggle | Octave Timeline | Editable workflow state | Playback/timing preview loop state | Wired | |
| 51 | +| Section preset buttons | Octave Timeline | Action/workflow state | Timing preview section state | Wired | |
| 52 | +| Custom section select | Octave Timeline | Editable workflow state | Timing preview section state | Wired | |
| 53 | +| Loop start select | Octave Timeline | Editable workflow state | Timing preview region state | Wired | |
| 54 | +| Loop end select | Octave Timeline | Editable workflow state | Timing preview region state | Wired | |
| 55 | +| Jump To Section | Octave Timeline | Action/workflow state | Timing preview section state | Wired | |
| 56 | +| Play Section | Octave Timeline | Action/workflow state | Timing preview playback state | Wired | |
| 57 | +| Play Loop | Octave Timeline | Action/workflow state | Timing preview playback state | Wired | |
| 58 | +| Timing preview Stop | Octave Timeline | Action/workflow state | Timing preview playback state | Wired | |
| 59 | +| Selected timeline details | Octave Timeline | Read-only derived | Selected instrument/cell state | Wired | |
| 60 | +| Instrument row selection | Instruments | Action | Shared selected instrument id | Wired | |
| 61 | +| Add instrument | Instruments | Action | `music.songs[].studioArrangement.lanes`, preview lane settings | Wired | |
| 62 | +| Delete instrument | Instruments | Action | `music.songs[].studioArrangement.lanes`, preview lane settings | Wired | |
| 63 | +| Collapse Instruments panel | Instruments | Action/view state | Accordion view state | Wired | |
| 64 | +| Instrument display name | Instruments | Editable | `previewLaneSettings.displayNames` | Wired | |
| 65 | +| GM Type | Instruments | Editable | `previewLaneSettings.instrumentTypes` | Wired | |
| 66 | +| GM Instrument | Instruments | Editable | `previewLaneSettings.instruments` | Wired | |
| 67 | +| Audible preview | Instruments | Read-only derived | Preview mapping derived from GM instrument | Wired | |
| 68 | +| Volume | Instruments | Editable | `previewLaneSettings.volumes` | Wired | |
| 69 | +| Pan/Balance | Instruments | Editable | `previewLaneSettings.pans` | Wired | |
| 70 | +| Mute default | Instruments | Editable | `previewLaneSettings.muted` | Wired | |
| 71 | +| Solo default | Instruments | Editable | `previewLaneSettings.soloed` | Wired | |
| 72 | +| Octave range low/high | Instruments | Editable | `previewLaneSettings.octaveRanges` | Wired | |
| 73 | +| Transpose | Instruments | Editable | `previewLaneSettings.transposes` | Wired | |
| 74 | +| Velocity | Instruments | Editable | `previewLaneSettings.velocities` | Wired | |
| 75 | +| Duration | Instruments | Editable | `previewLaneSettings.durations` | Wired | |
| 76 | +| Audition keyboard keys | Instruments | Action | Preview Synth audition action | Wired | |
| 77 | +| Reverb | Instruments | Disabled field | Future effect setting | Unwired/red | |
| 78 | +| Chorus | Instruments | Disabled field | Future effect setting | Unwired/red | |
| 79 | +| Delay | Instruments | Disabled field | Future effect setting | Unwired/red | |
| 80 | +| Filter | Instruments | Disabled field | Future effect setting | Unwired/red | |
| 81 | +| Brightness/Tone | Instruments | Disabled field | Future effect setting | Unwired/red | |
| 82 | +| MIDI Channel | Instruments | Disabled field | Future advanced MIDI setting | Unwired/red | |
| 83 | +| GM Program | Instruments | Disabled field | Future advanced MIDI setting | Unwired/red | |
| 84 | +| Controller Values | Instruments | Disabled field | Future advanced MIDI setting | Unwired/red | |
| 85 | +| Grid sections | Auto-Create Parts | Read-only derived | Derived from `studioArrangement.sections` | Wired | |
| 86 | +| Beats/bar | Auto-Create Parts | Editable | `music.songs[].studioArrangement.beatsPerBar` | Wired | |
| 87 | +| Subdivision | Auto-Create Parts | Editable | `music.songs[].studioArrangement.subdivision` | Wired | |
| 88 | +| Instrument/lane type helper | Auto-Create Parts | Editable workflow state | Helper lane generation selection | Wired | |
| 89 | +| Chords source text | Auto-Create Parts | Editable | `music.songs[].studioArrangement.lanes.chords` | Wired | |
| 90 | +| Bass source text | Auto-Create Parts | Editable | `music.songs[].studioArrangement.lanes.bass` | Wired | |
| 91 | +| Pad source text | Auto-Create Parts | Editable | `music.songs[].studioArrangement.lanes.pad` | Wired | |
| 92 | +| Lead source text | Auto-Create Parts | Editable | `music.songs[].studioArrangement.lanes.lead` | Wired | |
| 93 | +| Drums source text | Auto-Create Parts | Editable | `music.songs[].studioArrangement.lanes.drums` | Wired | |
| 94 | +| Generate Bass From Chords | Auto-Create Parts | Action | `studioArrangement.lanes.bass` | Wired | |
| 95 | +| Generate Pad From Chords | Auto-Create Parts | Action | `studioArrangement.lanes.pad` | Wired | |
| 96 | +| Generate Arpeggio From Chords | Auto-Create Parts | Action | `studioArrangement.lanes.lead` | Wired | |
| 97 | +| Generate Basic Drums | Auto-Create Parts | Action | `studioArrangement.lanes.drums` | Wired | |
| 98 | +| Normalize Grid | Auto-Create Parts | Action | `music.songs[].studioArrangement` | Wired | |
| 99 | +| MIDI source path | MIDI Import | Read-only | `music.songs[].sourceMidi` | Wired | |
| 100 | +| Instrument set | MIDI Import | Read-only | `music.songs[].instrumentSet` | Wired | |
| 101 | +| Import MIDI Source | MIDI Import | Action | Source MIDI normalization into `studioArrangement` | Wired | |
| 102 | +| Inspect MIDI Source | MIDI Import | Action | MIDI source inspection diagnostics | Wired | |
| 103 | +| MIDI source file picker | MIDI Import | Hidden file input | Import-selected MIDI file | Wired | |
| 104 | +| MIDI source details | MIDI Import | Read-only derived | MIDI import metadata/status | Wired | |
| 105 | +| Enable MIDI Input | MIDI Import | Disabled action placeholder | Future MIDI input | Unwired/red | |
| 106 | +| Select MIDI Device | MIDI Import | Disabled select placeholder | Future MIDI input | Unwired/red | |
| 107 | +| Record MIDI | MIDI Import | Disabled action placeholder | Future MIDI input | Unwired/red | |
| 108 | +| Playback state | Diagnostics | Read-only derived | Preview/playback status | Wired | |
| 109 | +| JSON Details | Diagnostics | Read-only derived | Serialized MIDI Studio payload | Wired | |
| 110 | +| Copy JSON | Diagnostics | Action | Serialized MIDI Studio payload | Wired | |
| 111 | +| Timeline Diagnostics | Diagnostics | Read-only derived | Current instrument grid summary | Wired | |
| 112 | +| Audio Diagnostics | Diagnostics | Read-only derived | Preview/playback/audio capability status | Wired | |
| 113 | +| Rendered Preview diagnostics | Diagnostics | Read-only derived | Current rendered preview state | Wired | |
| 114 | +| Rendered Export Targets diagnostics | Diagnostics | Read-only derived | `music.songs[].rendered` display only | Wired | |
| 115 | +| Game Music Director metadata | Diagnostics | Read-only derived | `music.songs[].director` display only | Wired | |
| 116 | +| Status log | Diagnostics | Read-only | Tool status output | Wired | |
| 117 | +| Clear status | Diagnostics | Action | Status log content | Wired | |
| 118 | +| Output Type | Export | Disabled/unwired select | Future rendered audio renderer format | Unwired/red | |
| 119 | +| Save WAV/MP3/OGG | Export | Unwired action | Future rendered audio renderer | Unwired/red | |
| 120 | +| Render Source details | Export | Read-only derived | Selected song/event summary | Wired | |
| 121 | +| WAV target path | Export | Editable | `music.songs[].rendered.wav` | Wired | |
| 122 | +| MP3 target path | Export | Editable | `music.songs[].rendered.mp3` | Wired | |
| 123 | +| OGG target path | Export | Editable | `music.songs[].rendered.ogg` | Wired | |
| 124 | +| SoundFont | Export | Disabled select placeholder | Future render setting | Unwired/red | |
| 125 | +| Render Quality | Export | Disabled select placeholder | Future render setting | Unwired/red | |
| 126 | +| Sample Rate | Export | Disabled select placeholder | Future render setting | Unwired/red | |
| 127 | +| Normalize Volume | Export | Disabled action placeholder | Future render setting | Unwired/red | |
| 128 | +| Export Stems | Export | Disabled action placeholder | Future render setting | Unwired/red | |
| 129 | +| Loop Export | Export | Disabled action placeholder | Future render setting | Unwired/red | |
| 130 | +| Export Status | Export | Read-only derived | Render/export status messages | Wired | |
| 131 | +| Export JSON | Export | Action | Serialized MIDI Studio tool state | Wired | |
0 commit comments