once $ "dr"

do
let gMute = (midiOn "^73" (mask "f*16"))
let gM = gMask . gMute
setcps (120/60/4)
d1 $ gF1 $ gM1
  $ midiOn "^41" (<| "k k k k*<1 2>")
  $ midiOff "^41" (<| "k*<1!4 2!4> . k(<1 3 3 <5 [3 <1 5>]>>,8)")
  $ "[cpu,jazz,808bd:3,808bd:2]"
  # gain 0.9
d2 $ gM $ gF2
  $ midiOn "^42" (<| "~ s ~ s")
  $ midiOff "^42" (<| "~ s")
  $ "snare:39"
  -- # note "-2"
  # gain 1
  # att 0.02 # rel 0.9
d3 $ gF1 $ gM2
  $ midiOff "^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
d8 $ gF1 $ gM
  $ midiOff "^60" (struct "t(<4>,8)" . segment 8)
  $ whenmod 16 8 (iter 8)
  $ midiOn "^36" (loopAt 2 . (# n "40"))
  $ loopAt 2
  $ midiOn "^92" (ply 8)
  -- $ slice 16 (run 8)
  $ chop 8
  $ "jungle_breaks:8"
  # speed (range 0.5 1.5 "^36")
  # cut 8
  # gain 0.8

once
  $ "<c a d e>" # "giorgio_syn"
  # gain 0.4

once $ "90s_synatm" # gain 2

d1 $ "k ~ ~ ~" # "kick"
