feat(editor): the drums track is an ordinary arr:<idx> mixer/Tracks channel - #338
Conversation
|
Warning Review limit reached
Next review available in: 38 minutes Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available. How can I continue?After more reviews become available, a review can be triggered using the To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews. How do review limits work?CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability. For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window. Please refer docs for additional details. Review details⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Plus Run ID: 📒 Files selected for processing (12)
✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
…hannel (#338) Includes review fix: make drum-tab delete undo a true inverse (renumber arr keys). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
a79c653 to
9eb1fb3
Compare
PR2b of the drums-as-arrangement arc — stacked on #337 (base
mt-drums-p2), which is stacked on #336 → #335.What & why
Retire the legacy
'drums'mix-key singleton so the drums arrangement mixes on its ownarr:<idx>channel — the same address every pitched part uses. The mixer strip, Tracks mix, band roster, andS.partMixkey now all agree. This is the substrate the N-drums work (PR3/PR4) needs: two drum charts can't share one'drums'slot; each drum arrangement now gets its own strip by index.Deliberately narrow — holds the #337 invariant:
S.currentArrstays pitched and the drum grid stays a mode (S.drumEditMode). Only the mix address moves. The drums arrangement's durable target id stays'drums'(DRUM_TARGET_ID), so every tracks-row / stemLinks / delete / rename / selection hook that keys on it — andmain.js'sselectTrackSessionTarget/openTrackSessionTarget'drums'branches — are untouched.Also fixes a latent double-strip: #336 materialized the drums arrangement into
S.arrangementsbut left_mixerPartsPurealso synthesizing a'drums'strip from the drum tab — so the mixer showed drums twice (arr:<idx>and'drums'). The drums strip now comes solely from the arrangement pass.Changes
_mixerPartsPuredrops the synthesized'drums'strip (drums ride the arrangement pass asarr:<idx>); new pure_mixerActivePartKeyPuremaps drum-edit mode →arr:<drumIdx>(currentArr stays pitched);_mixerClapStatePuretakes the drum index;_selectedStripKeyPure+ the meter active-part resolve drums via the general id→index path (its id is'drums').mixKey→arr:<drumIdx>(id stays'drums');DeleteDrumTabCmdsaves/restorespartMix['arr:<drumIdx>'](re-derives the index on undo, robust to a shifted pitched count)._bandPartsPurekeys the drum band entryarr:<drumIdx>so the strip and engine agree; the band scheduler routes thetype:"drums"arrangement to real GM percussion (_drumKitVoicesInWindow) before the clap-notes path (its own notes are empty), keeping the legacy"Drums"-named pitched-part clap path intact.Verification
arr:<idx>; added a live-Sclap-gate test and a_mixerActivePartKeyPureinvariant test (drum mode →arr:<drumIdx>, currentArr ignored;drumIdx < 0falls back).asdf_asdf.feedpak— the one library pack with drums): the mixer shows a single Drums strip keyedarr:1(no'drums'key, no double-strip); mute lights it (aria-pressed, realS.partMix) + status "its guide voice is silent"; solo lights it; the fader scales it (+0.0→−10.5 dB); drums↔pitched round-trips cleanly.🤖 Generated with Claude Code