import Sound.Tidal.ParVagues.Control

once "dr"

resetCycles
setcps (60/60/4)

-- Lucy Rode
do
  let chord = "ds3'major7'6"
  let chorus = pF "chorus"
  let mix = pF "mix"
  let modIndex = pF "modIndex" -- 0.2
  let vibrato = pF "vibrato"
  let gDJF = midiDJF "^49" 100 9900 0 1500
  let gFreqL = (# lpq (range 0 1 "^30"))
  let gFreqH = (# hpq (range 0 (1/16) "^29"))
  let gFreqs = (gFreqH . gFreqL)
  let g = gDJF . gFreqs
  d1
    $ g -- Beat
    $ fast 2
    $ midiOn "^41" (<|  "k k k k")
    $ midiOn "^42" (<| "k . k <~ [<~ k> <k ~>]>")-- RubADub
    $ midiNo "^41" "^42" (<| "<k <k*2 k(3,8)>>")
    $ "jazz"
    # midiG' "^78" 0 1.5
  d2 $ g -- Break
    $ loopAt 1
    $ midiOn "^43" (scramble 4 . often (ply 2))
    $ midiOn "^75" (struct "t*[8 16]")
    $ slice 4 (run 4)
    $ "fbreak80:4"
    # midiG' "^79" 0 2
    # cut 2
  d3 $ g -- Drumroll
    $ midiOn "^41" (
      (# room 0.4)
      . (# dry (slow 64 $ range 0.5 1.5 perlin))
    )
    $ juxBy 0.6 rev
    $ whenmod 4 3 (fast "<2 4 [4 8] 8>")
    $ fast "4 8"
    $ "drum:2"
    # midiG' "^80" 0 1.8
  d6 $ g --Rhodes arps
    $ juxBy 0.8 (
      (# modIndex 15)
      . (# cut 61)
    )
    $ note (scale "aeolian" (
      (arp "up" chord)
      +| "0*<2 4 4 2> 7(3,8)"
    ))
    # "FMRhodes1"
    # cut 6
    # midiG' "^82" 0 1.8
    # room 0.2 # dry 2 # sz 0.8
    # crush (range 10 3.7 "^54")
    # modIndex (range 0 4.19 "^34")
  d4 $ g -- Bassline pompée
    $ note (scale "aeolian" (
      "0*8"
      |+ (fast 4 $ arp "up"
      "<ds3'major7'4!2 <ds3'major7'4 [ds3'major7'4|ds3'major7'6]> ds3'major7'8>")
    ))
    # "bassWarsaw"
    # crush (range 10 2 "^53")
    # room 0.4
    # pan 0.2
    # midiG' "^81" 0 1.3
  d7 $ g -- Hammond
    $ ("0.125" ~>)
    $ fast 2
    $ midiOn "^59" (
      sometimesBy "^35" (superimpose
        (# voice 7) . (|* gain 0.8)
        . (|- note 12)
      )
      . sometimesBy (1 - "^35") (|* gain 0.65)
      . fast 2
      . (|+ note 12)
    )
    $ note (("[0 12 0 <~!6 12!2>]" |+ (slow 2 $ arpeggiate chord)))
    # "superhammond"
    # voice 6
    # octave 6
    # room 0.5 # sz 0.6
    # pan 0.74
    # sustain (range 0.125 0.5 "^55")
    # midiG' "^83" 0 1



  d2
    $ mask "<f!8 t!24>"
    $ "~ s ~ s*<1 2 1 1>"
    # "[snare:21,snare:22,snare:3]"
    # note "<0!16 -4!16>"
  d3 -- Drumroll
    $ mask "<f!16 t!16>"
    $ mask "<t(4,8)!8 t!8>"
    $ "drum:2*[8 <8 16 32> 8 16]"
    # pan 0.75
    # room 0.4
    # gain "<0.75 0.8!15>" * 1.4
  d5 -- Rhodes base + chords
    $ mask "<f!3 [f t] f!3 t t!24 t!32>"
    $ someCyclesBy "<0!16 1!16>" ( -- ARPS <3
      (|+ note 12)
      . sometimesBy "0 0.5!7" rev
      . fast "1 2"
      . arp "pinkyup"
      . (|+ pan 0.1)
      . (|* gain 1.2)
    )
    $ note ((
      "<0 ~> 0"
      + prog
      + "0 -12"
      - "12" -- Octave
    ))
    # "FMRhodes1"
    # modIndex "[0,5,10]"
    # pan 0.6
    # crush "<16!40 [<4 4 5 6>]!24>"
    -- # gain 0.95
  d6 -- Bonus bouton nassim deuxième drop
    $ mask "<f!32 f!8 t!24>"
    $ slice 8 (run "<8!4 4!4>")
    $ (loopAt 1)
    $ "breaks165"
    # gain 0.95