Examples / Songs / Agency

Cascade Failure

Demos/Songs/agency/06-cascade-failure.strudel · 174 BPM

Play in Cycletron Opens it in the app in your browser, with the visualizers. Desktop browsers only.

// AGENCY OST — 06 · Cascade Failure
// Systems fall like dominoes. Neurofunk with breakcore edits at the peak.
//
// FORM (174 BPM · 1 cycle = 1 bar · 72 bars ≈ 1:39 · loops):
//   intro   8  e2  alarm (minor-2nd siren) + ticking hats + filtered kick
//   build   8  e3  + reese fades in low, snare roll into the drop
//   drop    16 e5  full two-step break + reese + falling-domino arp
//   glitch  8  e5  breakcore edits: chopped kicks, snare rolls, bitcrush
//   break   8  e2  half-time disbelief — sub + airy pad, alarm distant
//   drop2   16 e5  full + 16th hats + octave stab double
//   outro   8  e1  drums filter away, the alarm never stops
// hook: the falling-domino arp (descending cascades) — both drops.

setbpm(174);

"<intro@2 build@2 drop@4 glitch@2 break@2 drop2@4 outro@2>".slow(4).pickRestart({
  intro: stack(
    note("<[d#5 e5 d#5 e5] [d#5 e5 d#5 e5] [d#5 e5 d#5 e5] [d#5 e5 d#5 d#5]>")
      .s("square").lpf(1200).decay(0.12).sustain(0).room(0.5).gain(0.22).pan(0.55),
    s("hh*8").gain(0.18),
    s("bd ~ ~ ~ ~ ~ ~ ~ ~ ~ bd ~ ~ ~ ~ ~").lpf(400).gain(0.7),
    chord("<G#m G#m E E>").voicing().s("wt_pad")
      .attack(0.8).release(1.2).lpf(900).room(0.6).gain(0.24)
  ),
  build: stack(
    note("d#5 e5 d#5 e5").s("square").lpf(1400).decay(0.12).sustain(0).room(0.5).gain(0.22).pan(0.55),
    s("hh*8").gain(0.16),
    s("bd ~ ~ ~ ~ ~ ~ ~ ~ ~ bd ~ ~ ~ ~ ~").gain(0.85),
    s("<[~ ~ ~ ~ sd ~ ~ ~ ~ ~ ~ ~ sd ~ ~ ~] [~ ~ ~ ~ sd ~ ~ ~ ~ ~ ~ ~ sd ~ ~ ~] [~ ~ ~ ~ sd ~ ~ ~ ~ ~ ~ ~ sd ~ sd sd] [sd*4 sd*4 sd*8 sd*8]>")
      .gain(0.6),
    note("<[g#1 ~ g#1 g#1] [g#1 ~ g#1 g#1] [f#1 ~ f#1 f#1] [e1 ~ e1 e1]>")
      .s("supersaw").lpf(sine.range(150, 700).slow(4)).resonance(10).gain(0.42)
  ),
  drop: stack(
    s("bd ~ ~ ~ ~ ~ ~ ~ ~ ~ bd ~ ~ ~ ~ ~").gain(0.95),
    s("~ ~ ~ ~ sd ~ ~ ~ ~ ~ ~ ~ sd ~ ~ ~").gain(0.8),
    s("hh*16").gain(0.2),
    note("<[g#1 ~ g#1 g#1] [g#1 ~ g#1 e1] [f#1 ~ f#1 f#1] [e1 ~ e1 d#1] [g#1 ~ g#1 g#1] [e1 ~ e1 e1] [f#1 ~ f#1 b1] [d#1 ~ d#1 d#1]>")
      .s("supersaw").lpf(sine.range(180, 1300).slow(2)).resonance(11).gain(0.48),
    note("<[19 16 14 12] [16 14 12 9] [14 12 9 7] [12 9 7 4] [21 19 16 14] [19 16 14 12] [14 12 9 7] [9 7 4 2]>")
      .scale("G#4:minor").s("wt_pluck").fast(2)
      .decay(0.1).sustain(0).delay(0.25).delaytime(0.34).gain(0.34).pan(0.6),
    note("<g#3 d#3 b3 g#3 e3 b3 f#3 d#3>").s("supersaw")
      .lpf(2200).dist(0.35).decay(0.18).sustain(0).gain(0.36)
  ),
  glitch: stack(
    s("<[bd ~ bd bd ~ bd ~ ~ ~ bd bd ~ ~ bd ~ bd] [bd ~ ~ bd ~ ~ bd ~ ~ ~ bd ~ bd bd ~ ~] [bd ~ bd bd ~ bd ~ ~ ~ bd bd ~ ~ bd ~ bd] [bd bd ~ bd bd ~ bd bd ~ bd ~ bd bd ~ bd bd]>")
      .gain(0.9),
    s("<[~ ~ ~ ~ sd ~ ~ sd ~ sd ~ ~ sd ~ ~ ~] [~ ~ sd ~ ~ ~ sd ~ ~ ~ ~ sd ~ ~ sd sd] [~ ~ ~ ~ sd ~ ~ sd ~ sd ~ ~ sd ~ ~ ~] [sd*8 ~ sd*4 sd*16]>")
      .crush(6).gain(0.65),
    s("hh*16").crush(5).gain(0.18).pan(sine.range(0.3, 0.7).fast(2)),
    note("g#1 ~ g#1 g#1 ~ e1 ~ f#1").s("supersaw")
      .lpf(sine.range(200, 1600)).resonance(12).dist(0.2).gain(0.45),
    note("<[19 ~ 16 ~ 14 ~ 12 ~] [~ 16 ~ 12 ~ 9 ~ 7] [19 ~ 16 ~ 14 ~ 12 ~] [24 21 19 16 14 12 9 7]>")
      .scale("G#4:minor").s("wt_pluck").crush(6)
      .decay(0.08).sustain(0).gain(0.32).pan(0.4)
  ),
  break: stack(
    note("d#5 ~ e5 ~").slow(2).s("square").lpf(900).decay(0.15).sustain(0)
      .room(0.7).delay(0.4).delaytime(0.34).gain(0.18).pan(0.55),
    note("<g#1 g#1 e1 f#1>").s("sine").attack(0.03).release(0.8).gain(0.5),
    s("bd ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~").gain(0.7),
    chord("<G#m E B F#>").voicing().s("wt_pad")
      .attack(1.0).release(1.5).lpf(1100).room(0.7).gain(0.26)
  ),
  drop2: stack(
    s("bd ~ ~ ~ ~ ~ ~ ~ ~ ~ bd ~ ~ ~ ~ ~").gain(0.95),
    s("~ ~ ~ ~ sd ~ ~ ~ ~ ~ ~ ~ sd ~ ~ ~").gain(0.8),
    s("hh*16").gain(0.22).pan(sine.range(0.35, 0.65)),
    s("~ oh ~ oh").gain(0.2),
    note("<[g#1 ~ g#1 g#1] [g#1 ~ g#1 e1] [f#1 ~ f#1 f#1] [e1 ~ e1 d#1] [g#1 ~ g#1 g#1] [e1 ~ e1 e1] [f#1 ~ f#1 b1] [d#1 ~ d#1 d#1]>")
      .s("supersaw").lpf(sine.range(180, 1500).slow(2)).resonance(11).gain(0.48),
    note("<[19 16 14 12] [16 14 12 9] [14 12 9 7] [12 9 7 4] [21 19 16 14] [19 16 14 12] [14 12 9 7] [9 7 4 2]>")
      .scale("G#4:minor").s("wt_pluck").fast(2)
      .decay(0.1).sustain(0).delay(0.25).delaytime(0.34).gain(0.34).pan(0.6),
    note("<g#3 d#3 b3 g#3 e3 b3 f#3 d#3>").s("supersaw")
      .lpf(2400).dist(0.35).decay(0.18).sustain(0)
      .off(0.5, x => x.add(12).gain(0.5)).gain(0.36)
  ),
  outro: stack(
    note("<[d#5 e5 d#5 e5] [d#5 e5 d#5 e5] [d#5 ~ e5 ~] [d#5 ~ ~ ~]>")
      .s("square").lpf(1000).decay(0.12).sustain(0).room(0.6)
      .delay(0.4).delaytime(0.34).gain(0.2).pan(0.55),
    s("bd ~ ~ ~ ~ ~ ~ ~ ~ ~ bd ~ ~ ~ ~ ~").lpf(isaw.range(150, 800).slow(4)).gain(0.7),
    note("g#1").s("sine").attack(1.0).release(2.0).slow(2).gain(0.4),
    chord("<G#m G#m E E>").voicing().s("wt_pad")
      .attack(1.2).release(2.0).lpf(isaw.range(300, 1000).slow(4)).room(0.7).gain(0.24)
  )
})