Examples / Songs / Agency

The All-Nighter

Demos/Songs/agency/07-the-all-nighter.strudel · 120 BPM

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

// AGENCY OST — 07 · The All-Nighter
// 3 AM rebuild. Dub techno with a future-garage drift; deep focus in a dark room.
// The office clock from "Ticket Queue" ticks on, quieter now.
//
// FORM (120 BPM · 1 cycle = 1 bar · 72 bars ≈ 2:24 · loops):
//   intro   8  e1  vinyl crackle + washed chord echoes + breathing sub
//   groove  16 e2  + soft four-on-floor, shuffled hats, walking sub
//   deep    16 e3  + bell motif call-and-response, chords open
//   drift   8  e2  kick out — 2-step ghost, bells trail off into delay
//   return  16 e3  kick back, all layers, the work resumes
//   dawn    8  e1  chords brighten toward A major, crackle fades, tick remains
// hook: the bell motif — sparse, half-asleep, always answered late.

setbpm(120);

"<intro@2 groove@4 deep@4 drift@2 return@4 dawn@2>".slow(4).pickRestart({
  intro: stack(
    s("crackle*4").gain(0.3),
    s("rs*4").gain(0.14).pan(0.45),
    note("<f#1 ~ f#1 a1>").s("sine").attack(0.4).release(1.2).gain(0.5),
    chord("<F#m7 F#m7 F#m7 AM7>").voicing().s("supersaw").struct("~ 1 ~ ~")
      .attack(0.05).release(0.9).lpf(850)
      .delay(0.5).delaytime(0.375).delayfeedback(0.55).room(0.8).gain(0.27)
  ),
  groove: stack(
    s("crackle*4").gain(0.26),
    s("rs*4").gain(0.12).pan(0.45),
    s("bd*4").gain(0.72),
    s("~ hh ~ hh").late(0.02).gain(0.2).pan(0.6),
    note("<[f#1 ~ ~ f#1 ~ ~ ~ ~] [f#1 ~ ~ f#1 ~ ~ a1 ~] [e1 ~ ~ e1 ~ ~ ~ ~] [f#1 ~ ~ f#1 ~ ~ c#1 ~] [f#1 ~ ~ f#1 ~ ~ ~ ~] [a1 ~ ~ a1 ~ ~ b1 ~] [e1 ~ ~ e1 ~ ~ g#1 ~] [f#1 ~ ~ ~ ~ ~ ~ ~]>")
      .s("sine").attack(0.03).release(0.7).gain(0.55),
    chord("<F#m7 F#m7 F#m7 AM7>").voicing().s("supersaw").struct("~ 1 ~ ~")
      .attack(0.05).release(0.9).lpf(950)
      .delay(0.5).delaytime(0.375).delayfeedback(0.55).room(0.8).gain(0.27)
  ),
  deep: stack(
    s("crackle*4").gain(0.24),
    s("rs*4").gain(0.12).pan(0.45),
    s("bd*4").gain(0.74),
    s("~ hh ~ hh").late(0.02).gain(0.22).pan(0.6),
    s("~ ~ oh ~").gain(0.12).pan(0.35),
    note("<[f#1 ~ ~ f#1 ~ ~ ~ ~] [f#1 ~ ~ f#1 ~ ~ a1 ~] [e1 ~ ~ e1 ~ ~ ~ ~] [f#1 ~ ~ f#1 ~ ~ c#1 ~] [f#1 ~ ~ f#1 ~ ~ ~ ~] [a1 ~ ~ a1 ~ ~ b1 ~] [e1 ~ ~ e1 ~ ~ g#1 ~] [f#1 ~ ~ ~ ~ ~ ~ ~]>")
      .s("sine").attack(0.03).release(0.7).gain(0.55),
    note("<[9 ~ ~ ~ 7 ~ ~ ~] [~ ~ 4 ~ ~ ~ ~ ~] [11 ~ ~ ~ 9 ~ ~ ~] [~ ~ 7 ~ ~ 4 ~ ~] [9 ~ ~ ~ 11 ~ ~ ~] [~ ~ 7 ~ ~ ~ ~ ~] [4 ~ ~ ~ 7 ~ ~ ~] [~ ~ 9 ~ ~ ~ ~ ~]>")
      .scale("F#4:minor").s("wt_bell")
      .delay(0.45).delaytime(0.375).delayfeedback(0.5).room(0.7).gain(0.3).pan(0.6),
    chord("<F#m7 F#m7 AM7 EM7>").voicing().s("supersaw").struct("~ 1 ~ ~")
      .attack(0.05).release(0.9).lpf(1100)
      .delay(0.5).delaytime(0.375).delayfeedback(0.55).room(0.8).gain(0.27)
  ),
  drift: stack(
    s("crackle*4").gain(0.28),
    s("rs*4").gain(0.1).pan(0.45),
    s("bd ~ ~ ~ ~ ~ ~ ~ ~ ~ bd ~ ~ ~ ~ ~").gain(0.55),
    s("~ ~ ~ ~ sd ~ ~ ~ ~ ~ ~ ~ sd ~ ~ ~").lpf(2000).gain(0.3),
    note("<[9 ~ ~ ~ ~ ~ 7 ~] [~ ~ ~ 4 ~ ~ ~ ~] [~ 11 ~ ~ ~ 9 ~ ~] [~ ~ ~ ~ 7 ~ ~ ~]>")
      .scale("F#4:minor").s("wt_bell")
      .delay(0.6).delaytime(0.375).delayfeedback(0.6).room(0.85).gain(0.25).pan(0.55),
    note("<f#1 ~ e1 ~>").s("sine").attack(0.5).release(1.4).gain(0.48),
    chord("<F#m7 Bm7 F#m7 F#m7>").voicing().s("supersaw").struct("~ ~ 1 ~")
      .attack(0.1).release(1.1).lpf(800)
      .delay(0.55).delaytime(0.375).delayfeedback(0.6).room(0.85).gain(0.25)
  ),
  return: stack(
    s("crackle*4").gain(0.24),
    s("rs*4").gain(0.12).pan(0.45),
    s("bd*4").gain(0.76),
    s("~ hh ~ hh").late(0.02).gain(0.22).pan(0.6),
    s("~ ~ oh ~").gain(0.13).pan(0.35),
    note("<[f#1 ~ ~ f#1 ~ ~ ~ ~] [f#1 ~ ~ f#1 ~ ~ a1 ~] [e1 ~ ~ e1 ~ ~ ~ ~] [f#1 ~ ~ f#1 ~ ~ c#1 ~] [f#1 ~ ~ f#1 ~ ~ ~ ~] [a1 ~ ~ a1 ~ ~ b1 ~] [e1 ~ ~ e1 ~ ~ g#1 ~] [f#1 ~ ~ ~ ~ ~ ~ ~]>")
      .s("sine").attack(0.03).release(0.7).gain(0.55),
    note("<[9 ~ ~ ~ 7 ~ ~ ~] [~ ~ 4 ~ ~ ~ ~ ~] [11 ~ ~ ~ 9 ~ ~ ~] [14 ~ 11 ~ 9 ~ 7 ~] [9 ~ ~ ~ 11 ~ ~ ~] [~ ~ 14 ~ ~ ~ ~ ~] [16 ~ 14 ~ 11 ~ 9 ~] [7 ~ ~ ~ ~ ~ ~ ~]>")
      .scale("F#4:minor").s("wt_bell")
      .delay(0.45).delaytime(0.375).delayfeedback(0.5).room(0.7).gain(0.3).pan(0.6),
    note("c#5").s("wt_choir").attack(1.5).release(2.0).slow(2)
      .lpf(1200).room(0.7).gain(0.16).pan(0.4),
    chord("<F#m7 F#m7 AM7 EM7>").voicing().s("supersaw").struct("~ 1 ~ ~")
      .attack(0.05).release(0.9).lpf(1100)
      .delay(0.5).delaytime(0.375).delayfeedback(0.55).room(0.8).gain(0.27)
  ),
  dawn: stack(
    s("crackle*4").gain(isaw.range(0.05, 0.24).slow(8)),
    s("rs*4").gain(0.12).pan(0.45),
    s("bd*4").gain(0.6),
    note("<f#1 f#1 a1 a1>").s("sine").attack(0.4).release(1.2).gain(0.5),
    note("<[9 ~ ~ ~ 11 ~ ~ ~] [~ ~ 14 ~ ~ ~ ~ ~] [16 ~ ~ ~ 14 ~ ~ ~] [~ ~ 11 ~ ~ ~ 9 ~]>")
      .scale("F#4:minor").s("wt_bell")
      .delay(0.5).delaytime(0.375).delayfeedback(0.55).room(0.8).gain(0.28).pan(0.6),
    chord("<F#m7 AM7 AM7 EM7>").voicing().s("supersaw").struct("~ 1 ~ ~")
      .attack(0.05).release(1.0).lpf(saw.range(900, 1800).slow(8))
      .delay(0.5).delaytime(0.375).delayfeedback(0.55).room(0.8).gain(0.27)
  )
})