resetCycles

-- Hellofi: Major chill electrized beat
do
setcps (60/60/4)
let modIndex = pF "modIndex"
let mix = pF "mix"
let prog = "<a g f g>"
let chords = "c'maj'4 c'major7'2"
let len = 64
let outLen = 16
let brk = 32
let whenOut pat = whenmod len (len - outLen) pat
let whenIn  pat = someCyclesBy "<16!8 0!48>" pat
let whenPt1 pat = someCyclesBy "<1!32 0!32>" pat
let whenPt2 pat = someCyclesBy "<0!32 1!32>" pat
let whenPt2Begin pat = someCyclesBy "<0!32 1!8 0!20>" pat
let loopLPF = (whenmod brk (brk - 8) (# lpf ("<12 10 10 8 8 5 5 2>" * 100)))
let whenInFade  = whenIn  (|* gain (slow outLen $ range 0.8 1   saw))
let whenOutFade = whenOut (|* gain (slow outLen $ range 1 0.2   saw))
let whenOutHPF  = whenOut (|* hpf  (slow outLen $ range 0 10000 saw))
let g = loopLPF
d1 $ g -- Kick
  $ whenIn (mask "<f!7 [f t] t(2,4)!4 t(3,4) t(5,8) t(6,8) t>")
  $ whenOutFade
  $ whenPt2Begin (degradeBy "<1!3 [1!3 0.5] 0.5!3 [1!3 0]>")
  $ whenPt2 (<| "k . <[k ~ <k k*2> <k ~>] . k(<3!3 5>,8)>")
  $ whenPt1 (<| "k [~|k*4] . ~ [<k <~ k>> <~ k>]")
  $ "jazz"
  # attack 0.25
  # gain 2
d2 $ g -- Clap contretemps
  $ whenIn (mask "<f!7 t f!4 t!4>")
  $ whenOutFade
  $ whenPt2Begin (# room (slow 8 $ range 0.4 0 saw))
  $ superimpose ( -- Equalize
    (# hpf 2000) . (# lpf 10000) . (|* gain 1.1)
  )
  $ "~ cp"
  # lpf 500
  # gain (slow 4 $ range 0.5 0.95 saw)
  # dry 1
  # pan 0.6
d3 $ g -- Drumroll léger
  $ whenIn (mask "<f!3 t!13>" . slow "16 [8 4] 4 [4 2] 2!4 [2 1]!4 [2 1!3]!3 1")
  $ whenOutFade
  $ whenPt2Begin (degradeBy (1 - (slow 8 cosine)))
  $ whenmod 8 7 (|* gain "1.05 1.1")
  $ sometimesBy "<0.1 0.125 0.25 0.5>" (ply "<2!4 4!4>")
  $ someCycles (degradeBy "0 0.25" . fast 2)
  $ "dr*8" # hpf 150 # hpq 0
  # room 0.8 # sz 0.5 # dry 1
  # gain (slow 8 $ range 0.5 0.8 saw)
  # pan  (slow 4 $ range 0.3 0.5 saw)
d4 $ g -- Bassline doublée
  $ whenIn (mask "<f!4 t!12>")
  $ whenOutFade
  $ whenOut ((# lpf 5000) . (# lpq 0.2))
  $ whenmod 4 3 (swingBy (1/3) "8")
  $ whenPt2 (whenmod 4 3 (# cut 4))
  $ juxBy 0.75 rev -- JUX REV DOUBLE
  $ sometimesBy "<0 0.25 0.5 1>" (off "0.125" id)
  $ arp "up"
  $ note (prog |+| "c2'maj*4")
  # "bassWarsaw"
  # gain 0.85
  # room (slow 32 $ range 0 0.8 saw)
  # sz 0.5
d5 $ g -- FMRhodes base
  $ whenInFade
  $ whenOutHPF
  $ whenmod 16 4 (superimpose (# modIndex 5))
  $ note (
    prog
    |+| "<0 0 [0 . ~ ~ <-5 ~> -3] [0 . ~ ~ 0]>"
    |+| "0 . 0(3,8)"
    - 12
  )
  # "FMRhodes1"
  # cut 42
  # room 0.4
  # gain 0.95
  # pan 0.3
  # mix 1.15
  # modIndex 0
d6 $ g -- FMRhodes arps électriques
  $ whenIn (mask "f!8 t!8")
  $ whenInFade
  $ whenOutHPF
  $ whenmod 32 16 (# modIndex (slow 8 $ range 0 3 perlin))
  $ note (prog
    + "0 . 0*<1 2 4 [8 4]> 0"
    + ( -- Remplissage accords
      slow (slow 4 "<16 8 4 4 4 2 2 1>") $ -- Éclairci
      arp "updown" chords)
    + "0 12 0"
    - 24
  )
  # "FMRhodes2"
  # mix 1.15
  # gain 0.9
  # pan 0.2
d7 -- Carillons back
  $ g
  $ whenIn (slow "<4!8 2!8>")
  $ whenInFade
  $ whenOutHPF
  $ juxBy 0.5 (rev . fast 4)
  $ fix ((# "808hc:0") . (|* gain 0.85)) "h"
  $ fix ((# "808mc") . (# n "<4 3 2 3>")) "m"
  $ fix ((# "808lc") . (# n (slow 4 "<0 0 0 2>"))) "l"
  $ "~ l <~ [~ ~ ~ <h!3 m>]> l"
  # room 0.5 # sz 0.8 # dry 0.8
  # gain (slow 16 $ range 0.5 0.8 saw)
d8 $ g -- Final choirs
  $ whenOut (# gain (0.8 * (slow outLen $ range 0.5 1 saw)))
  $ someCyclesBy "0!3 1 0 1!3" (superimpose (
    (|+ note 24)
    . degradeBy "0 1!7"
    . (# legato 2)
    . (|* gain 0.87)
    . (|+ pan 0.3)
    ))
  $ someCyclesBy "0!4 1 0 0 1" (juxBy 0.6 (
    arp "up!3 down" . ply "2 4" . (|+ note 12)
    . (|* gain 0.6)
  ))
  $ note (prog
    |+| chords
    + "-24"
  )
  # "moogBass"
  # gain 0