do
setcps (120/60/4)
let gF =  (# djfbus 1 (range 0.05 0.95 "^49"))
let gMute = (midiOn "^73" (mask "f*16"))
let gM = gMask . gMute
let gLPF = whenmod     64 48 (# lpfbus 4 (slow 16 $ range 20000 200  saw))
let gLPFSoft = whenmod 64 48 (# lpfbus 5 (slow 16 $ range 20000 2000 saw))
let chorus = pF "chorus"
let lagamount = pF "lagamount"
let dec = pF "dec"
let sus = pF "sus"
let cutoff = pF "cutoff"
d1 $ gF $ gMute
  $ someCyclesBy "^29" (ply "2 <2!3 4>")
  $ midiOn "^74" (# "[kick:5,kick:4]")
  $ midiOn "^41"  (<| "k k k <k [<k ~> k]>")
  -- $ midiOff "^42" (struct "~ <t!3 ~>") -- L'attente
  $ midiOff "^41" (struct "t . ~ t ~ ~")
  $ "[kick:5,kick:4,808bd:8]"
  # att 0.015
  # rel 0.125
  # lpf 2000
  # midiG' "^78" 0 1.3
d2 $ gF $ gMute -- Clap timer
  $ midiOn "^42" (<| "~ c ~ c")
  $ midiOff "^42" (<| "~ c")
  $ drumFrom "[sakatadpm48,rolandr8]" "cp"
  # lpf 2000
  # midiG' "^79" 0 1.3
d3 $ gF $ gM2
  $ midiOn "^43" (mask "t([8 . 4 <4 <8 16>>],16)")
  -- 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" (struct "t*[8 <8 16> <16 8 8 16> <16 [32 <64 128>]>]")
  $ fix ((|* gain (slow 32 $ range 0.3 1.3 saw))) "oh"
  $ "~ h ~ h ~ h*<1!3 2 1 1 2 2> ~ h*<1!7 2>" # drumFrom "sakatadpm48" "[hh,oh]"
  # n "0!3 <0!3 1>"
  # midiG' "^80" 0 1.6
d4 $ gF2
  $ midiOn "57" (slice 8 "0 <1 3>" . chop 4)
  $ loopAt 2
  $ chop 2
  $ "fbass:4"
  # cut 4
  # pan 0.1
  # crushbus 41 (range 16 2.5 "^32")
  # midiG' "^81" 0 1.4
d6 $ gF3
  $ midiOn "^90" (ply "4 <4 8>")
  -- FIXME(#94) d6 drives more controls than the grid gives it (BT6 + BL6). ^59 now belongs to another orbit, so this step STILL FIRES ACROSS COLUMNS — turning ^59 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 d6's own control with gSel.
  -- FIXME(#94) d6 drives more controls than the grid gives it (BT6 + BL6). ^59 now belongs to another orbit, so this step STILL FIRES ACROSS COLUMNS — turning ^59 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 d6's own control with gSel.
  $ midiOn  "^59" (slice 8 ("0 <0 [0 <0 1 2 3>]>") . chop 8)
  $ midiOff "^59" (slice 4 ("<0 1 2 3>"))
  $ loopAt 16
  $ "shiloh:7"
  # pan 0.8
  # room 0.2 # sz 0.8 # dry 1
  -- FIXME(#54) d6 drives more controls than the grid gives it (B6 + C6). ^34 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 d6's own control.
  -- # crushbus 81 (range 16 2.5 "^34")
  # midiG' "^83" 0 1.2
  # cut 6

once $ "synth_gameboy"
  # cut 8

once $ "meth_bass" # cut 6

once $ "[kick:5,kick:4,808bd:8]"
  # lpf 200
  # gain 0.8

d7 $ gF3 $ gM3 -- High Dauphin
  $ struct "t@2 t*<1 2 1 <4 1>> t*<1 2 4 8>"
  $ note (
    "<[g4 c ef@14] [<c g> ef g@14] <[g4 c ef@14] [c5 bf5 g5@14]> [c ef d@13 ~]>"
    )
  # "[cbow:3]"
  # cut 7
  # room 0.2
  # pan 0.9
  # crushbus 71 (range 16 2.5 "^35")
  # midiG' "^83" 0 1
d3 $ gF $ gM2
  $ midiOn "^43" (mask "t([8 4 <4 <8 16>>],16)")
  $ midiOn "^76" (struct "t*[8 <8 16> <16 8 8 16> <16 [32 <64 128>]>]")
  $ fix ((|* gain (slow 32 $ range 0.3 1.3 saw))) "oh"
  $ "~ h ~ h ~ h*<1!3 2 1 1 2 2> ~ h*<1!7 2>" # drumFrom "sakatadpm48" "[hh,oh]"
  # n "0!3 <0!3 1>"
  # midiG' "^80" 0 1.6
d4 $ gF2 $ slow 2 -- Basse Baleine
  $ midiOn "^44" (struct "t*<16 32>") -- Basse folle
  $ (0.125 <~) -- Calage :)
  $ someCyclesBy "^52" (
    (mask "<t!2 f t f f t t> f t@14") . (|* room 1.2)
    ) --
  $ fix ((midiOff "^76" (# silence)) . (|* gain 0.8) . (|+ note 24) . (|* gain "<0.93!3 [0.92 0.85]>") . (# cut 5))
  "bass2"
  $ note (
    "<[g4 c ef@14] [<c g> ef g@14] <[g4 c ef@14] [c5 bf5 g5@14]> [c ef d@13 ~]>"
    - 24
    )
  # "[bass2:1,bassWarsaw]" -- TODO: Autre basse moins venere?
  # room 0.2
  # pan 0.4
  # crushbus 41 (range 16 2.5 "^32")
  # midiG' "^81" 0 1.3
d6 $ gF3 $ gM3 -- Leads reponse
  -- FIXME(#94) d6 drives more controls than the grid gives it (BT6 + BL6). ^58 now belongs to another orbit, so this step STILL FIRES ACROSS COLUMNS — turning ^58 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 d6's own control with gSel.
  $ midiOn "^58" (struct "t*<16 32>") -- Basse folle
  $ midiOn "^58" (|+ note 12)
  -- FIXME(#54) d6 drives more controls than the grid gives it (B6 + C6). ^54 now belongs to another orbit, so this step STILL FIRES ACROSS COLUMNS — turning ^54 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 d6's own control with gSel.
  $ sometimesBy "^34" (bite 4 "[0, [~ 2]]")
  $ someCyclesBy "<f!3 t>" (mask "t f!15". (# legato 2))
  -- $ (0.125 <~) -- Calage :)
  -- $ someCyclesBy "^17" (
    -- (mask "<t!2 f t f f t t> f t@14") . (|* room 1.2)
    -- ) --
  $ whenmod 32 24 (ply "2 <2!4 4!4>")
  $ swing (1/3)
  $ note (
    "<ef4 g4 <ef g> d>"
    + "<0!0 [0 12]!0 [0(2,8), <12!3 -12>([<1 3> 3],8,3)]!32>"
    + "[0,<7 12 12 7>]"
    - 12
    )
  # "FMRhodes1"
  -- # room 0.2
  # pan 0.8
  # modIndex (range 0 16 "^54")
  # crushbus 61 (range 16 2.5 "^34")
  # midiG' "^82" 0 1.3
d8 $ gM $ gF3 -- Breaks divins
  $ midiOn "^92" (off "e" id)
  $ midiOn "^60" (mask "[f t]")
  $ someCyclesBy "^36" (loopAt 1 . mask "[f t]*4" . chop 16 . (# n 81))
  $ someCyclesBy "^56" (chop 8 . loopAt 1 . (# "fbreak120:3"))
  $ loopAt 2
  $ chop 8
  $ "jungle_breaks:1"
  # cut 8
  # pan "[<0.35!3 0.65> <0.65!3 0.35>]*4"
  # midiG' "^84" 0 1.8
d10 $ gF3 -- Pads angéliques
  $ midiOff "^58" (mask "t([0 2],4)")
  $ note (
    slow 2 "<bf4 d5 <bf4 ef> [bf4 a4@3]>"
    + "[0,[0*<1 1 2 <2 1>> .  0 12*<1 2>]]"
    )
  # chorus 2
  # "moogBass"
  # att (range 0.001 2 "^16")
  # dec (range 0.2  10 "^17")
  # sus "^18"
  # rel (range 0.2  10 "^19")
  # room 0.5 # sz 0.6 # dry 2
  # midiG' "^20" 0 1
  # legato 2
  # cut 10

bf g bf <bf a>
