Discovering Strudel.cc

Strudel Live coding interface

Writing Music in the Browser with Code

I’ve been obsessed with electronic music for more than three decades. Collecting vinyl, clubbing, festivals, mangling 303 emulators in Reason, and recently launching agood12inches.com, Instagram and T-shirt store fuelled by house nostalgia. Last month I saw Underworld at Audley End — spine tingles during push upstairs, Moaner, and of course the iconic Born Slippy reminded me just why I love electronic Music and the emotions it evokes (in me).

Getting started

So when I stumbled into Strudel.cc, it felt like stepping sideways into another universe.

At first, it’s a bit baffling: a blank code window in your browser and the example project supporting the claim that you can make music just by typing. No decks. No DAW. No downloads. Just you, the browser, and a blinking cursor.

Learning by Getting Stuck

I’ll be honest — my first five minutes with Strudel were a tad chaotic. I stared at the empty editor, wondering how to add in elements of music, well code. I started by editing the parameters of the example track.  And after a bit of google, scanning the help and a bit of chatGPT brought the moment I wrote my first line of code and heard a kick drum pulse from the speakers, and it clicked.

This is how I learn best: not by deeply reading manuals, but by poking, breaking things, and stumbling into happy accidents. Strudel rewards that approach – Massive dopamine hit for me!

Here’s the exact line that gave me that first buzz:

$: s("bd")

That’s it. Type it in, hit Shift+Enter, and you’ve got a kick (“bd” = bass drum). Want a steady four-on-the-floor? Add a number:

$: s("bd*4")

Congratulations — you’ve written your first house loop with nothing but a keyboard.

But it is smarter than that:

 $: s("bd *4 ").bank("tr909").dec(1).gain(4)

Add from a bank of sounds available in Strudel The iconic drum machines 808 or 909, and many more… Synths from Minimoog to sine and sawtooth tones. A variety of community developed and shared patches and collections (this is open source software afterall!)

How Strudel Works (Plain English)

Behind the scenes, Strudel runs on the Web Audio API, which is like a tiny studio living in your browser. When you type code, you’re really writing patterns — instructions that tell the browser what sound to play, when, and how often.

Letters (bd, sd, hh) = drum sounds.

Stars (*4, *8) = how many times to repeat in a bar.

Brackets let you sequence: s("bd sd hh hh")

Think of it as Lego for sound. Each block snaps together in time, and the browser handles the maths to keep it all perfectly in sync.

For kids (or adults new to coding), the best analogy is: “You’re casting little music spells, and every spell makes a beat.”

Chopping Samples in Strudel

This is where it gets juicy. Strudel lets you import your own .wav files — vocals, breaks, field recordings — and slice them into bits. In classic hardware, like an Akai MPC, you’d spend ages trimming samples with fiddly buttons. In Strudel, you can chop with one line.

Example:

s("break:0 break:1 break:2 break:3").sound("break.wav")

Here, the break.wav file is divided into four slices (:0 through :3). You can shuffle them like Lego bricks:

s("break:2 break:0 break:3 break:1").sound("break.wav")

Suddenly your dusty breakbeat is reborn as something entirely new.

You can try it by pasting the following code into strudel – it uses publicly available samples from SwitchAngel – Respect to her, I learnt a lot from her channel.

samples('github:switchangel/breaks')
$: s("breaks/2").n("<0@2 4>").fit().distort("2:0.5")
.scrub(irand(16).div(16).seg(8))
  .rib("<2 10>",1)
    .almostNever(ply("2 | 4"))
._scope()

Compared to Ableton, you don’t get warp markers or spectral displays. Compared to an MPC, you don’t have pads to bash. But the upside? It’s instant, lightweight, and encourages happy accidents instead of clinical editing.

From Sketch to Track

Here’s the big question: can you actually make a full track in Strudel?

Yes and no. Strudel excels as a sketchpad — quick loops, evolving patterns, experimental jams. You can layer drums, bass, and synths like so:

stack(
  s("bd*4"),
  s("sd*2"),
  s("hh*8"),
  s("0 3 5 7").sound("saw")
)

That code gives you a kick-snare-hat groove with a simple synth melody — all in one go.

Here’s a more advanced example that shows off how deep Strudel can go. The following line of code creates a fast-moving bassline built from the notes F2, Eb2, C2 and F1. By wrapping some of the notes in angle brackets, you tell Strudel to cycle through them in a pattern, while .fast(8) makes the whole sequence race along at eight times the normal speed.

$: note("f2 <eb2 <c2 f1>>".fast(8))
   .cutoff("<2000 1000 400 1000>").resonance(20)
   .gain(1).delay(0.5)
   .sound("<sawtooth>")
   ._scope()

The .cutoff("<2000 1000 400 1000>") cycles the filter between four different values, giving a sweeping movement, and .resonance(20) emphasises those filter edges for a squelchy character. The .gain(1) keeps the volume steady, .delay(0.5) adds a half-beat echo, and .sound("<sawtooth>") generates the tone using a raw sawtooth wave. Finally, ._scope() opens a visual scope so you can actually see the waveform dancing in time with your sound. It’s a single line of code, but it produces a dynamic, filter-swept bassline that would take several devices to patch together in a traditional DAW.

But if you’re aiming for release-quality production, you’ll hit limits:

Exporting: there’s no “save as WAV.” You need to route your browser audio into a recorder (OBS, Audacity, or your DAW).

Mixing: Strudel doesn’t offer polished mixing/mastering tools. You’ll want to finish tracks in a DAW.

Memory: big projects can chew through CPU in Chrome.

That said, Strudel isn’t trying to replace Ableton. It’s about immediacy, play, and — for the bold — live performance.

Discovering Strudel.cc 1

Live Coding as Performance

One of Strudel’s hidden superpowers is performance. Imagine standing on stage, typing beats in real-time while the audience watches your code projected behind you. Each keystroke is part of the show. It’s improvisation, but instead of twisting filter knobs, you’re rewriting the music’s DNA on the fly.

I did feel though, that typing the number and clicking update is a bit clunky and wondered if there was a way to add a slider to the code… There is … and the code looks like this

  $: s("amen/4").fit()
.scrub(irand(16).div(16).seg(8))
  .delay(slider(0))
  .rib("<5 2>",1)
    .almostNever(ply("1 | 2"))
  .gain(slider(1.896, 1, 3))
   .resonance(slider(1, 1, 80, 1))
$: n("9 10 ").sound("casio").gain(1).fit()
  .resonance(slider(78, 1, 80, 1))
 .delay(slider(0.836))
.phaser(slider(13, 1, 20,1))

and the interface then looks like this

image shows  sliders implemented in Strudel.cc

For someone like me, used to spinning vinyl, it’s both alien and exhilarating. It’s a new way to “play” electronic music.

The Trade-Offs

It’s not all sunshine. A few honest caveats:

If code terrifies you, the learning curve is real and probably not for you. i have some coding experience so when things didn’t work I was able to scan the code quickly and see if there were missing parentheses or punctuation in the code.

You’ll need external tools for proper track exports.

No undo button — once you overwrite, it’s gone.

Latency can bite if your laptop’s struggling. I have a Ryzen 7 WITH 40 GB RAM, and it runs ok, but with 2 samples, and 3 syth sounds, running it was starting to get a bit jumpy.

But these quirks are part of the charm. Strudel is not a polished DAW. It’s a sketchpad, a playground, and in the right hands, a live instrument.

Why It Matters

Strudel strips electronic music back to its essence: sound, rhythm, play. It’s free, it runs in your browser, and it hands anyone — from bedroom producers to curious kids — the keys to experimentation.

For me, it reignited the thrill of discovery I felt the first time I dropped a needle on vinyl or fired up a TB-303 emulator. Strudel isn’t about perfection. It’s about exploration.

<Insert Audio Sample of: Complex layered Strudel jam with chopped samples and synths>

So yes, it looks confusing at first. But stick with it. Write a few lines of code, (and see where it takes you).

My advice; brew a coffee and enjoy a chunk of strudel!

Here are some examples of what I did while learning Strudel.cc

Live coding output

I set up Audacity to record the line out with loopback and recorded some live coding music production