DRAFT: Multi MIDI File Import - #564
Conversation
- Pad grid (bottom-to-top, matching hardware layout) with BPM, colors, active fill - Active pad highlighted with color fill + pulsing orange border, updates every 2s - Storage, memory, and CPU load bars - Sets table with BPM, key, mode, Camelot code - Camelot key filter buttons - Dark/light theme toggle with localStorage persistence - /overview/api/data, /active-slot, /system endpoints - Uses os.getxattr() instead of subprocess/getfattr
- Update base_handler.py to generate semi-transparent RGBA backgrounds (20% opacity) with solid borders for occupied pads, matching Overview page behavior - Add shared CSS variables (--pg-*) to style.css for consistent theming - Add disabled pad opacity (0.5-0.6) for non-selectable pads - Add shared JavaScript to base.html for selected pad highlighting (40% opacity) - Ensure all pages (Overview, Restore, Set Inspector, MIDI Upload) share consistent grid layout, colors, borders, and active state styling
- Add global dark mode toggle button to base.html header - Add dark mode CSS variables and styles to style.css - Update base.html JavaScript to handle theme toggle and persist to localStorage - Remove local dark mode from overview.html (theme button, local CSS, local JS) - Update overview.html to use global #app-wrap.dark for dark mode detection - Add dark mode variable overrides for Overview page custom CSS - Ensure consistent dark mode across all pages: Overview, Restore, Set Inspector, MIDI
- Add restore mode toggle button (+ Restore Set) to Overview page - Restore form appears inline with file upload, color picker dropdown, and target pad selection - Use the main pad grid for restore: free pads become clickable with dashed borders - Add client-side color dropdown with JavaScript and /overview/api/colors endpoint - Add POST /overview/api/restore endpoint for handling uploads - Remove standalone Restore page navigation link (redirects to Overview) - Update renderPadGrid to support restoreMode with click handlers on free pads - Add CSS for restore-mode grid styling and selected pad highlighting - All restore UX now happens in context of the Overview page's existing pad grid
- Add generate_multichannel_midi_set() to parse MIDI by channel and create multi-track set - Each MIDI channel (up to 4) becomes a separate track with its own clip - Error handling for >4 channels with clear user message - Add 'Multi-Channel (≤4 channels)' option to MIDI type dropdown - Update handler dispatch to route multichannel type to new function - Add explanatory help text for all MIDI type options
… Song.abl location
… editor" This reverts commit ead6de4.
|
@charlesvestal - During my testing, this seems to be pretty useful for importing MIDI. I'd be curious to know what you think. Note that it builds upon #563 |
…mula, isPlaying, color field
|
Thanks for this — multi-file import with per-track assignment is genuinely useful, and the A few things before it can merge: 1. It's stacked on #563. This branch was cut from the Overview PR, so the diff contains all of #563. Once #563 lands, please rebase onto 2. The drum / 808 path is silently dropped. Removing the "MIDI Type" dropdown deletes the 3. A couple of safety basics:
4. "Add to existing" + partial failures. When a set's UUID isn't found, the code falls back to a bare On #559: this adds track-level import but not per-slot targeting in the Set Inspector, so I don't think it closes #559 — I'll keep that open for the inspector-integration work. Happy to merge #563 first and then take another pass at this once it's rebased. |
…et; fix restart pkill pattern; remove debug logging
Summary
Enhances the MIDI upload workflow to support multiple files with independent track assignments. Users can now build complete multi-track sets by uploading several MIDI files at once, assigning each to tracks 1-4.
Features
Changes
Testing