Examples / Songs / Agency

Rogue Process

Demos/Songs/agency/12-rogue-process.strudel · 122 BPM

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

// AGENCY OST — 12 · Rogue Process
// ACT II. The escaped process forks itself faster than it can be killed.
// Perturbator club-mode: four-on-floor, 16th chug under a stop-riff, big
// arps — and every 8th bar the whole mix slam-stops on the back half
// (the turnaround), leaving only the reverb.
//
// FORM (122 BPM · 1 cycle = 1 bar · 64 bars ≈ 2:06 · loops):
//   intro   8  e2  filtered chug fades up + arp; a process wakes
//   fork    16 e4  full club: 4-floor, offbeat hats, stop-riff bass, arp
//   swarm   16 e5  + screaming lead trading with the arp
//   kill    8  e2  killed? — half-time, riff ghosts, pad only
//   fork2   8  e5  it re-forks: everything, filter wide open
//   outro   8  e1  processes wink out one by one
// hook: the turnaround slam-stop — every 8th bar, all sections but kill.

setbpm(122);

"<intro@2 fork@4 swarm@4 kill@2 fork2@2 outro@2>".slow(4).pickRestart({
  intro: stack(
    note("f#1*16").s("supersaw")
      .lpf(saw.range(200, 900).slow(8)).resonance(10)
      .decay(0.08).sustain(0).dist(0.3).gain("0.5 0.35 0.42 0.35"),
    note("<[0 4 7 4 2 4 7 4] [0 4 7 9 7 4 2 0] [0 4 7 4 2 4 7 4] [2 4 7 9 12 9 7 4]>")
      .scale("F#4:minor").s("pulse").decay(0.12).sustain(0)
      .delay(0.3).delaytime(0.1875).room(0.35).gain(0.28).pan(0.6),
    s("<[~ ~ ~ ~] [~ ~ ~ ~] [bd ~ ~ ~] [bd ~ bd ~]>").gain(0.85).dist(0.2)
  ),
  fork: stack(
    s("<[bd*4] [bd*4] [bd*4] [bd*4] [bd*4] [bd*4] [bd*4] [bd bd ~ ~]>").gain(0.94).dist(0.25),
    s("<[~ sd ~ sd] [~ sd ~ sd] [~ sd ~ sd] [~ sd ~ sd] [~ sd ~ sd] [~ sd ~ sd] [~ sd ~ sd] [~ sd ~ ~]>")
      .room(0.55).roomsize(0.75).gain(0.66),
    s("<[~ hh ~ hh ~ hh ~ hh] [~ hh ~ hh ~ hh ~ hh] [~ hh ~ hh ~ hh ~ hh] [~ hh ~ hh ~ hh ~ hh] [~ hh ~ hh ~ hh ~ hh] [~ hh ~ hh ~ hh ~ hh] [~ hh ~ hh ~ hh ~ hh] [~ hh ~ hh ~ ~ ~ ~]>")
      .gain(0.24).pan(sine.range(0.4, 0.6)),
    note("<[f#1 f#1 ~ f#1 ~ f#1 f#1 ~ ~ f#1 f#1 ~ f#2 ~ ~ ~] [f#1 f#1 ~ f#1 ~ f#1 f#1 ~ a1 ~ a1 ~ g#1 ~ ~ ~] [f#1 f#1 ~ f#1 ~ f#1 f#1 ~ ~ f#1 f#1 ~ f#2 ~ ~ ~] [d1 ~ ~ d1 ~ ~ e1 ~ e1 ~ ~ ~ ~ ~ ~ ~] [f#1 f#1 ~ f#1 ~ f#1 f#1 ~ ~ f#1 f#1 ~ f#2 ~ ~ ~] [f#1 f#1 ~ f#1 ~ f#1 f#1 ~ a1 ~ a1 ~ g#1 ~ ~ ~] [b1 ~ ~ b1 ~ ~ a1 ~ g#1 ~ ~ g#1 e1 ~ ~ ~] [f#1 ~ f#1 ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~]>")
      .s("sawtooth").lpf(850).resonance(9)
      .decay(0.09).sustain(0).dist(0.32).gain(0.56),
    note("<[0 4 7 4 9 7 4 0] [2 4 7 4 9 7 4 2] [0 4 7 4 9 7 4 0] [7 9 11 9 12 11 9 7] [0 4 7 4 9 7 4 0] [2 4 7 4 9 7 4 2] [4 7 9 7 12 9 7 4] [7 ~ 4 ~ ~ ~ ~ ~]>")
      .scale("F#4:minor").s("pulse").decay(0.12).sustain(0)
      .delay(0.25).delaytime(0.1875).room(0.3).gain(0.3).pan(0.6),
    chord("<F#m F#m D E>").voicing().s("supersaw")
      .attack(0.05).release(0.9).lpf(1300).chorus(0.4).room(0.5)
      .gain(saw.range(0.1, 0.26).fast(4))
  ),
  swarm: stack(
    s("<[bd*4] [bd*4] [bd*4] [bd*4] [bd*4] [bd*4] [bd*4] [bd bd ~ ~]>").gain(0.94).dist(0.28),
    s("<[~ sd ~ sd] [~ sd ~ sd] [~ sd ~ sd] [~ sd ~ sd] [~ sd ~ sd] [~ sd ~ sd] [~ sd ~ sd] [~ sd ~ ~]>")
      .room(0.55).roomsize(0.75).gain(0.68),
    s("<[~ hh ~ hh ~ hh ~ hh] [~ hh ~ hh ~ hh ~ hh] [~ hh ~ hh ~ hh ~ hh] [~ hh ~ hh ~ hh ~ hh] [~ hh ~ hh ~ hh ~ hh] [~ hh ~ hh ~ hh ~ hh] [~ hh ~ hh ~ hh ~ hh] [~ hh ~ hh ~ ~ ~ ~]>")
      .gain(0.24).pan(sine.range(0.4, 0.6)),
    s("~ ~ ~ oh").gain(0.24),
    note("<[f#1 f#1 ~ f#1 ~ f#1 f#1 ~ ~ f#1 f#1 ~ f#2 ~ ~ ~] [f#1 f#1 ~ f#1 ~ f#1 f#1 ~ a1 ~ a1 ~ g#1 ~ ~ ~] [f#1 f#1 ~ f#1 ~ f#1 f#1 ~ ~ f#1 f#1 ~ f#2 ~ ~ ~] [d1 ~ ~ d1 ~ ~ e1 ~ e1 ~ ~ ~ ~ ~ ~ ~] [f#1 f#1 ~ f#1 ~ f#1 f#1 ~ ~ f#1 f#1 ~ f#2 ~ ~ ~] [f#1 f#1 ~ f#1 ~ f#1 f#1 ~ a1 ~ a1 ~ g#1 ~ ~ ~] [b1 ~ ~ b1 ~ ~ a1 ~ g#1 ~ ~ g#1 e1 ~ ~ ~] [f#1 ~ f#1 ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~]>")
      .s("sawtooth").lpf(900).resonance(9)
      .decay(0.09).sustain(0).dist(0.32).gain(0.54),
    note("<[12 ~ 11 ~ 9 ~ 7 ~] [9 ~ 7 ~ 4 ~ ~ ~] [12 ~ 11 ~ 9 ~ 7 ~] [9 ~ 11 ~ 12 ~ 14 ~] [12 ~ 11 ~ 9 ~ 7 ~] [9 ~ 7 ~ 4 ~ ~ ~] [14 ~ 12 ~ 11 ~ 9 ~] [7 ~ ~ ~ ~ ~ ~ ~]>")
      .scale("F#4:minor").s("sawtooth")
      .lpf(3000).resonance(6).decay(0.18).sustain(0.1)
      .dist(0.2).delay(0.22).delaytime(0.1875).room(0.3).gain(0.36)
  ),
  kill: stack(
    s("bd ~ ~ ~ ~ ~ ~ ~ ~ ~ bd ~ ~ ~ ~ ~").gain(0.8).dist(0.2),
    note("<[f#1 ~ ~ f#1 ~ ~ ~ ~] [~ ~ ~ ~ ~ ~ ~ ~] [f#1 ~ ~ ~ ~ ~ ~ ~] [~ ~ ~ ~ ~ ~ ~ ~]>")
      .s("sawtooth").lpf(600).decay(0.1).sustain(0).dist(0.25)
      .room(0.4).gain(0.5),
    note("<[0 ~ 4 ~ 7 ~ ~ ~] [~ ~ ~ ~ ~ ~ ~ ~] [~ 2 ~ 4 ~ 7 ~ ~] [9 ~ 7 ~ ~ ~ ~ ~]>")
      .scale("F#5:minor").s("pulse").decay(0.12).sustain(0)
      .delay(0.5).delaytime(0.1875).delayfeedback(0.55).room(0.5).gain(0.24).pan(0.6),
    chord("<F#m F#m D D>").voicing().s("supersaw")
      .attack(1.0).release(2.0).lpf(900).chorus(0.5).room(0.7).gain(0.28)
  ),
  fork2: stack(
    s("<[bd*4] [bd*4] [bd*4] [bd bd ~ ~]>").gain(0.95).dist(0.28),
    s("<[~ sd ~ sd] [~ sd ~ sd] [~ sd ~ sd] [~ sd ~ ~]>").room(0.55).roomsize(0.75).gain(0.68),
    s("<[~ hh ~ hh ~ hh ~ hh] [~ hh ~ hh ~ hh ~ hh] [~ hh ~ hh ~ hh ~ hh] [~ hh ~ hh ~ ~ ~ ~]>")
      .gain(0.26).pan(sine.range(0.4, 0.6)),
    s("~ ~ ~ oh").gain(0.26),
    note("<[f#1 f#1 ~ f#1 ~ f#1 f#1 ~ ~ f#1 f#1 ~ f#2 ~ ~ ~] [f#1 f#1 ~ f#1 ~ f#1 f#1 ~ a1 ~ a1 ~ g#1 ~ ~ ~] [b1 ~ ~ b1 ~ ~ a1 ~ g#1 ~ ~ g#1 e1 ~ ~ ~] [f#1 ~ f#1 ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~]>")
      .s("sawtooth").lpf(1100).resonance(9)
      .decay(0.09).sustain(0).dist(0.35).gain(0.56),
    note("<[0 4 7 4 9 7 4 0] [2 4 7 4 9 7 4 2] [4 7 9 7 12 9 7 4] [7 ~ 4 ~ ~ ~ ~ ~]>")
      .scale("F#5:minor").s("pulse").decay(0.12).sustain(0)
      .delay(0.25).delaytime(0.1875).room(0.3).gain(0.3).pan(0.6),
    note("<[12 ~ 11 ~ 9 ~ 7 ~] [9 ~ 7 ~ 4 ~ ~ ~] [14 ~ 12 ~ 11 ~ 9 ~] [7 ~ ~ ~ ~ ~ ~ ~]>")
      .scale("F#4:minor").s("sawtooth")
      .lpf(3200).resonance(6).decay(0.18).sustain(0.1)
      .dist(0.2).delay(0.22).delaytime(0.1875).room(0.3).gain(0.34)
  ),
  outro: stack(
    note("<[0 4 7 4 ~ 4 7 ~] [0 ~ 7 ~ ~ 4 ~ ~] [0 ~ 4 ~ 7 ~ ~ ~] [~ ~ ~ ~ 7 ~ ~ ~]>")
      .scale("F#4:minor").s("pulse").decay(0.12).sustain(0)
      .delay(0.4).delaytime(0.1875).delayfeedback(0.5)
      .room(0.5).gain(isaw.range(0.1, 0.28).slow(8)).pan(0.6),
    note("f#1").s("sine").slow(2).attack(1.5).release(3).gain(0.42),
    chord("<F#m F#m D F#m>").voicing().s("supersaw")
      .attack(1.2).release(2.2).lpf(isaw.range(350, 1100).slow(8))
      .chorus(0.4).room(0.7).gain(0.26)
  )
})