-- Around the Bass
do
setcps (120/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 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 lineGoodLife = "b3 ~ ~ b3 ~ ~ b3 ~     ~ fs3 ~ ~ fs3 ~ ~ a3           ~ a3 ~ a3 ~ ~ e3 ~       ~ e3 ~ e3 b3 ~ b3 ~"
let lineAround0 = "~ ~ ~ ~ a4 ~ ~ ~ a4 ~ ~ ~ a4 ~ b4 c5"
let lineAround1 = "~ ~ ~ ~ c5 ~ ~ ~ c5 ~ ~ ~ c5 ~ d5 e5"
let lineAround2 = "~ ~ ~ ~ e5 ~ ~ ~ e5 ~ ~ ~ e5 ~ ~ ~"
let lineAround3 = "fs5 ~ e5 ~ d5 ~ c5 ~ b4 ~ a4 ~ g4@3 a4"
d1 $ gF1 $ gM2
  $ "[techno,jazz,kick:5]*4"
  # gain 0.75
d2 $ gF1 $ gM
  $ whenmod 32 24 (fast "<2!3 [<2 4> 4]>")
  $ "~ [cp,snare:24]"
  # pan 0.7
  # gain 0.7
d3 $ gF1 $ gM
  $ sometimesBy (slow 16 $ range 0 0.5 saw) (mask "t(3,8) t(5,8)")
  $ "hh*[16 16 16 <8!2 16 12>]"
  # midiG' "^80" 0 1.6
  # room 0.2 # dry 1
  # pan (0.4 + 0.2 * (slow 4 perlin))
d4 $ gF2 $ gM
  -- $ note (slow 2 $ lineGoodLife) # "bassWarsaw"
  $ midiOn "^89" (|+ note "c'minPent'2")
  $ midiOn "^57" (<| note lineAround3)
  $ midiOff "^57" (<| note (cat [lineAround0, lineAround1, lineAround2, lineAround3]))
  $ "bassWarsaw"
  # octave 4
  # crushbus 41 (range 16 2.5 "^53")
  # octersubbus 42 (range 0 4 "^33")
  # room 0.4
  -- # delayfb 0.8 # delayt 0.25
  # gain 0.7
  # pan 0.3
d5
  $ midiOn "^90" (sometimesBy "0 1" rev)
  $ midiOn "^58" (struct "t(<3!3 <5 2>>,<8!7 4>) . t(<5!7 <8 16>>,8)" . arp "pinkyup")
  $ note ("<[a4,c4,e4] [c4,e4,g4] [e4,g4,b4] [d4,fs4,g4]>")
  # "FMRhodes1" # modIndex 2.85
  # pan 0.7
d8 $ gF3
  $ midiOn "^20" (# n "20")
  $ midiOn "^92" ((# pan 0.4) . (# n "19"))
  $ sometimesBy "^56" (slice 4 ("0 <1 <1*2 ~> ~ 1> <2 ~> 3*<1 <2 4>>"))
  -- $ whenmod 4 3 (slice 4 ("0 1 2 3*4"))
  $ loopAt 2 $ chop 8
  $ n "24" # "jungle_breaks"
  # pan 0.55
  # gain 0.9
