-- TODO Try Control with busses :D
do
-- region Utils
let modIndex = pF "modIndex"
let cF5 ch = cF 0.5 ch
let gDJF = (# djfbus 1 (range 0.15 0.99 "^49"))
let gRoom = (# roombus 2 (cF5 "29"))
let gSize = (# sizebus 3 (cF5 "30"))
let g = gDJF . gRoom . gSize
let gG = 1 * "^77"
let gM' ch l h  = gain (range l h (gG * ch))
let gM ch  = gM' ch 0 1
let ampb bus pat = (ampbus bus (gG * pat))
let midiOn ch pat = someCyclesBy ch pat
-- endregion
let prog = "<d6'm9 g6'dom7'ii c6'maj7 c5'maj7'iii>"
setcps (95/60/4)
d1 -- Kick techno 1-2-4/4
  $ g
  $ midiOn "^41" (fast 2)
  $ midiOn "^42" (fast 2)
  $ whenmod 4 3 (ply "2")
  $ "[jazz]"
  # gM' "^78" 0 2
d2 $ g
  $ midiOn "^43" (struct "t*[4 8 16 <8 [32 16]>]")
  $ "~ ~ h ~ ~ h*2 [<~ h h ~> <h ~>] h" # "h2ogmhh" # n "<0!4 1!4 2!4 3!4>"
  # gM' "^79" 0 1.25
d3 $ g
  $ loopAt 2
  $ midiOn "^76" (scramble "1 2")
  $ midiOn "^44" (scramble "1 8")
  $ slice 8 ("0 1 2*<1 <2 4>> 3 4 <5 4> <6!3 4> 7*<1!3 <2 4>>")
  $ "fbreak100:4"
  # gM' "^80" 0 1.8
d4 $ g -- Hoover bassline
  $ slow 2
  $ n ("0*[4 8]" + prog - 12)
  # s "superhoover"
  # squizbus 30 (range 1 1.7 "^33")
  # crushbus 31 (range 16 1 "^53")
  # ampb     32  (range 0 0.125 "^81")
  # pan 0.2
  # gain 0.8
  # legato 1.05
d5 $ g -- Arp aigus Rhodes
  $ midiOn ("^58" + 0.05) (struct "t(3,8) t(<5 <4 [2 4]>>,8)")
  $ note (arp "<up!6 [up|down|updown]>"
  $ prog
  |+ "0 12"
  - 24
  )
  # "FMRhodes1"
  # ampbus   40 (range 0  0.82 "^82")
  # crushbus 41 (range 16 1 "^54")
  # modIndex "[0,5]"
d10 $ g
  $ "~ [h2ogmcp,clap]"
  # gM' "^84" 0 1.5
  # room 0.7 # sz 0.7 # dry 0.9