The Patchbay_

Strudel vs Tone.js

Both run in the browser and make sound with JavaScript, and they are built for opposite purposes. Strudel is an instrument you perform with. Tone.js is a library you build with.

Short answer. Performing or sketching musical ideas live → Strudel. Building a web app, sequencer or interactive piece → Tone.js.

Side by side

Strudel Tone.js
PurposeLive coding performanceApplication framework
You writePatterns, evaluated liveApplication code
Audio graphManaged for youYou build it
SchedulingCycle-based patternsTransport with precise events
Embedding in an appPossible but not the pointThe whole point
Live re-evaluationCore featureNot built in
LanguageJavaScriptTypeScript / JavaScript
LicenseAGPL-3.0MIT
PlatformsWebWeb
First released~2022~2014
MaintainedYesYes

Where they actually differ

Performance tool versus building block

Strudel exists so you can change music while it plays, with a REPL loop and pattern functions designed for live edits. Tone.js gives you transports, synths, effects and precise scheduling to assemble into something else. Asking which is better is like asking whether a guitar beats a woodworking bench.

Tone.js gives you the audio graph, Strudel hides it

With Tone.js you wire oscillators into filters into effects into the destination, and you control every node. Strudel manages that internally so you can think in patterns. Explicit control is a burden when improvising and a requirement when building.

Different notions of time

Strudel thinks in cycles, and patterns subdivide them. Tone.js gives you a Transport, musical time notation and sample-accurate scheduling for individual events. Cycles are wonderful for improvisation; explicit scheduling is what you need for a sequencer someone else drives.

They can be combined

Strudel is a JavaScript library, so embedding it inside a larger web application is possible — a reasonable pattern is Tone.js for app-level audio infrastructure and Strudel for a live-coding panel inside it.

Which should you choose?

Choose Strudel when…

Choose Tone.js when…

Strudel detailsTone.js detailsAll ML & generative

← All comparisons