transmission.2026.08.28.21.12.46
Strudel is a bit different than Tidal. There's a few things I haven't figured out how to do efficiently, but overall it's been a blast to learn.
// kick
const kick = note("c2")
.midichan(1)
.midi(RYTM)
.struct("1(3,8,<2 0 1 7>)")
.chunk(3, (x) => x.late("0.25"))
.degradeBy(0.2)
.every("<32>", (x) => silence);
// anchor:
const anchor = note("c2")
.midichan(4)
.midi(RYTM)
.late("0.5")
.when("<1 0 0 0 0>/4", (x) => x.late("0.125"))
.every("< 22>", (x) => silence);
// perc:
const perc = midichan("{[7 8] 7 8 ~}%8")
.note("c2")
.midi(RYTM)
.chunk(4, (x) => x.rev())
.every("<3 5>", (x) => x.late("0.125"))
.sometimesBy(0.1, (x) =>
x.off(1 / 16, () => note("f2 e2").midichan("7 8").midi(RYTM)),
)
.velocity(rand.range(0.5, 1))
.every("<33>", (x) => silence);
// hats:
const hat = midichan("9")
.note("c2")
.midi(RYTM)
.struct("1*8")
.late(1)
.degradeBy(0.3)
.velocity(rand.range(0.05, 1))
.every("<44>", (x) => silence);
$: stack(kick, anchor.slow("<1 2>/4"), perc, hat);