-- /home/pln/Work/Art/GLITCHWAVE/outputs/digital_flow.gif
do
setcps (138/60/4)
-- resetCycles
let gMute = (midiOn "^73" (mask "f*16"))
d1 $ gF1 $ gM1
  $ midiOn  "^41"  (<| "k k k k")
  $ midiOff "^41" (<| "k . k(<3!3 [5 5 8 5]>,8)")
  $ "[techno:0,808bd:2,909,kick:4]"
  -- $ "jazz"
d2 $ gM2 -- Clap timer
  $ midiOn "^42" ((|* gain "0 1 0.8 1") . (<| "~ c <~!3 [~ c]> c"))
  $ midiOff "^42" ((|* gain "1 0.8") . (<| "c . ~ ~ ~ <~!3 c>"))
  $ drumFrom "[sakatadpm48,rolandr8]" "cp"
  # lpf 2000
  # gain 1.2
d3 $ gF1 $ gMute
  $ 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
  # gain 1.1
d4 $ gF2 $ gM3-- Basse Magie Noire Meta-Programmation. :sorcerer:
  -- FIXME: Si les dieux d'OPAL t'inspirent, remplace moi
  $ midiOn "^44" (struct "t(4,8,1)")
  $ slow 4 
  $ midiOff "^76" (mask "t t t f")
  $ note ("c3               <d3 [d3] d3 [d3@3 f3]>   e3  <g3 b3 a3 c4>" 
          -- + "<0!8 <[<0!3 0@7> 3]!3 [0 9 12 0]>!8>  <0!3 3 0 3 <3 7>>       <0 12> 0"
          ) -- Variations majeures
  # "bassWarsaw"
  # crushbus    41 (range 16 5 "^32")
  # octersubbus 42 (range 0 3 "^52")
  -- FIXME(#54) d4 drives more controls than the grid gives it (B4 + C4). ^17 now belongs to another orbit, so the line(s) below are COMMENTED OUT rather than left firing across columns. Nothing is lost — restore by removing the dashes once gSel folds this onto d4's own control.
  -- # octerbus    43 (range 0 2 "^17")
  # legato 2
  # cut 4
  # room 0.7
  # sz 0.3 # dry 1.5
  # gain 1.5
d5 $ gF2 $ gM3 -- Giorgio Friendo
  $ slow 2 
  $ stack [
    note ("c3(3,8) <d3 <d3*2 d3(3,8)>> e3([3 1 3],8) <g3 [g3 <e3 d3>]>" 
    + "<0!7 -3>" 
    + 24) 
    # "giorgio_syn:7" 
    # cut 51
    # gain 0.7 
    # att 0.14 # rel 2 
    # legato 1.2
    ,
    note "<c3 g2 a2 f2>" 
    # "FMRhodes1" 
    # gain 1.0 
    # legato 1.5
  ]
  # room 0.8 # size 0.8
  # gain 2
  # pan 0.3
  # crushbus 51 (range 16 3.5 "^33")
d12 $ gF3 $ gM3
  -- $ midiOff "^29" (# delay 0)
  $ slow 4 $ ply 2
  $ note "<[c4,e4,g4] [c4,f4,a4] [c4,e4,g4] [g3,b3,d4]>"
  # "FMRhodes2"
  # legato 2
  # delay (range 0 1 "^29") 
  # delayt 1.125  
  # delayfb 0.8
  # gain 1.4
  # lpf (slow 16 $ range 800 2000 sine)
  # room 0.4
d7 $ gF3 $ gM3 -- Lady Perplexity
  -- $ whenmod 8 7 (# silence)
  $ midiOn "^91" (ply "2 4 <8 8 4 16>")
  $ midiOn "^59" (chop 4)
  $ someCyclesBy "^35" (mask "t(3,8) t(<3 <5 8>>,8) t(<3 [<5 3> <3 5>]>,8) t(<3!3 5>,8)")
  -- FIXME(#54) d7 drives more controls than the grid gives it (B7 + C7). ^55 now belongs to another orbit, so this step STILL FIRES ACROSS COLUMNS — turning ^55 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 d7's own control with gSel.
  $ sometimesBy "^55" (juxBy 0.25 (loopAt 0.5 . (# cut 71) . (|* gain (slow 8 $ range 0.7 1 saw))))
  $ sometimesBy "^55" (rev)
  -- $ midiOff "^59" (chop 4)
  $ chop 16 
  $ loopAt 8
  $ "rhadamanthe_vocal:1"
  # cut 7
  # pan 0.6 
  # room 0.4 # sz 0.5 # dry 1.4
  -- # pan (slow 16 $ range 0.9 0.6 saw)
  # gain 1.2
d8 $ gF1 $ gM2 
  $ midiOn "^92" (slice 4 "0 1 2 3 0 1 3 3 1 3 1 2 0 1 3*2 3*2")
  $ midiOff "^60" (mask "t(4,8,1)")
  $ midiOn "^36" (loopAt 2 . (# "break:2"))
  $ midiOn "^56" (loopAt 2 . (# "jungle_breaks:90"))
  $ chop 16 
  $ loopAt 1 $ "jungle_breaks:2" # cut 8
  # gain 1.3
  # room 0.3 # dry 1.4 # sz 0.3
  # lpf 5000
