do
setcps (128/60/4)
let gF1 =  (# djfbus 1 (range 0.05 0.95 "^49"))
let gF2 = (# djfbus 2 (range 0.05 0.95 "^50"))
let gF3 = (# djfbus 3 (range 0.05 0.95 "^51"))
-- let gDelay = (# delaybus 4 (range 0 0.5 "^13")) . (# delayfb 0.7) . (# delayt 0.5)
let gDelay = id
let gMask = (midiOn "^41" (mask "t . <f t f <f t>> <t f f <t f>>"))
let gMute = (midiOn "^73" (mask "f*16"))
let gMute2 = (midiOn "^74" (mask "f*16"))
let gM = gMask . gMute
let gM2 = gMask . gMute2
-- let gDJF1 = someCyclesBy "<0!30 2!2>" (# djfbus 4 (slow 2 $ range 0.5 0.1 saw))
-- let gDJF2 = someCyclesBy "<1!8 0!24>" (# djfbus 4 (slow 8 $ range 0.1 0.5 saw))
-- let gDJF = gDJF1 . gDJF2
let gO = (# octersubbus 5 (range 0 1 "^29")) . (# octerbus 6 (range 0 1.2 "^29"))
let gDJF = id
let gOcter = id
d1 $ gF1 $ gM2 -- Kick
  $ midiOn "^42" (<| "k k k <k!7 [<k ~> k]>")
  $ midiOff "^42" (
    (<| "<k!24 ~!8> ~ ~ <~!3 k> . ~ <~!7 k> ~ ~")
    )
  $ fix ((|* gain 0.9) . (# lpf 5000)) "rampleA0"
  $ "[rampleA0:3,jazz]"
  # gain 1.2
  -- # midiG' "^78" 0 1.5
d2 $ gF1 $ gM
  $ "~ s ~ s"
  # "[rampleA0:11,rampleA2:11]" -- Basic snare
  # gain 1.2
d3 $ gF1 $ gM $ gDelay -- Contretemps
  -- $ midiOn "^76" (slow 2)
  -- $ midiOff "^44" (slow 2)
  $ "~ h ~ h ~ h ~ h*<1 2 2 <1 2>>"
  -- $ "~ h ~ <~!4 h!28> ~ <~!3 h ~!3 h h!8> ~ <h ~ h ~ h!3 <h*2 [~ h*<1 2>]>>"
  # "[snare:38]"
  # room 0
  # gain 1.2
d4 $ gO $ gF2 -- SUBSUB INFRABASS
  -- $ juxBy 0.8 (
    -- (# crushbus 41 (slow 16 $ range 12 2.5 saw))
    -- . (# lpfbus 41 (slow 16 $ range 10000 2000 saw))
  -- )
  $ note "<g3!4 c3!4>(3,8)"
  # "jungbass:3"
  # lpf 2000
  # cut 4
  # crushbus 41 (range 16 2 "^53")
  # pan 0.8
  # gain 2
d5 $ gO $ gF2 -- Basse appel important
  $ note "<fs3 [fs3@7 b3] [fs3@7 g3] [fs3@5 g3 fs3 d2] [b2@7 d2] [b2@7 d2] [b2@7 gs2] [b2 . b2 d3 <fs3 g3>]>"
  # "giorgio_syn:0"
  -- # midiG' "^81" 0 1.5
  # pan 0.32
  # distortbus 51 (range 0 1.2 "^54")
  # cut 7
  # gain 1.5
d7 $ gO $ gF3 -- guitare salvatrice
  -- $ mask "<f!32 t!32>"
  $ slice 16 "0*[4 <4 4 1 1 4 4 1 4 1 1 4 4> 4 <1!3 4>]"
  $ chop 16
  $ loopAt 2
  $ "fguitar:55"
  # cut 7
  # gain 1.2
d6 $ gO $ gM $ gF1 -- Rim drums
  $ fix ((|* gain (1.2 + 0.1 * perlin))) (n 18)
  $ n (stack [
    "~ ~ ~ <~!7 <13 14 15 16 17>>", -- Cy
    "<~!0 18([<1 3> <1 <3!3 5>>],8)!16> 18(<1 1 3 1>,8)"
  ])
  # "h2ogmhh:1"
  |* gain (range 0.8 1 perlin)
  # gain 1.5
d8 $ gM2 $ gF1 -- BOOM BOOM THE BREAKS
  $ fix (|* gain 0.8) ("jungle_breaks:24")
  $ whenmod 8 7 (slice 4 "0 3 2*<1 2> 1*<1 2 4 4>")
  $ midiOn "^36" ((# n "19")) -- Pure COMEON!
  $ midiOn "^56" ((# n "23")) -- Raise COMEON!
  -- $ midiOn "^60" (const $ loopAt 2 $ chop 8 $ "jungle_breaks:60" # gain 0.8)
  $ chop 16 $ loopAt 2
  $ "jungle_breaks:24"
  # gain 1.2
d9 $ gF3
  $ "jungle_pads:22/4"
  # cut 9
  -- # midiG' "^19" 0 1
d10 $ gF1 -- NOISES
  $ fix (|* gain (slow 32 $ range 1 0.3 saw)) "giorgio_syn"
  $ (stack [
  "<~!16 giorgio_syn:52!16>/2"
  ])
  # cut 10



d11 $ gF2 -- Le Météore (TODO: Variations? Autre sample de meteore?)
  $ slice 4 "0 1 2*<1!7 8> 3*<1!3 2>"
  $ "meth_bass:0/2"
  # note "c"
  # midiG' "^17" 0 1
  # pan 0.35
  # crushbus 91 (range 16 2.5 "^53")
  # cut 11