-- /home/pln/Downloads/PerfectSunriseLoop.gif
do
-- resetCycles
setcps (110/60/4)
let lagTime = pF "lagTime"
let filterRange = pF "filterRange"
let width = pF "width"
let rq = pF "rq"
let modIndex = pF "modIndex"
d1 $ gF1 $ gM1
  $ midiOn "^41"  (struct "t t t*<1!6 2 1> t*<1!7 2>")
  $ midiOff "^41" (struct "t . ~ t ~ <~!3 t*<2 [2 1] [4 2] [2 4]>>")
  $ stack [
  "kick" # lpf 10000 # cut 1,
  "rumble" |* gain 1.3
  # lpf 200
  # cut 11,
  ""
  ]
  # "[techno:1,jazz]"
  # gain 1.4
d2 $ gF1 $ gM2
  $ midiOn "^42" (<|"~ s ~ s*<1 2>")
  $ midiOff "^42" (<| "~ s")
  $ "[vec1_snare:4]" 
  # lpf 1800
  # gain 1.3
d12 $ gF1 $ gM3 -- Cymbales sol  -- moved d6 -> d12 (PLN, d11 was taken by Menace de retour).
                                 -- ^44 stays SHARED with d3 on purpose: one press re-rhythms both percs.
                                 -- WATCH: Ardour Tidal 12 is +9.8 dB hotter than Tidal 06.
  $ midiOn "^44" (<| "~ cy ~ cy ~ cy ~ <cy [~ cy]>")
  $ midiOff "^44" (<| "~!7 <~ <cy ~> ~ cy>")
  $ "cy" # "<cy:1!6 cy:2!2>" # "h2ogmcy"
  |* gain (range 1.1 0.8 perlin)
  |* legato (range 0.5 2 (fast 2 perlin))
d3 $ gF1 $ gM2 
  -- FIXME(#94) d3 drives more controls than the grid gives it (BT3 only — BL1-3 are the family mutes). ^76 now belongs to another orbit, so this step STILL FIRES ACROSS COLUMNS — turning ^76 for its new owner also moves this. NOT commented out: this is a `$`-step and something above it is a partial application waiting for it, so removing it would stop the whole block compiling. Fold it onto d3's own control with gSel.
  -- FIXME(#94) d3 drives more controls than the grid gives it (BT3 only — BL1-3 are the family mutes). ^76 now belongs to another orbit, so this step STILL FIRES ACROSS COLUMNS — turning ^76 for its new owner also moves this. NOT commented out: this is a `$`-step and something above it is a partial application waiting for it, so removing it would stop the whole block compiling. Fold it onto d3's own control with gSel.
  $ midiOn "^76" ((# "dr") . (|* gain 1.45))
  $ midiOff "^43" (mask "t(4,8,1)")
  $ "hh*[16 . <16!3 <[16 8] 8>>]"  
  # "vec1_claps" 
  # cut 3
  # legato (slow 13 $ range 0.3 2 saw)
  -- FIXME(#54) d3 drives more controls than the grid gives it (B3 only (C1-3 are the family gF filters)). ^32 now belongs to another orbit, so the line(s) below are COMMENTED OUT rather than left firing across columns. Nothing is lost — restore by removing the dashes once gSel folds this onto d3's own control.
  -- # delaybus 31 (range 0 1 "^31") # delayt "e" # delayfbbus 32 "^32"
d4 $ gF2 $ gM3 -- La GROSSE BASSE MOLOTOVAH
  $ midiOn "^76" (ply "<4 4 2 4> <4 8>")
  $ midiOn "^44" (chop 4)
  $ midiOn "^32" ((# n 1) . (|* gain 0.8))
  $ "molotov:0/2" 
  # cut 4
  # gain 1.8
  # room 0.4  # sz 0.9 # dry 1.3
  # crushbus 41 (range 16 2.5 "^52")
  -- FIXME(#54) d4 drives more controls than the grid gives it (B4 + C4). ^33 now belongs to another orbit, so the line(s) below are COMMENTED OUT rather than left firing across columns. Nothing is lost — restore by removing the dashes once gSel folds this onto d4's own control.
  -- # octerbus 42 (range 0 0.8 "^33")
d5 $ gF3 $ gM3 
  $ midiOff "^57" (mask "t(8,16)")
  $ midiOn "^89" (ply 2)
  $ note (
    "a4!15 <<a4!4 c4!3 d4> <g4 c5>>" 
    -- + "[0*16]" 
    -- + "[0,<~!3 12>]"
    ) 
    # "acidOto3092" 
    # gain 1.5
    # room 0.3
    # filterRange (range 0 7 "^33")
    # width (range 0.05 0.5 "^53")
    -- FIXME(#54) d5 drives more controls than the grid gives it (B5 + C5). ^54 now belongs to another orbit, so the line(s) below are COMMENTED OUT rather than left firing across columns. Nothing is lost — restore by removing the dashes once gSel folds this onto d5's own control.
    -- # crushbus 51 (range 16 3.5 "^54")
    # legato 0.25
    # rq 0.3 -- TODO EXPLORE <3
d7 $ gF3 $ gM3 
  $ midiOn "^35" ( -- A-a-a-a-ACID!
    chop 8 . (# n 7)
  )
  $ midiOn "^91" ( -- DANSE COMME UN CHEVAL
    fast 2 . slice 4 "<[0 1 2 3] [0 1 2 3]  <[0 1 2 3] [0 2 3 0]> [0*4]>" . 
    (# n 5)
    )
  $ midiOff "^91" (
    superimpose (mask "<f!3 t>" . (# "molotov:3"))
  )
  $ "molotov:4/4" 
  # cut 7
  # crushbus 71 (range 16 3.5 "^55")
  # gain 1.4# room 0.4 # sz 0.8
d8 $ gF1 $ gM2 
  $ midiOn "^60" (mask "t(4,8,1)" . chop 4)
  $ chop 8 
  $ midiOn "^36" (loopAt 2 . (# n 45)) -- Break Orleans
  $ midiOn "^56" (loopAt 2 . (# n 16)) -- Classique 
  $ loopAt 1 
  $ "jungle_breaks" # n "71 <71!3 <72 [72 71*2]>>" 
  # cut 8
  # gain 1.5
d9 $ gF3 $ gF3 
  $ (0.125 ~>)
  $ "molotov:2/2" 
  # cut 5 
  # octersub 2
  # room 0.4 # sz 0.4 # dry 1.5
  # gain 1.5
d11 $ gF2 $ gM3 -- Menace de retour
    $ slow 2 
    $ whenmod 32 24 
      (fast 4 . (>| note ("[a3 <d3 e3 f3 g3>]" + "[0,12]")))
    $ note "<[a3@15 <as3 as3 c4 d4>]>"
  -- $ someCyclesBy "<1!16 1!32 0!16>" (>| note "<b3 ~ ~ <[~!7 c4] [~!5 c4 ef4 <c4 fs4>]>>")
  -- Variante Adrianesque
  -- $ someCyclesBy "<0!16 1!32 0!16>" (>| note "<b3 ~ ~ [ c4@2 ~ . ef4 fs4 c4]>")
  -- Variante Adrianesque Folle
  -- $ someCyclesBy "<0!16 1!32 1!12 0!4>" (>| note "<b3 ~ [g4 a4 b4 a4 es4 a4 fs4 a4 c4] [~ ~ as4 ~]>")
  -- Variante Adrianesque Folle2
  -- $ someCyclesBy "<0!16 1!32 0!12 1!4>" (>| note "<[b3 ~] [as3 bs3 g3 cs4 ~ d4] [~ gs4 ~ ~] [~ ~ [as4 as4] ~]>")
  # "90s_synatm:10"
  # room 0.3 # sz 0.8
  # gain 2
  # att 0.10
  # rel 10
  # crushbus 101 (range 16 3.5 "^14")
  # legato 2
  # cut 9  
d10 $ gF1 $ gM3 $ mask "<t f!7>" $ "risers:8" -- safe riser (#33)
