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 -- ...@@ -63,20 +63,29 @@ d5 $ gF3 $ gM3 --
# octersubbus 51 (range 0 1.5 "^54") # octersubbus 51 (range 0 1.5 "^54")
# delay "<0.2!3 0.8>" # delay "<0.2!3 0.8>"
# delayt 1 # delayfb 0.3 # delayt 1 # delayfb 0.3
# gain 1.3
d9 $ gF2 $ gM3 -- Announcing SYNTH 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" $ "desire_synth/2" # "desire"
# n "<0>" # n "<0>"
# cut 9 -- SYNTH # cut 9 -- SYNTH
-- # end 0.1s -- # end 0.1s
# lpf 3000 -- # lpf 3000
# gain 1.9
# room 0.4 # sz 0.7 # dry 1.4
d7 $ gF3 $ gM3 -- Voices d7 $ gF3 $ gM3 -- Voices
$ midiOn "^91" (ply "2 <2!3 <4 8>>") $ midiOn "^91" (ply "2 <2!3 <4 8>>")
$ fix ((6/8) ~>) (n 6) $ fix ((6/8) ~>) (n 6)
$ fix ((1/8) ~>) (n 9) $ fix ((1/8) ~>) (n 9)
$ fix ((5/8) <~) (n "[11,12]") $ fix ((5/8) <~) (n "[11,12]")
$ slow 2 $ 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 "^35" (>| n "<10 ~>") -- FREE FROM DESIRE
$ midiOn ("^59" - "^35") ( -- Refrain $ midiOn ("^59" - "^35") ( -- Refrain
(>| n "<10!4 11!4>") (>| n "<10!4 11!4>")
......
...@@ -74,7 +74,7 @@ d10 $ gF3 $ gM3 -- Menace ...@@ -74,7 +74,7 @@ d10 $ gF3 $ gM3 -- Menace
# gain 2 # gain 2
# att 0.10 # att 0.10
# rel 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 # legato 2
# octersub 1 # octersub 1
# cut 9 # cut 9
......
...@@ -95,7 +95,7 @@ d9 $ gF2 $ gM3 $ slow 2 ...@@ -95,7 +95,7 @@ d9 $ gF2 $ gM3 $ slow 2
# "acidOto3091"-- V1 Bass # "acidOto3091"-- V1 Bass
) )
. (|- note 12) . (|- note 12)
. (|* gain "^18") . (|* gain "^17") -- A5 = d9's effect
. (# cut 91)) . (# cut 91))
-- $ off 1 (|- note "0 12") -- $ off 1 (|- note "0 12")
$ note (cat [ $ note (cat [
...@@ -108,6 +108,9 @@ d9 $ gF2 $ gM3 $ slow 2 ...@@ -108,6 +108,9 @@ d9 $ gF2 $ gM3 $ slow 2
-- # "bassWarsaw" |- note "[36,24]" -- # "bassWarsaw" |- note "[36,24]"
-- # "vec2_synth_acid:25" |- note 12-- Alternative2 -- # "vec2_synth_acid:25" |- note 12-- Alternative2
# "vec1_acid:25" -- Alternative # "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") # crushbus 91 (range 16 6.5 "^19")
# room 0.4 # room 0.4
# gain 1.4 # gain 1.4
......
...@@ -92,11 +92,13 @@ d8 $ gM1 $ gF1 ...@@ -92,11 +92,13 @@ d8 $ gM1 $ gF1
# cut 8 # cut 8
# gain 1.6 # gain 1.6
d9 $ gF3 $ gM3 d9 $ gF3 $ gM3
$ midiOff "^18" (slow 4) $ midiOff "^17" (slow 4) -- A5 = d9's effect
$ arp "up" $ arp "up"
$ ply 2 $ slow 2 $ note "<[e3, gs3, b3, c4] [e3, d4, c4, b3] [e3, f4, ef4, e4] [e3, f4, ef4, e4]>" $ ply 2 $ slow 2 $ note "<[e3, gs3, b3, c4] [e3, d4, c4, b3] [e3, f4, ef4, e4] [e3, f4, ef4, e4]>"
|+ note 12 |+ note 12
# "FMRhodes2" # "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") # modIndex (range 0 32 "^19")
-- # cut 9 -- # cut 9
# room 0.3 # sz 0.5 # dry 1.5 # room 0.3 # sz 0.5 # dry 1.5
......
...@@ -25,12 +25,14 @@ d3 $ gM1 $ gF1 ...@@ -25,12 +25,14 @@ d3 $ gM1 $ gF1
# hpf 7000 # hpf 7000
# gain 1.4 # gain 1.4
# room 0.3 # sz 0.5 # dry 0.9 # 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 d4 $ gF2 $ gM3
$ midiOn "^89" (ply "1 <1 2 1 4>")
$ note "[<as2 cs3 f3 cs3> <b2 ef3 fs3 b2>@7]" $ note "[<as2 cs3 f3 cs3> <b2 ef3 fs3 b2>@7]"
# "bassWarsaw" # cut 4 # "bassWarsaw" # cut 4
# room 0.4 # sz 0.8 # dry 0.9 # room 0.4 # sz 0.8 # dry 0.9
# octersubbus 42 (range 0 1.8 "^33") # octersubbus 42 (range 0 1.8 "^33")
# crushbus 41 (range 10 4.5 "^53") # crushbus 41 (range 16 4.5 "^53")
# gain 1.5 # gain 1.5
d5 $ gF3 $ gM3 d5 $ gF3 $ gM3
$ midiOn "^90" ((# begin "0 0.5") . ply "<4!7 [8 16]>") $ midiOn "^90" ((# begin "0 0.5") . ply "<4!7 [8 16]>")
...@@ -64,6 +66,7 @@ d8 $ gF1 ...@@ -64,6 +66,7 @@ d8 $ gF1
$ midiOn "^56" (# n 152) $ midiOn "^56" (# n 152)
$ "jungle_breaks:74" $ "jungle_breaks:74"
# cut 8 # cut 8
# gain 1.3
d10 d10
$ mask "<f!4 t f!3>" $ mask "<f!4 t f!3>"
$ loopAt 4 $ "risers:8" # gain 1 $ loopAt 4 $ "risers:8" # gain 1
...@@ -76,7 +79,7 @@ d12 $ gF3 $ gM3 ...@@ -76,7 +79,7 @@ d12 $ gF3 $ gM3
+ "<0 12>" + "<0 12>"
) )
# "FMRhodes1" # "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 # room 0.5
# sz 0.4 # sz 0.4
# gain 1.2 # 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