do
setcps (93/60/4)
let gMask = (midiOn "^41" (mask "t . <f t f <f t>> <t f 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 gM1 = gMask . gMute
let gM2 = gMask . gMute2
let gM3 = gMask . gMute3
let rootD  = "[d3'maj'3]"
let rootA  = "[a3,cs4,e4]"
let rootE  = "[e3,gs3,b3]"
let rootFm = "[e3,gs3,b3]"
let verse = [rootD, rootFm, rootA, rootFm, rootA, rootFm, rootA, rootFm]
let preChorus = [rootA, rootD]
let chorus = [rootD, rootFm, rootD, rootFm, rootD, rootD, rootD, rootD]
let song = [rootD, rootFm, rootA, rootFm, rootA, rootFm, rootA, rootFm, rootA, rootD, rootD, rootFm, rootD, rootFm, rootD, rootD, rootD, rootD, rootD, rootFm, rootA, rootFm, rootA, rootFm, rootA, rootFm, rootA, rootD, rootD, rootFm, rootD, rootFm, rootD, rootD, rootD, rootD]
let verseOff = [rootE, rootD, rootE, rootD, rootE, rootD, rootE, rootD]
let preChorusOff = [rootE, rootE]
let chorusOff = [rootE, rootE, rootE, rootE, rootE, rootE, rootE, rootE]
let songOff = [rootE, rootD, rootE, rootD, rootE, rootD, rootE, rootD, rootE, rootE, rootE, rootE, rootE, rootE, rootE, rootE, rootE, rootE, rootE, rootD, rootE, rootD, rootE, rootD, rootE, rootD, rootE, rootE, rootE, rootE, rootE, rootE, rootE, rootE, rootE, rootE]
d1 $ gF1 $ gM2
  $ midiOn "^42" (<| "k k k <k k*2 k <~ [~ k]>>")
  $ midiOff "^42" (<| "k . ~ <~ k*<1 2 2 4>>")
  $ "[clubkick:2,jazz,808bd:4]"
d2 $ gF1 $ gM1
  $ midiOn "^43" (<| "~ cp")
  $ midiOff "^43" (<| "~ cp")
  $ "clap:2"
  # hpf 5000
d3 $ gF1 $ gM1
  $ sometimesBy "0 . 0.1 <0.25 0.5 0.7 0.9>" (ply 2)
  $ "hh*8" |* gain (range 0.6 0.9 perlin)
d4 $ gF2 $ gM3 -- BASSLINE COMPAGNONNE
  $ struct "t(<2 [1|3|3|5]>,8) t(<3!3 5>,8,<0!3 1>)"
  $ note (arp "<up!8 down!6 down <down downup updown up>>" $ cat song) -- Intro
  # "bassWarsaw"
  # octerbus 41 (range 0 1.5 "^53")
  # room 0.2
d5 $ gF2 $ gM3
  $ note (cat song) -- Main song
  # "FMRhodes1"
  # pan 0.3
d7 $ gF2 $ gM3
  $ struct "t(1,2,1)" -- TODO Better structure
  $ note (cat songOff + 12) -- Offbeat
  # "FMRhodes2"
  # pan 0.8
d8 $ gM1 $ gF1
  $ midiOn "^60" (mask "t(<4 8>,<8 8 16 16>)")
  $ midiOn "^92" (ply 2)
  $ chop 16
  $ loopAt 2
  $ "jungle_breaks" # n "<42!3 41>"
  # gain 0.8
  # cut 8

once $ note "[a3,cs4,e4]" # "FMRhodes1" # orbit 3
once $ note "[e3,gs3,b3]" # "FMRhodes1" # orbit 3
once $ note "[fs3,a3,cs4]" # "FMRhodes1" # orbit 3
