Commit 0538eb97 by PLN (Algolia)

feat(surface): d9-d12 controls onto their own knobs — and kill the one knob doing two jobs

First slice of the #92 column migration, and the slice that had live breakage in it.

THE GRID, settled with PLN this afternoon after one wrong turn and one measurement
that overruled me:

    A 13-16  d9 d10 d11 d12 LEVEL    (Ardour, learned today)
    A 17-20  d9 d10 d11 d12 EFFECT   <- this commit
    B 29-36  d1..d8 EFFECT           (next slice)
    C 49-51  gF1 gF2 gF3             (unchanged — see below)
    C 52-56  free, per-orbit 2nd effects
    D 77-84  d1..d8 LEVEL            (Ardour, learned today)

The wrong turn was mine: I proposed extending the DJ filters to gF1..gF8, one per
column. Then I measured which orbits actually receive each filter across all 13
setlist tracks:

    gF1 -> d1×13  d2×13  d3×13  d8×12     drums / core rhythm
    gF2 -> d4×14                          bass, almost exclusively
    gF3 -> d5×12  d7×9  + d9-d12          leads / melodic / extras

That is not three arbitrary filters, it is a per-FAMILY design applied consistently
across the whole set — you filter a stem group, like a DJ mixer, not one channel.
Per-orbit filters would have destroyed it and handed PLN eight knobs he would never
use that way. gF1-3 stay exactly as they are, and C4-C8 stay free, which as a bonus
removes the "one effect per orbit" constraint I thought the grid forced. PLN's
instinct ("i wanna keep C1/2/3 as djf these are core") was righter than his
reasoning for it.

== THE LIVE BREAKAGE ==
piment_bresilien.tidal:77 drove its d10 crushbus from "^14". As of today CC 14 is
MIDI-learned to Ardour's Tidal 10 gain. So that one knob was crushing the bass and
riding the orbit's fader simultaneously — a control doing two unrelated jobs, the
kind of thing that reads as "the rig is haunted" mid-set. Now ^18 (A6), which is
d10's own effect slot. This was the concrete half of #88.

== THE REST ==
  wap        d9  ^18 -> ^17     gain swell
  bombe_dj   d9  ^18 -> ^17     midiOff (slow 4)
  desire     d9  ^19 -> ^17     gain swell
  do_it_right d12 ^31 -> ^20    modIndex  (^31 was B3 = d3's slot, and was also
                                Ardour-bound until this afternoon's release)

== ONE BEHAVIOUR CHANGE THAT NEEDS PLN'S EAR ==
In desire.tidal, "^19" drove BOTH d9's gain swell AND d7's NANANA (line 84). Moving
d9 to its own knob necessarily splits that gesture. If the link was deliberate —
one knob swelling the synth while bringing in the vocal — it is now two knobs and
we should restore it. Flagged with a FIXME in the file rather than silently
"fixed", because a lost gesture is not something a linter can miss for you.
d7's ^19 moved to ^55 (C7, its own 2nd-effect slot) rather than squatting on A7,
which belongs to d11.

== FIXMEs LEFT ON PURPOSE (PLN: "if we have two effects, we consolidate via gSel
   indeed. mark FIXMEs in code in there") ==
wap d9 and bombe_dj d9 each have a SECOND effect (crushbus, modIndex) and d9-d12
get one A-row knob each, so there is no honest home for it. Both marked
FIXME(#54) to fold into ^17 via gSel rather than borrowing d11's knob. The wrong
fix would have been to spread them onto neighbouring columns and call it done.

== VERIFICATION, in the order that matters ==
  pvlint            5 tracks, 0 errors (2 pre-existing warnings, untouched)
  silent-eval       every declared orbit of all 5 tracks still emits events, cold,
                    against the seeded control map — this is the one that proves a
                    renumber did not silently empty an orbit
  surface-columns   Ardour collisions 1 -> 0; the 5 primary d9-d12 controls all
                    land on their own knob; 2 second-effects correctly flagged

Uncommitted WIP in 6 setlist tracks was backed up before editing; only CC numbers
and comments changed, so PLN's in-progress edits are preserved in the diff.

Aside, spotted by pvlint and NOT fixed here: do_it_right d5 references index 8 of
"daft" which has 5 samples — that layer never arrives. Own task.
parent d8fd702f
......@@ -63,20 +63,29 @@ d5 $ gF3 $ gM3 --
# octersubbus 51 (range 0 1.5 "^54")
# delay "<0.2!3 0.8>"
# delayt 1 # delayfb 0.3
# gain 1.3
d9 $ gF2 $ gM3 -- Announcing SYNTH
$ superimpose ((|* gain "^19") . (# n 5) . (# cut 91))
$ superimpose (
((|* gain (range 0 1.5 "^17"))) . -- A5 = d9's effect (was ^19, shared with d7 below)
(# n 5) . (# cut 91))
$ "desire_synth/2" # "desire"
# n "<0>"
# cut 9 -- SYNTH
-- # end 0.1s
# lpf 3000
-- # lpf 3000
# gain 1.9
# room 0.4 # sz 0.7 # dry 1.4
d7 $ gF3 $ gM3 -- Voices
$ midiOn "^91" (ply "2 <2!3 <4 8>>")
$ fix ((6/8) ~>) (n 6)
$ fix ((1/8) ~>) (n 9)
$ fix ((5/8) <~) (n "[11,12]")
$ slow 2
$ midiOn "^19" (>| n "<11 12>") -- NANANA
-- FIXME(#54) BEHAVIOUR CHANGE, needs PLN's ear: ^19 used to drive BOTH this NANANA
-- and d9's gain swell above. d9 moved to ^17 (its own A5 knob), so the two are no
-- longer one gesture. If that link was deliberate, say so and we restore it.
-- d7 also stacks ^91/^35/^59 — consolidate this lot into B7 (^35) via gSel.
$ midiOn "^55" (>| n "<11 12>") -- NANANA | C7 = d7's 2nd effect
$ midiOn "^35" (>| n "<10 ~>") -- FREE FROM DESIRE
$ midiOn ("^59" - "^35") ( -- Refrain
(>| n "<10!4 11!4>")
......
......@@ -74,7 +74,7 @@ d10 $ gF3 $ gM3 -- Menace
# gain 2
# att 0.10
# rel 10
# crushbus 101 (range 16 3.5 "^14")
# crushbus 101 (range 16 3.5 "^18") -- A6 = d10's effect (was ^14, now Ardour's d10 LEVEL)
# legato 2
# octersub 1
# cut 9
......
......@@ -95,7 +95,7 @@ d9 $ gF2 $ gM3 $ slow 2
# "acidOto3091"-- V1 Bass
)
. (|- note 12)
. (|* gain "^18")
. (|* gain "^17") -- A5 = d9's effect
. (# cut 91))
-- $ off 1 (|- note "0 12")
$ note (cat [
......@@ -108,6 +108,9 @@ d9 $ gF2 $ gM3 $ slow 2
-- # "bassWarsaw" |- note "[36,24]"
-- # "vec2_synth_acid:25" |- note 12-- Alternative2
# "vec1_acid:25" -- Alternative
-- FIXME(#54) d9's SECOND effect. A5-A8 give d9-d12 one knob each, so there is no
-- home for this one — ^19 is A7, which is d11's effect slot. Consolidate into ^17
-- via gSel (one knob selecting gain-vs-crush) rather than borrowing a neighbour.
# crushbus 91 (range 16 6.5 "^19")
# room 0.4
# gain 1.4
......
......@@ -92,11 +92,13 @@ d8 $ gM1 $ gF1
# cut 8
# gain 1.6
d9 $ gF3 $ gM3
$ midiOff "^18" (slow 4)
$ midiOff "^17" (slow 4) -- A5 = d9's effect
$ arp "up"
$ ply 2 $ slow 2 $ note "<[e3, gs3, b3, c4] [e3, d4, c4, b3] [e3, f4, ef4, e4] [e3, f4, ef4, e4]>"
|+ note 12
# "FMRhodes2"
-- FIXME(#54) d9's SECOND effect. ^19 is A7 = d11's effect slot; d9 only gets A5.
-- Consolidate into ^17 via gSel (one knob selecting slow-vs-modIndex).
# modIndex (range 0 32 "^19")
-- # cut 9
# room 0.3 # sz 0.5 # dry 1.5
......
......@@ -25,12 +25,14 @@ d3 $ gM1 $ gF1
# hpf 7000
# gain 1.4
# room 0.3 # sz 0.5 # dry 0.9
# pan "0.8 0.8 0.8 <0.2 0.2 0.8 [0.8 0.2]>"
d4 $ gF2 $ gM3
$ midiOn "^89" (ply "1 <1 2 1 4>")
$ note "[<as2 cs3 f3 cs3> <b2 ef3 fs3 b2>@7]"
# "bassWarsaw" # cut 4
# room 0.4 # sz 0.8 # dry 0.9
# octersubbus 42 (range 0 1.8 "^33")
# crushbus 41 (range 10 4.5 "^53")
# crushbus 41 (range 16 4.5 "^53")
# gain 1.5
d5 $ gF3 $ gM3
$ midiOn "^90" ((# begin "0 0.5") . ply "<4!7 [8 16]>")
......@@ -64,6 +66,7 @@ d8 $ gF1
$ midiOn "^56" (# n 152)
$ "jungle_breaks:74"
# cut 8
# gain 1.3
d10
$ mask "<f!4 t f!3>"
$ loopAt 4 $ "risers:8" # gain 1
......@@ -76,7 +79,7 @@ d12 $ gF3 $ gM3
+ "<0 12>"
)
# "FMRhodes1"
# modIndex (range 0 16 "^31")
# modIndex (range 0 16 "^20") -- A8 = d12's effect (was ^31 = B3, which is d3's)
# room 0.5
# sz 0.4
# gain 1.2
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment