Examples / Songs / Agency

Ticket Queue

Demos/Songs/agency/02-ticket-queue.strudel · 100 BPM

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

// AGENCY OST — 02 · Ticket Queue
// Fluorescent office, endless forms, quiet dread. Synthwave with a darksynth edge.
//
// FORM (100 BPM · 1 cycle = 1 bar · 40 bars ≈ 1:36 · loops):
//   intro    4  e1  mainframe hum + clock tick + cold pad
//   verse    8  e2  + kick, chugging bass, typing pluck
//   lift     4  e3  + backbeat snare, climbing arp, filter opens
//   chorus   8  e4  full: gated snare, wide pad, the queue theme (falling lead)
//   break    4  e2  drums out — pad + typing alone under the hum
//   chorus2  8  e4  full + extra hats + octave lead double
//   outro    4  e1  filter closes, the tick remains
// hook: the queue theme — a resigned 4-bar falling line, both choruses.

setbpm(100);

"<intro verse@2 lift chorus@2 break chorus2@2 outro>".slow(4).pickRestart({
  intro: stack(
    note("f#1").s("sine").attack(1.5).release(2.5).slow(2).gain(0.4),
    s("rs*4").gain(0.25).pan(0.45),
    chord("<F#m F#m D Bm>").voicing().s("supersaw")
      .attack(0.6).release(1.2).lpf(900).chorus(0.4).room(0.5).gain(0.26)
  ),
  verse: stack(
    note("f#1").s("sine").attack(1.5).release(2.5).slow(2).gain(0.35),
    s("bd*4").gain(0.8),
    s("rs*4").gain(0.2).pan(0.45),
    note("<[f#1 f#1 f#1 f#1] [f#1 f#1 f#1 f#1] [d1 d1 d1 d1] [b0 b0 c#1 c#1]>")
      .s("sawtooth").lpf(650).decay(0.2).sustain(0.3).dist(0.1).gain(0.55),
    note("<[7 7 ~ 7 ~ 7 7 ~] [7 9 ~ 7 ~ ~ 9 ~] [7 7 ~ 7 ~ 4 ~ 4] [5 ~ 5 ~ 2 ~ ~ ~]>")
      .scale("F#5:minor").s("pulse").decay(0.1).sustain(0)
      .delay(0.25).delaytime(0.375).gain(0.32).pan(0.6),
    chord("<F#m F#m D Bm>").voicing().s("supersaw")
      .attack(0.6).release(1.2).lpf(1100).chorus(0.4).room(0.5).gain(0.24)
  ),
  lift: stack(
    s("bd*4").gain(0.85),
    s("~ sd ~ sd").room(0.5).roomsize(0.7).gain(0.55),
    note("f#1*8").s("sawtooth").lpf(700).decay(0.15).sustain(0.3).dist(0.12).gain(0.55),
    note("<[0 2 4 6 7 9 11 12] [2 4 6 7 9 11 12 14] [4 6 7 9 11 12 14 16] [7 9 11 12 14 16 18 19]>")
      .scale("F#4:minor").s("pulse")
      .decay(0.15).sustain(0.1).lpf(saw.range(800, 2600).slow(4))
      .delay(0.3).delaytime(0.375).gain(0.36),
    chord("<F#m D Bm C#m>").voicing().s("supersaw")
      .attack(0.4).release(1.0).lpf(1400).chorus(0.4).room(0.5).gain(0.26)
  ),
  chorus: stack(
    s("bd*4").gain(0.9),
    s("~ sd ~ sd").room(0.55).roomsize(0.7).gain(0.65),
    s("hh*8").gain(0.2).pan(sine.range(0.35, 0.65)),
    s("rs*4").gain(0.16).pan(0.45),
    note("<[f#1 f#2]*4 [f#1 f#2]*4 [d1 d2]*4 [c#1 c#2]*4>")
      .s("sawtooth").lpf(750).decay(0.18).sustain(0.25).dist(0.12).gain(0.55),
    note("<[7 ~ 6 ~ 4 ~ 2 ~] [4 ~ 2 ~ 0 ~ ~ ~] [6 ~ 4 ~ 2 ~ 1 ~] [2 ~ 0 ~ ~ ~ ~ ~]>")
      .scale("F#4:minor").s("wt_lead").release(0.25)
      .delay(0.2).delaytime(0.375).room(0.3).gain(0.42),
    chord("<F#m D Bm C#m>").voicing().s("supersaw")
      .attack(0.3).release(0.9).lpf(1700).chorus(0.45).room(0.5).gain(0.28)
  ),
  break: stack(
    note("f#1").s("sine").attack(1.5).release(2.5).slow(2).gain(0.4),
    s("rs*4").gain(0.22).pan(0.45),
    note("<[7 7 ~ 7 ~ 7 7 ~] [~ 9 ~ 7 ~ ~ 9 ~] [7 ~ ~ 7 ~ 4 ~ 4] [5 ~ 5 ~ 2 ~ ~ ~]>")
      .scale("F#5:minor").s("pulse").decay(0.1).sustain(0)
      .delay(0.35).delaytime(0.375).room(0.4).gain(0.3).pan(0.6),
    chord("<F#m F#m Bm Bm>").voicing().s("supersaw")
      .attack(0.8).release(1.4).lpf(1000).chorus(0.5).room(0.6).gain(0.26)
  ),
  chorus2: stack(
    s("bd*4").gain(0.9),
    s("~ sd ~ sd").room(0.55).roomsize(0.7).gain(0.65),
    s("hh*8").gain(0.2).pan(sine.range(0.35, 0.65)),
    s("~ hh ~ hh ~ hh ~ hh ~ hh ~ hh ~ hh ~ hh").gain(0.14).pan(0.3),
    note("<[f#1 f#2]*4 [f#1 f#2]*4 [d1 d2]*4 [c#1 c#2]*4>")
      .s("sawtooth").lpf(800).decay(0.18).sustain(0.25).dist(0.12).gain(0.5),
    note("<[7 ~ 6 ~ 4 ~ 2 ~] [4 ~ 2 ~ 0 ~ ~ ~] [6 ~ 4 ~ 2 ~ 1 ~] [2 ~ 0 ~ ~ ~ ~ ~] [9 ~ 7 ~ 6 ~ 4 ~] [6 ~ 4 ~ 2 ~ ~ ~] [4 ~ 6 ~ 7 ~ 9 ~] [7 ~ ~ ~ ~ ~ ~ ~]>")
      .scale("F#4:minor").s("wt_lead").release(0.25)
      .off(0.25, x => x.add(12).gain(0.45))
      .delay(0.2).delaytime(0.375).room(0.3).gain(0.4),
    chord("<F#m D Bm C#m>").voicing().s("supersaw")
      .attack(0.3).release(0.9).lpf(1900).chorus(0.45).room(0.5).gain(0.25)
  ),
  outro: stack(
    note("f#1").s("sine").attack(1.5).release(2.5).slow(2).gain(0.38),
    s("rs*4").gain(0.22).pan(0.45),
    chord("<F#m F#m F#m F#m>").voicing().s("supersaw")
      .attack(0.8).release(1.6).lpf(isaw.range(300, 1400).slow(4))
      .chorus(0.5).room(0.6).gain(0.26)
  )
})