do
let midiGGlobal = "^77" * 1.5
let _gainG ch     = (gain (midiGGlobal * ch)) -- gain Global
let midiG' ch l h = _gainG (range l h ch)     -- midiGain   control
let midiG  ch     = midiG' ch 0 1             -- let midiG ch val  = (gGain (ch * val))
let midiOn    ch    pat = someCyclesBy ch             pat
let midiOff   ch    pat = someCyclesBy (1 - ch)       pat
let midiNo    c1 c2 pat = someCyclesBy (1 - c1 - c2)  pat
let gDJF =  (# djfbus 1 (range 0.1 0.9 "^49"))
let g = gDJF
setcps (110/60/4)
let prog = "<c6'maj7'2 <g6'maj'2 g6'maj> d6'm9 <g6'maj g6'maj'4>>"
-- let prog = "<d6'm9 g6'maj'4>"
let progm = "<<c c e e> d e <d g>>"
d1 $ g
  $ midiOn "^41" (<| "k k k <k k*2 [~ k] k*2>")
  $ midiOff "^41" (<| "k . k <~ [<~ k> <k ~>]>")-- RubADub
  $ "jazz"
  # midiG' "^78" 0 1.8
d2 $ g
  $ whenmod 8 4 (ply "1 <1 2 1 1> <2 1 1 2> <1 1 2 1>")
  $ midiOn "^43" (fast 2)
  $ "~ s ~ <s!3 ~>" # "sn" # n "[1,10]"
  # midiG' "^79" 0 1.6
d3 $ g
  $ midiOn "^76" (fast 2)
  $ struct "t*[8 <<4 16> 16 <8 [8 4] 4 8> 16>]"
  $ "h2ogmhh" # n "[10|11|12]*4"
  # midiG' "^80" 0 1.5
d4 $ g -- Bassline
  $ swingBy "h" 8
  $ midiOn "^57" (degradeBy $ "0 1!3 0 1!2 0" * 0.5)
  $ note ((struct "t(3,8) t(<4 4 5 [5 8]>,8)"
  $ arp "<pinkyup!2 converge!2>" prog)
  + "[0,<0 12>]"
  - 36)
  # "supersaw" # voice 0.01
  # pan 0.2
  # room 0.2
  # crushbus 40 (range 10 1.85 "^53")
  # midiG' "^81" 0 1.5
d5 $ g -- Nappes plage
  $ midiOn "^58" (superimpose (
    struct "t . t(3,8)"
    . arpeggiate
    . (|+ note 12)
    . (# cut 51)
    . (|* gain 1.1)
  ))
  $ note (prog - 12)
  # "moog:2"
  # midiG' "^82" 0 1
  # attack 0.8
  # room 0.4 # sz 0.9
d6 -- Guitare nostalgique
  $ midiOn "^59" (slice 4 "0 1 2 3")
  $ mask "<t!3 f>"
  $ "fguitar" # n "<34!32 35!16 34!16>"
  # midiG' "^83" 0 1.4
  # crushbus 60 (range 10 2.85 "^55")
  # pan 0.65
  # cut 6
d7 $ g
  $ midiOn "^60" (mask "t([4 <8 8 4 8>],16)")
  $ superimpose (
    (>| note (
      "<0 <-1 2>>" + "0(3,8) 0"
      ))
    . (|+ note 24)
    . (|* gain (0.6 * (range 0 1.25 "^56")))
  )
  $ note (
    progm
    + "<0 0 10 0> <7 12>"
    + "0 . [0!3 ~] 0*<1!7 2>"
  )
  # "cbow:8"
  # pan "<0.7!7 0.3>"
  # midiG' "^84" 0 (1.5 * "^20")
d8 $ g
  $ midiOn "^60" (off "q" (# n 11) . (|* gain 0.95))
  $ note (
    struct "t . t(<1!4 3!4 [5 3]!4 5!4>,8,<0!3 4>)"
    $ arp "pinkyup <updown downup>"
    $ (fast 2 $ prog)
  )
  # "cbow" # n "[9,<~!4 10!4>]"
  # pan "<0.3!7 0.7>"
  # midiG' "^84" 0 1.5