An original 72 BPM lo-fi loop for coding, studying, and thinking: slow drums, light swing, warm extended chords, a quiet bass line, and a melody that leaves room for concentration.
stack(
// Quiet record-like dust, synthesized rather than sampled.
sound("crackle*16")
.hpf(500)
.lpf(4200)
.gain(0.008),
// A soft kick on beat one, plus a late ghost hit around beat three.
note("c1 ~ [~ c1] ~")
.sound("sine")
.penv(24)
.pdecay(0.08)
.decay(0.18)
.sustain(0)
.gain(0.28),
// Pink noise stands in for a brushed snare on beats two and four.
sound("~ pink ~ pink")
.hpf(1200)
.lpf(4800)
.decay(0.11)
.sustain(0)
.late(0.012)
.gain(0.065),
// Alternating velocities and subtle swing keep the hats human.
sound("white*8")
.hpf(6500)
.decay(0.02)
.sustain(0)
.swingBy(0.12, 4)
.gain("[0.012 0.026]*4"),
// Cm9 → Abmaj7 → Fm9 → G7(b9), one chord per bar.
note("<[c3,eb3,g3,bb3,d4] [ab2,c3,eb3,g3] [f2,ab2,c3,eb3,g3] [g2,b2,d3,f3,ab3]>")
.sound("triangle")
.lpf(950)
.attack(0.08)
.decay(0.4)
.sustain(0.4)
.release(1.2)
.room(0.18)
.gain(0.105),
// Root movement anchors the harmony without filling the mix.
note("<c2 ab1 f1 g1>")
.sound("sine")
.lpf(260)
.attack(0.03)
.release(0.5)
.gain(0.15),
// A sparse four-bar answer that leaves plenty of silence.
note("<[g4 ~ eb4 ~] [c5 ~ g4 bb4] [ab4 ~ c5 ~] [g4 f4 d4 ~]>")
.sound("triangle")
.lpf(1600)
.attack(0.03)
.decay(0.25)
.sustain(0.18)
.release(0.6)
.delay(0.12)
.room(0.3)
.gain(0.055)
).cpm(72 / 4)
Why the loop feels calm
- Tempo: Strudel measures cycles rather than beats. With four beats in each
cycle,
.cpm(72 / 4)produces a relaxed 72 BPM pulse. - Pocket: The snare sits a little behind the grid, while the alternating hi-hat levels and light swing avoid a rigid metronome feel.
- Harmony: Seventh and ninth chord tones soften the minor-key progression. The final G7(b9) adds just enough tension to lead back to Cm9.
- Flow: Harmony and melody take four cycles to return, but the drums remain predictable. The listener gets motion without a drop, climax, or abrupt section change.
- Texture: Low-pass filters remove sharp edges. Quiet synthesized crackle, short noise percussion, modest room, and delay provide depth without a sample download.
- Attention: The melody uses short phrases and rests. It suggests a mood instead of continuously competing with coding, reading, or thinking.
To make it sleepier, try 66 / 4 in the last line. To make the pocket straighter,
reduce swingBy(0.12, 4) toward zero. Keep gain changes small: several stacked
layers can become loud quickly.