import Sound.Tidal.ParVagues.Control

-- Alerte Verte
do
setcps (160/60/4)
let g1 =  (# djfbus 1 (range 0.05 0.95 "^49"))
let g2 = (# djfbus 2 (range 0.05 0.95 "^50"))
let g32Bridge = whenmod 64 32 (|* gain (slow 16 $ range 0.85 1.1 saw))
d1 $ g1 -- KICK
  $ midiOn "^41" (<| "k k k <k!3 k*2>") -- RUN!
  $ midiOn "^42" (<| "b . ~ b ~ <~!3 b>") -- WAIT?
  $ midiOff ("^41" + "^42") (<| "k*2") -- ST0P.
  $ fix (|* gain 0.9) "kick:5"
  $ "[jazz,kick:5]"
  # release 0.8
  # midiG' "^78" 0 1.5
d2 $ g1 -- Snare tchak!
  $ midiOn "^75" (ply 2)
  $ g32Bridge
  $ whenmod 16 12 (struct "t*<4 4 8 16>") -- Snare Rush
  $ "~ s . ~ <~ ~ s ~ s!3 ~ s s ~ s s ~ s s ~ s s s>"
  # "[snare:40,snare:22]"
  # pan 0.55
  # note (range "-7" 7 "^51")
  # room 0.8 # dry 0.99 # sz 0.2
  # midiG' "^79" 0 1.2
d3 $ g1-- Running Hats
  $ g32Bridge
  $ midiOn "^44" (slow 2)
  $ midiOn "^76" (fast 2)
  $ "hh*[8 . 8 <16 8 4 [4 8]>]"
  -- # n "[0|0|0|0|1|1|3|3]*8"
  # midiG' "^80" 0 (1.7 + (slow 4 perlin/4))
  # room  (slow 8 $ range 0.2 0.45 saw)
  # sz    (slow 8 $ range 0.8 0.2 saw)
  # note (range "-12" 12 "^52")
  # dry   (slow 4 $ range 0 2 perlin)
  # pan 0.6
  # cut 3
d4 $ g1 -- Resolute Bass
  -- $ jux ((# cut 41) . (|+ crush (range 0.5 1 perlin)))
  $ midiOn "^89" ( -- Glitch vary end
    slice 8 "<[0 1 <2!3 1*2> <3!3 1*2>]!4 0*4!2 [0 1 0 1] [0 1 0 [0 1 2 3]]>"
  )
  $ midiOn "^57" (rev . slice 8 "0 [1 0] 2 <3 0 3 3*4>") -- La morale à l'envers
  $ loopAt 4
  $ chop 16
  $ "fbass:25"
  # pan 0.15
  -- # room 0.125 # sz 0.1 # dry 1
  # crushbus 41 (range 16 1.25 "^53")
  # midiG' "^81" 0 1.5
  # cut 4
d6 -- Guitar A -- L'attente (18=0) TODO Rework?
  $ g2
  $ mask "<f!3 t>"
  $ ("0.175" ~>) -- Calage
  $ whenmod 4 2 (slice 8 "0")
  $ slice 5 4
  $ segment 16
  $ "fguitar:24"
  # pan 0.8
  # crushbus 51 (range 10 3.5 "^54")
  # midiG' "^82" 0 (1.5 * (range 1.4 0 "^18"))
  # cut 6
d7 -- Guitar B -- Le run (18=127)
  $ g2
  $ whenmod 4 3 (# silence)
  $ midiOn "^58" (
    (# n 27)
  )
  $ midiOff "^58" (segment "<0.5!2 1 <2 4 8 [8 16]>>")
  $ "fguitar" # n "<25!3 [25 26] 25!2 27!2 27!8>"
  # pan 0.65
  # crushbus 71 (range 10 2 "^54")
  # midiG' "^82" 0 (1.2 * (range 0 1.4 "^18"))
  # leslie "^34"
  # lsize (1 + (slow 8 perlin * 2))
  # lrate 6.7
  # cut 71
d8 $ g1 -- Clave de l'été pitchable
  $ midiOn "^59" (fast 2)
  $ midiOn ("^91" - "^59") (fast 2)
  $ (|* gain "0.75 1 1 1 0.75 1 1 1")
  $ "d ~ ~ d d ~ d <~!3 d>"
  # "[<808lc!6 808hc!2>,<~!4 808mc!4>]"
  # speed (range 0.5 2 "^55")
  # midiG' "^83" 0 1.5
d10 $ g2 -- Nappes crushées indépendantes
  $ midiOn "^92" (ply "<2 4 [8 16 [4|6|4]!6]>")
  -- $ superimpose ((|- note 12) . (# cut 101))
  $ note (euclid "<5 3 6>" 6
  $ "<e e <c c g> <e b>>")
  # "moog"
  # cut 10
  # rel 1
  # pan 0.85
  # crushbus 100 (range 16 0.35 "^36")
  # midiG' "^20" 0.2 1.5
d11 $ g2 -- Sirene indépendante
  $ note ("<e e c e>/4")
  # octave 3
  # legato 2
  # "supersiren"
  # speed 0.2
  # crushbus 110 (range 10 0.1 "^35")
  # ampbus 111 (range 0 0.5 "^19")
  # pan "<0.2!16 0.8!16>"
  # midiG' "^19" 0 1.5
  # room 0.4 # sz (slow 32 $ range 0.125 0.9 saw)
  # dry (slow 32 $ range 0 2 perlin)
  # cut 11
d9 $ g1 -- CLAPS! -- FIXME Broken whenmod 4 3
  $ "~ c ~ <c!3 c*2>" # "cp"
  # midiG' "^84" 0 1.5


d6 $ "seawolf:0/4"
  # cut 6
  # gain 0.75

once $ "dr" # gain 1