I Feel Love

KentSt.FM × Max Headroom — Strudel Live Code
// ───────────────────────────────────────────────────────────────────────────── // I FEEL LOVE — KentSt.FM × Max Headroom // Moroder/Summer, reconstructed in Strudel // Max vocals generated on Disco (Pi 5) via Supertonic TTS // ───────────────────────────────────────────────────────────────────────────── samples({ 'max_full': 'https://glueratglobal.com/static/assets/audio/max-ifl/ifl-full.mp3', 'max_intro': 'https://glueratglobal.com/static/assets/audio/max-ifl/ifl-intro.mp3', 'max_monologue': 'https://glueratglobal.com/static/assets/audio/max-ifl/ifl-monologue.mp3', }) // 136 BPM — Moroder original tempo // 1 bar = 1.765s at 136 BPM // Vocal timeline (64-bar cycle, no overlaps): // Bar 1: intro fires (~4 bars, clears bar 5) // Bar 9: full lyric (~7 bars, clears bar 16) // Bar 25: monologue (~30 bars, clears bar 55) // Bar 65: cycle repeats setcps(136/60/4) stack( // ── Drums ────────────────────────────────────────────────── s("bd").bank('RolandTR808').gain(1.1), s("hh*16").bank('RolandTR808').gain(0.55) .pan(sine.range(0.3,0.7).slow(4)), s("~ ~ oh ~").bank('RolandTR808').gain(0.4), // ── Bass ─────────────────────────────────────────────────── note("e2 b2 e3 b2 e2 b2 e3 [b2 g#2]").sound("sawtooth") .cutoff(900).resonance(10) .attack(0.001).decay(0.035).sustain(0).release(0.02) .gain(0.9), note("e1").sound("sine") .attack(0.01).release(0.1) .gain(0.5).lpf(120), // ── Synths ───────────────────────────────────────────────── note("<[e4 g#4 b4 e5]*8 [e4 b4 e5 g#5]*8>").sound("triangle") .cutoff(sine.range(1200,3500).slow(8)).resonance(12) .gain(0.38).pan(0.65), note("e2").sound("sawtooth") .cutoff(sine.range(200,2800).slow(16)).resonance(5) .gain(0.22).pan(0.4), note("/2").sound("sine") .room(0.95).roomsize(0.9).gain(0.15) .pan(sine.range(0.2,0.8).slow(7)), note("<~ [e4,g#4,b4] ~ ~>/2").sound("sawtooth") .cutoff(1800).resonance(4) .attack(0.002).decay(0.3).sustain(0).release(0.1) .gain(0.3).pan(0.3), // ── Max Headroom Vocals — sequential, no overlaps ────────── // 64-bar cycle. late() offsets by fraction of cycle. // Bar 1: "I'm M-M-Max Headroom..." (~4 bars) s("max_intro").slow(64).gain(1.0).room(0.2), // Bar 9: "I Feel Love" full lyric (~7 bars) — late by 8 bars s("max_full").slow(64).late(8/64).gain(1.15).room(0.25), // Bar 25: Max monologue (~30 bars) — late by 24 bars s("max_monologue").slow(64).late(24/64).gain(0.88).room(0.3) )