do
setcps (92/60/4)
let gMute = (midiOn "^73" (mask "f*16"))
let gM = gMask . gMute
let modIndex = pF "modIndex"
let gF = gF1 . gF2
d1 $ gF1 $ gM -- Kick
  $ midiOn  "^41" (<| "k k k <k <k*2 [~ k]>>")
  $ midiOff "^41" (<| "k ~ ~ <~ k> . <k ~>")
  $ "jazz"
  # midiG' "^78" 0 1.3
  # pan 0.8
d2 $ gF1
  $ midiOn  "^42" (<| "~ s ~ s*<1!4 2!3 1>")
  $ midiOff "^42" (<| "~ ~ ~ k")
  $ "[drumtraks:9]"
  # midiG' "^79" 0 1.45
d3 $ gF1 $ gM
  $ midiOn "^43" (ply 2)
  -- 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" (ply 2)
  $ "d d d <d [<d ~> d]>" # "drum:2"
  # midiG' "^80" 0 1
  # room 0.2 # sz 0.1 # dry (slow 4 $ range 0.9 0.6 saw)
d4 $ gF2 -- V2
  $ midiOn "^44" (|+ note 12)
  $ midiOn "^76" (stutWith 4 0.25 ((|* gain 0.85) . (# room 0)))
  $ note (cat [
    "[bf3, d4, f4, a4]", -- Bbmaj7
    "[a3, c4, e4, g4]", -- Am7
    "[d4, f4, a4, c5, <e5 e4>]", -- Dm9
    "[g3, b4, d5, <f5 ~>]" -- <G7 G>
    -- "[cs4, b4, d5, <f5 ~>]" -- <G7 G>
  ])
  # "FMRhodes2"
  -- |- note 12
  |+ note 2 -- Adjust to C
  # modIndex (range 0 2 "^32")
  # midiG' "^81" 0 1.6
d8 $ gF $ gM
  $ midiOn "^92" (ply "2 <2!3 4>")
  $ loopAt 2
  $ chop 8
  $ "break:31"
  # midiG' "^84" 0 1
