do
-- resetCycles
setcps (124/60/4)
-- let gF1 = id
-- let gF2 = id
-- let gF3 = id
d1 $ gF1 $ gM1 
  $ midiOn "^41" (<| "k k k <k [<~!3 k> k]>")
  $ midiOff "^41" (<| "k . <[~ k] k(<3 5>,8)>")
  $ "[techno:0,808bd:2,909,kick:4]"
  -- $ "kick:5" 
  # gain 1.5
  # lpf 300
d2 $ gF1 $ gM2 
  $ midiOn "^42" (<| "~ s ~ [s*<1 2> <~ s*<2 [4 2]>>]")
  $ midiOff "^42" (<| "~ s")
  $ "vec1_claps:10"
  # gain 1.3
  # lpf 2000
d3 $ gF1 $ gM2 
  $ midiOn "^43" (ply 2 . (<| "h(4,8,1)"))
  $ midiOff "^43" (<| "[~ h*<1!3 <1 2 [4 2] 1?>>]*4" )
  $ "h2ogmhh" 
  # gain 1.4
  # room 0.5
  # dry (slow 16 $ range 0.2 1.8 perlin)
  # sz 0.4
  # legato (range 0.3 2 "^31")
d5 $ gF3 $ gM3 
  $ midiOn "^33" (# n "15")
  $ midiOn "^89" (ply "<2 2 1 2 2 4 [4 2 8 4] 8>")
  $ slice 4 "<0 1 2 3*<1!3 <2 4 [4 1]>>>"
  $ midiOn "^53" (
    mask "<t <f!4 t!4> <f t t t> <f!8 t!6 f t>>" .
    (|> n (slow 8 $ "<18 19 20 21 22 23 24 26>"))
    )
-- #99: was `>|` on both lines below, which takes structure from the RIGHT — the
-- `slow 4` note pattern then REPLACED the slice rhythm with one event per 4 cycles,
-- flattening d5. `|>` keeps the left structure and only takes the note value, which
-- is what line 35 above already does. TODO @PLN verify by ear.
  $ midiOn ("^57" - "^53") (|> n (slow 4 $ "<10 11 12 13 13 13 14 13 14 15 15 13 15 16 15 13>"))
  $ midiOff ("^57" + "^53") (|> n (slow 4 $ "<9 9 10 9>"))
  $ fix (|* gain 1.2) "take5:9"
  $ "take5" 
  # cut 5
  # gain 1.5
  # room (slow 64 $ range 0 0.8 sine)
  # sz (slow 1312 $ range 0.2 0.95 cosine) 
  # dry (slow 4 $ 1 + 0.4 * perlin)
  # pan 0.8
d4  -- BASSLINE GENERATIVE
  $ gF2 $ gM3 
  $ midiOn "^76" (superimpose (
    degradeBy  "0 <0!3 0.2>!6 <0.2!3 0.5>" .
    (|+| note "[0 7 2 12]*4") 
    . (|+ note 12)
    . (|* gain (slow 32 $ range 0.6 1.1 saw))
    . (
      # octersubbus 42 (range 0 3.5 "^32")
      )
  ))
  $ struct "[t,[~ . t(<1 3 5>,8)]]"
  $ note ("<ef2 ef2 <fs2 fs2 cs2 bf2> ef2>" + "[0,12]") 
  # "bassWarsaw"
  # pan 0.4
  # gain 1.4
  # room 0.3 
  # crushbus 41 (range 16 3.5 "^52")
  # room 0.2 # dry 1.2 # sz 0.7
  # gain 1.8
d7  -- CHOEUR GENERATIF ALONG THE BASS
  $ gF3 $ gM3 
  $ midiOn "^91" (superimpose (
    arp "up <up <converge pinkyup>>"
    . (ply 2)
    . (# pan "0.85 0.15")
    . (|* gain (range 0.2 1.5 "^35"))
    . (|+ note 12)
    )
    )
  $ note ("<ef3 ef3 <fs3 fs3 cs3 bf3> ef3>" + arp "up ""c6'maj'4")
  # "moogBass"
  -- WHY THIS WAS MUFFLED — read the SynthDef, don't guess the synth (CLAUDE.md).
  -- SCLORkSynths/SynthDefs/bass/moogBass.scd:
  --     arg ... cutoff = 1000, gain = 2.0, att, dec, sus, rel, chorus = 0.7
  --     filter = MoogFF.ar(in: osc, freq: cutoff * (1 + 0.5*filterenv), gain: gain)
  -- A 4-pole Moog lowpass parked at 1 kHz. Everything above it is gone at
  -- 24 dB/oct, which is the entire reason a "CHOEUR" on a synth tagged
  -- `category: \bass` reads as mud. Not the gain, not the room, not the crush.
  # cutoff 3500          -- opens the Moog filter. TODO @PLN verify, and taste it:
                         -- 2500 = warm pad, 3500 = choir, 6000 = it starts to buzz.
  -- TWO TRAPS in this SynthDef worth remembering:
  --   * it declares att/dec/sus/rel and then IGNORES them — the envelope is a
  --     hardcoded Env.adsr(0.001, 0.3, 0.9, 0.2, amp). That is why `# sus 2` below
  --     did nothing when you tried it. Shape this voice with legato, not sus.
  --   * `gain` in this SynthDef is the FILTER RESONANCE, not a level. Tidal's
  --     `# gain` still means loudness (SuperDirt maps it to amp), so they don't
  --     collide here — but don't reach for `# gain` expecting more bite.
  # gain 1.4
  # legato 1.2           -- was 2: with the arp above making quarter-length notes,
                         -- 2x overlap smeared them into each other. Your words:
                         -- "its now a set of 4 muffed short notes LOL".
  # cut 7                -- d7 had NO cut group, so held voices piled up on top of
                         -- each other. moogBass also carries its own 7-tap chorus.
  # crushbus 71 (range 16 3.5 "^55")   -- restored: was `crushbus 41`, i.e. d4's
                         -- slot, so the bass and the choir fought over one crush
                         -- instance. That is exactly the case that became PV011.
  # room 0.2 # dry 1.2 # sz 0.7
  # pan 0.4
d11 $ gF3 $ gM3 -- THE FLUTIST
  $ slice 4 "<0 1 2 3>" 
  $ n (slow 8 $ "<13 14>")
  # "take5" # cut 11
  # room 0.3 # sz 0.5 # dry 0.2
  # gain 1.1
d12 
  $ gF3 $ gM3 -- THE SLEEPWALKER
  $ slice 4 "<0 1 2 3>" 
  $ n (slow 8 $ "<18 19 20 21 22 23 24 24>")
  # "take5" # cut 12   -- was `cut 11`, i.e. THE FLUTIST's group: the two voices
                       -- were truncating each other instead of layering. PV004.
  # room 0.3 # sz 0.5 # dry 0.2
  # pan 0.2
  # gain 1.3
d8 $ gF1 $ gM2
  -- $ gF1 $ gM1 -- La Boite à breaks de ParVagues <3
  $ midiOn "^92" (ply "1 <2!3 4>")
  $ midiOff "^60" (mask "t(4,8,1)") -- Techno drum mask
  $ midiOn ("^36" - "^56") (loopAt 0.5 . (# "jungle_breaks:22")) -- Hmmm Break
  $ midiOn "^56" (loopAt 0.5 . (# "jungle_breaks:23")) -- Raise COMEON!
  $ chop 8
  $ midiOff ("^56" + "^36") (-- DEFAULT TO RUN AND THUNDER VARIATION
    # n "<0!16 1 1 2 1 1 2 1 3 2 3 4 5 6 7 8 8>"
  )
  $ loopAt 4
  $ "take5:0"
  # cut 8
  # gain 1.4
d10 $ gM3 -- A FAIR RISER
  $ mask "<f!24 t!8>"
  $ loopAt 8 
  $ "risers" 
  # cut 10
  # room 0.4 
  # dry 1.4
  # octersubsub 0.5
  # gain 0.8

-- 
-- 
-- 
-- 
-- 
-- 
-- 
-- 
-- 
