do
setcps (60/60/4)
-- resetCycles
let width = pF "width"
let gMask = (midiOn "^41" (mask "t!3 <t!3 [f <t f>]>"))
let gMute = (midiOn "^73" (mask "f*16"))
let gMute2 = (midiOn "^74" (mask "f*16"))
let gMute3 = (midiOn "^75" (mask "f*16"))
let dMask = (whenmod 8 7 (mask "t t <t [f t]> f"))
let gM1 = gMask . gMute
let gM2 = gMask . gMute2
let gM3 = gMask . gMute3
d1 $ gF1 $ gMute2 
  $ midiOn "^30" (fast 2)
  $ midiOn "^42"  ((<| "k k k <k k*2 k [~ k*2]>"))
  $ midiOff "^42" (<| "k . <~!8 k(3,8)!8>")
  $ "kick:5"
  # cps ((range 60 120 "^29")/60/4)
d2  $ gF1 $ gM1 
  $ "~ s ~ s ~ s ~ s*2" 
  # "vec1_snare:59" # gain 0.8
  # room 0.4 # dry 0.9
d3 $ gF1 $ gM1 $ "dr*[8 8 <8 <12 24>> 16]"
d4 $ gF2 $ gM3
  $ midiOn "^89" (ply 4)
  $ superimpose (arp "up <up!3 down>" . (|+| note "c'maj9'8"))
  $ superimpose (
    (# lpf 5000) 
    . (# crushbus 41 (range 16 4 "^53"))
  )
  -- $ midiOn "^"
  $ note "<ef3 <fs3 bf3>>"
  # "bassWarsaw" 
  # room 0.8 # sz 0.5 # dry 1.1
d9 $ gF2 $ gM3
  $ midiOn "^89" (slice 8 "0*4") -- TODO Better button?
  -- $ slice 4 "<0 1 2 3>"
  -- $ chop 8 
  $ loopAt 2 
  $ "crutcher:1" 
  # cut 4
  # room 0.4
  # octerbus 91 (range 0 1.4 "^19")
  # crushbus 92 (range 16 3 "^18")
d5 $ gF3 $ gM3 -- MAIN CRUTCH
  $ midiOn "^90" (ply "2 <4 8>")
  -- $ slice 4 "<0 1 2 3>"
  $ chop 8 
  $ loopAt 2 
  $ "crutcher" 
  # cut 5
  # pan 0.3
  # gain 1.4
d7 $ gF3 $ gM3 -- SIDE CRUTCHES
  -- $ slice 4 "<0 1 2 3>"
  $ chop 8 
  $ loopAt 2 
  $ "crutcher" # n "<2!4 3!8 4!4 5!32>" 
  # cut 7
  # pan 0.8
  # gain 1.3
  # room 0.3
d8 $ gF1 $ gM1
  $ midiOff "^60" (mask "t(4,8,1)" . chop 16) -- Bouton Nassim <3
  $ midiOn ("^92") ( -- Bouton Nassim <3
    slice 16 "[0 .. 7] . <[0 .. 7]!7 [0 1 . [2 3]]>"
    . loopAt 0.5 . (# "breaks165") . (# octersub 2)
  )
  $ midiOn "^36" (loopAt 0.5 . (# n 45))
  $ midiOn "^56" (loopAt 0.5 . (# n 55))
  $ loopAt 2 
  $ chop 8
  $ "jungle_breaks:24" # cut 8
