feat(surface): no d7 while d6 sits empty — 150 orbits compacted
PLN: "part of the migration also: no d7 when d6 is free. d7 often was sefcond
melo, should be a d6 now d6 ids not a shitty mapped knob, but a proper column
like others".
That is the history exactly. d6's knob used to be somewhere useless, so a
second melody went to d7 and d6 was left empty; since the column remap every
one of d4-d8 owns a fader, a B knob and a C knob, so the reason is gone and
only the habit remains. A set with a hole at d6 wastes a whole column.
150 moves in 133 files. `d7 -> d6` is most of it; a lone melody with both
slots free compacts to d5.
THE BAND IS {5, 6, 7} AND IT IS DERIVED, NOT DECREED. An orbit number decides
which family DJ filter and which family mute the part answers to. From the
authored grid, d5/d6/d7 share both maps, so a move between them changes
nothing about the sound — while d4 is the bass (gF2) and d8 is percussion
(gF1/gM2), so compacting into or out of those would silently re-assign which
filter sweeps the part and which button drops it. The tool computes the band by
asking lcxl_grid which orbits agree with d6 on both families, so if the grid
ever changes, the band follows instead of rotting.
It refuses rather than guesses: 7 orbits carry an explicit `# orbit N`, which
overrides the output orbit independently of the `dN` name, so renaming the
declaration alone would move the pattern's identity and leave its AUDIO behind.
Comments are never rewritten — a commented `-- d7 $ …` is an alternative to
re-enable mid-set. Bus slots (`crushbus 71`) and `cut` groups stay put: a bus
id is an audio-graph edit and a cut group is a choke group, not an orbit.
VERIFIED: re-plan reports 0 moves left. silent-eval --seeded re-run over all
703 files and diffed per-file against the pre-migration baseline — zero verdict
changes, 703/703 joined. And the declaration multiset of every one of the 133
files is a pure permutation inside the band, with nothing outside it touched:
no pattern was dropped and no orbit was declared twice where it was not
already. That last check exists because a naive compaction fusing two blocks'
melodies onto one orbit would be silent, not loud — the later declaration wins.
Showing
This diff is collapsed.
Click to expand it.
This diff is collapsed.
Click to expand it.
This diff is collapsed.
Click to expand it.
This diff is collapsed.
Click to expand it.
This diff is collapsed.
Click to expand it.
This diff is collapsed.
Click to expand it.
This diff is collapsed.
Click to expand it.
This diff is collapsed.
Click to expand it.
This diff is collapsed.
Click to expand it.
This diff is collapsed.
Click to expand it.
This diff is collapsed.
Click to expand it.
This diff is collapsed.
Click to expand it.
This diff is collapsed.
Click to expand it.
This diff is collapsed.
Click to expand it.
This diff is collapsed.
Click to expand it.
This diff is collapsed.
Click to expand it.
This diff is collapsed.
Click to expand it.
This diff is collapsed.
Click to expand it.
This diff is collapsed.
Click to expand it.
This diff is collapsed.
Click to expand it.
This diff is collapsed.
Click to expand it.
This diff is collapsed.
Click to expand it.
This diff is collapsed.
Click to expand it.
This diff is collapsed.
Click to expand it.
This diff is collapsed.
Click to expand it.
This diff is collapsed.
Click to expand it.
This diff is collapsed.
Click to expand it.
This diff is collapsed.
Click to expand it.
This diff is collapsed.
Click to expand it.
This diff is collapsed.
Click to expand it.
This diff is collapsed.
Click to expand it.
This diff is collapsed.
Click to expand it.
tools/compact-orbits.py
0 → 100644
This diff is collapsed.
Click to expand it.
Please
register
or
sign in
to comment