-- Voila le code: techno-code samplé
-- Todo variations diverses: ponts, etc

do
resetCycles
solo 1 -- Rythmique
solo 3 -- Basse
solo 4 -- Le code
solo 5 -- Synth
let bars = 64
let bPont = 32
d1 -- RYTHMIQUE
  $ mask "<f!8 t!24 t!32>"
  $ fix (
    whenmod bars bPont ( -- Pont!
      mask "t(<1 2 4 1>,4)"
    )
    . superimpose (# "jazz")
    ) (n 0) -- Kick!
  $ fix (
    whenmod bars bPont ( -- Pont!
      |* gain 0.5
    )
    . mask "t(<4 4 8 1>,8)"
    . (|* gain 0.8)
    . (# lpf (slow 64 $ range 500 20000 saw))
    ) (n 2) -- Drum
  $ fix (
    whenmod 64 32 (fast 2) .
    (# room 0.7) . (# sz 0.8) . (# dry 0.9) .
    (# gain 1.1)
  ) (n 3) -- Claps
  $ fix (
    fast "32 <4!2 [4 8] 4 8!2 16 [16 4]>"
    . (|* gain 1.15)
  )
  (n 4) -- Drumroll!
  $ n (stack
    [
    "0*4",
    "1(<1 3 1 3 1 3!3 3 5 3 1 3 5 5>,8)",
    "2*8",
    "~!3 3*<1!3 2>",
    "4",
    ""]
    ) # "cpu"
    # gain 1
    # pan 0.35
d3
  $ off "e" ((|+ note 12) . (|* gain 0.85) . (# crush 8))
  $ whenmod bars bPont (
    # crush (slow (bars - bPont) $ range 8 4 isaw)
  )
  $ chop "<1 2 1 [2 4] [8 4] [2 1]>"
  $ note ("<c!3 <df g>>")
  # octave 3
  # s "supersaw" # voice 0.1
  # crush 10
  # gain 0.8
  # pan 0.6
d4 -- Le code
  $ superimpose ((# gain 0.8) . (# crush 4.5) . (# cut 41))
  $ whenmod 64 32 ( -- C'est ça
    (>| n "6*<1 2 4 1>")
    . (|* gain 1)
  )
  $ whenmod 8 4 ( -- Comprennent pas
    (>| n "4") . (# begin 0) . (|* gain 1.2) . (# speed 0.95)
  )
  $ whenmod 32 16 ( -- Bon le code
    (>| n "5/2") . (# begin 0)
  )
  $ "k" # "kaamelott:3" # begin 0.2
  # gain 1.1
  # cut 4
d5
  $ mask "<f!16 t!16>"
  $ whenmod 16 4 (superimpose (
    juxBy 0.25 rev .
    ply 2 . fast 2 .
    (# n 0) .
    (|* gain 0.95)
  ))
  $ off "e [e|q]" id
  $ off "q" (|+ note "<5 3 5 7>")
  $ note ("<c!3 <df g>>")
  # n "<0 <1 2>>"
  # "dsynth"
  # gain 0.65
