PLN gave the go and accepted the trade in his own words: "i agree for the trade and
change of knobs. i accept the fate! and truthful leds will help quick learn". The
faders were remapped this afternoon; doing the tracks now means his hands relearn
the surface ONCE, with four days to drill it, instead of learning an interim layout
this week and the real one after the gig.
12 tracks, 54 substitutions, 5 gSel FIXMEs, 0 collisions
Each of d1-d8 now has its effect on its own B knob (and a second on its C knob for
d4-d8), directly above the fader that levels it. bombe_dj landed separately in
fdde0924 as the proof track.
== WHAT MADE THIS SAFE, AND IT IS NOT THE DIFF SIZE ==
The migrator computes each track's WHOLE permutation, prints it, then writes once.
That is not tidiness, it is correctness:
* desire.tidal needs two genuine SWAPS — d7 ^55<->^35 and d8 ^56<->^36. Applied
sequentially, the first move would overwrite the second's source and both
controls would end up on one knob. Applied simultaneously they just exchange.
* the same property dissolved the 34 "destination taken" clashes the naive
costing reported: the corpus is uniformly off by one column, so every orbit
wants the slot of the orbit below it, free only once that one moves too.
Genuine collisions across all 13 tracks: zero.
* the rewrite is scoped PER ORBIT. desire had ^19 driving both d7 and d9, which
migrate to different destinations; a file-wide replace would have fused two
gestures into one, silently.
* commented-out ^NN refs are never touched — they are alternatives PLN
re-enables mid-set, and rewiring them would break weeks from now with no trace.
== THE 5 OVERFLOWS, LEFT IN PLACE ON PURPOSE ==
perfect d4 ^17, perfect d5 ^18, mafia_sans_serif d7 ^19,
the_revolution_will_be_sampled d7 ^55, desire d3 ^52.
These orbits have three or more effect knobs; the grid honestly offers two (one for
d1-d3, whose C knob is a family DJ filter). Rather than spill them into a
neighbouring column and call the board aligned, each carries a FIXME(#54) pointing
at gSel. PLN: "if we have two effects, we consolidate via gSel indeed."
== VERIFICATION, AND ONE HONEST GAP ==
pvlint 13 tracks, 0 errors, 9 warnings (all pre-existing:
duplicate d5 declarations, one out-of-range sample
index — none introduced here)
silent-eval --seeded every BUILDABLE track's every declared orbit still
emits events, cold, against the seeded control map.
This is the check that would catch a renumber having
quietly emptied an orbit, and it is clean.
surface-columns --knobs 77 knob renumbers -> 5 (exactly the gSel overflows)
THE GAP: the silent-eval harness cannot BUILD 3 of the 13 tracks — overlapping
IsString instances on chord literals, and an ambiguous `cutoff` between
Tidal.Context and Tidal.Params. I re-ran two of them from HEAD and they fail
identically there, so this migration did not cause it. But it means three tracks'
orbits are UNVERIFIED, and a harness that cannot build a track must never be read
as a pass. Filed separately.
Also fixed one stale comment of my own in desire.tidal: after the d7 swap the
NANANA knob is B7, not C7. A comment that lies about the layout is worse than none
when you are relearning the board.
Not committed here, deliberately: backlog.md and tools/at/fixtures/claude.tidal
carry PLN's own uncommitted edits.
| Name |
Last commit
|
Last update |
|---|---|---|
| .. | ||
| 8_blues.tidal | Loading commit data... | |
| 8bit_delicat.tidal | Loading commit data... | |
| acab.tidal | Loading commit data... | |
| acidule.tidal | Loading commit data... | |
| ambiance.tidal | Loading commit data... | |
| bad_witch.tidal | Loading commit data... | |
| biscuit_acide.tidal | Loading commit data... | |
| chevalerie.tidal | Loading commit data... | |
| coffee_pot.tidal | Loading commit data... | |
| dernier_dimanche.tidal | Loading commit data... | |
| dernier_doute.tidal | Loading commit data... | |
| des_efforts.tidal | Loading commit data... | |
| desire.tidal | Loading commit data... | |
| diable.tidal | Loading commit data... | |
| drums_architect.tidal | Loading commit data... | |
| dub_a_trois.tidal | Loading commit data... | |
| el_diablo.tidal | Loading commit data... | |
| esperluette.tidal | Loading commit data... | |
| explo_rha_teur.tidal | Loading commit data... | |
| han.tidal | Loading commit data... | |
| hard_monday.tidal | Loading commit data... | |
| hardorage.tidal | Loading commit data... | |
| hello_tek.tidal | Loading commit data... | |
| jeudrill.tidal | Loading commit data... | |
| le_blues_du_mic.tidal | Loading commit data... | |
| long_way.tidal | Loading commit data... | |
| mafia_sans_serif.tidal | Loading commit data... | |
| meshuggah.tidal | Loading commit data... | |
| network_zero_un.tidal | Loading commit data... | |
| nouveau_punk.tidal | Loading commit data... | |
| oldskool_radius.tidal | Loading commit data... | |
| partir.tidal | Loading commit data... | |
| permanence.tidal | Loading commit data... | |
| piment_bresilien.tidal | Loading commit data... | |
| playa_fun.tidal | Loading commit data... | |
| punkachien.tidal | Loading commit data... | |
| quatre_magiques.tidal | Loading commit data... | |
| ragga_la_hierarchie.tidal | Loading commit data... | |
| rainbow_race.tidal | Loading commit data... | |
| ratus.tidal | Loading commit data... | |
| sale_piano.tidal | Loading commit data... | |
| saria.tidal | Loading commit data... | |
| sautillant.tidal | Loading commit data... | |
| septieme_armee.tidal | Loading commit data... | |
| vacances_solaires.tidal | Loading commit data... | |
| wet_hard_pussy.tidal | Loading commit data... |