Compare
dawg vs Strudel
Strudel is for live-coding patterns in a browser. dawg is for making songs in a terminal with your hands, short commands or an agent. They share a sample format, and plenty of people will want both.
| Strudel | dawg | |
|---|---|---|
| What it is | A live-coding pattern language and REPL | A DAW you drive by keys, commands or an agent |
| Where it runs | In the browser; installable as a PWA | In a terminal on macOS or Linux |
| Install | None: open strudel.cc | One script, on Bun |
| How you write music | Code: mini-notation and pattern functions | Play keys, type short commands, or ask the agent |
| Time | Cycles; patterns repeat and transform | Bars and beats on a timeline, with a song form |
| Saved as | Code you share as a link | Typed TypeScript files in your folder |
| Sound | Web Audio synths and samples; MIDI and OSC out | Native synths, sampler and kit; WAV and MIDI files out |
| Samples | samples(), github: packs, bank() | Reads the same manifests and bank names |
| AI agent | No | Optional; your key or subscription |
| Offline | After the first visit; samples once used | Always; packs once used |
| Licence | AGPL-3.0 | MIT |
What Strudel is
Strudel is “an official port of the Tidal Cycles pattern language to JavaScript”. You write patterns in a REPL at strudel.cc and change them while they play. Its mini-notation packs a rhythm into a short string such as "bd(3,8) sd", and everything happens in cycles: add a step and the others get shorter, the cycle stays the same length.
Where Strudel is the better pick
- Live coding on stage. It was built for performing: you edit a pattern and hear it change on the next cycle.
- Zero install. Open a URL on any device, phone included. It works offline after the first visit and can install as an app.
- Pattern depth. Polymeter, Euclidean rhythms, chance, nesting and transforming functions go far beyond dawg’s
euclid()andgrid(). - Sharing. The share button turns a pattern into a link anyone can open and play, and can post it to the community bakery.
- Other gear. It can send MIDI and OSC, so it can sequence hardware and other software. dawg writes MIDI files but does not send live MIDI.
- Community. Years of the Tidal and TOPLAP scenes, a workshop, and a large set of shared patterns.
Where dawg is the better pick
- Your terminal. It runs next to your editor and shell, in as many terminals as you like, with no browser tab.
- Playing and recording. Ctrl-P turns the keyboard into a piano;
rrecords over the loop with a click and count-in, quantized to the grid. - Songs, not loops. A timeline in bars with sections, a song form, TAPE for copying and moving bars, a mixer and automation.
- An agent that shows its work. Ask in plain words; it types dawg commands into your prompt as it works, and each change is one undo step.
- Typed project files. A song is
song.tsplus atrack.tsper track, checked by TypeScript. Edit them in any editor and the open song updates. - Native audio. A native sink plays live keys about 17 ms after the press on macOS. Renders are byte-identical WAVs.
- Panes. One song open in several terminals, one transport, each pane with its own letter and undo.
dawg · ▶ 121 BPM · 2.2 · ↻ 1–4 · bass Bb dorian · opus-5.5 · gateway · rev 2 · ○ local ▏build ▼ ▏drop ┃ ▒▒ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┈ ┈ ┈ ┈▒▒ ┈ ┈ ┈ ┈ ┈ ┈ ┈┃┈ ┈ ┈ ┈ ┈▒▒ ┈ ┈ ┈ ┈ ┈ ┈ ┈ ┈ ┈┃┈ ┈ ┈ ┈ ┈ ┈ ┈┃┈ ┈┃┈┃▒ ┈ ┈ ┈ ┈ ┈┃┈ ┈ ┈ ┈ ┈ ┈ ┃ ╻▓ ┃ ┃ ┃ ┃▒ ┃ 4 ───────▒▒──────────────┃─────────────────────────────┃─────────────┃───┃─▒▒──────────┃─────────── ┃ ┃ ┃ ┃ ▒▒ ┃ ┈ ┈ ┈ ┈▒▒ ┈ ┈ ┈ ┈ ┈ ┈ ┈┃▒ ┈ ┈ ┈ ┈▒▒ ┈ ┈ ┈ ┈ ┈ ┈ ┈ ┈ ┈┃┈ ┈ ┈ ┈ ┈ ┈ ┈┃┈ ┈┃┈┃▒ ┈ ┈ ┈ ┈ ┈┃┈ ┈ ┈ ┈ ┈ ┈ ┃ ┃ ┃ ┃ ┃▒ ┃ ┃ ┃ ┃ ▓▓ ┃ ┃ ┃ ┃▒ ┃ ▒▒ ┈ ┈ ┈ ┈▒▒ ┈ ┈ ┈ ┈ ┈┃┈ ┈ ┈ ┈ ┈ ┈ ┈ ┈ ┈ ┈ ┈ ┈ ┈ ┈ ┈ ┈ ┈┃┈ ┈ ┈ ┈ ┈ ┈ ┈┃┈ ┈┃┈┃▒ ┈ ┈ ┈ ┈ ┈┃┈ ┈ ┈ ┈ ┈ ┈ ▒▒ ┃ ┃ ┃ ▒▒ ┃ ┈ ┈ ┈ ┈▒▒ ┈ ┈ ┈ ┈ ┈ ┈ ┈ ┈ ┈ ┈ ┈ ┈▒▒ ┈ ┈ ┈ ┈ ┈ ┈ ┈ ┈ ┈┃┈ ┈ ┈ ┈ ┈ ┈ ┈┃┈ ┈┃┈┃▒ ┈ ┈ ┈ ┈ ┈┃┈ ┈ ┈ ┈ ┈ ┈ ╻ ▓▓ ┃ ┃ ┃ ▒▒ ┃ 3 ───────▒▒────┃───────────────────────────────────────▒▒────────────▒▒──▒▒┃▒──────────▒▒────────── ┃ ┃▒ ┃ ┃▒ ┃ ┃ ┃ ┃ ┃▒ ┃ ┈ ┈ ┈ ┈▒▒ ┈ ┈┃┈ ┈ ┈ ┈ ┈ ┈ ┈ ┈ ┈ ┈▒▒ ┈ ┈ ┈ ┈ ┈ ┈ ┈ ┈┃┈ ┈ ┈ ┈ ┈┃┈ ┈ ┈┃┈ ┈ ┈┃▒ ┈ ┈ ┈┃┈ ┈ ┈ ┈ ┈ ┈ ┈ ┈ ╻ ▓▓ ┃ ┃ ┃ ▒▒ ┃ ┈ ┈ ┈ ┈▒▒┃┈ ┈ ┈ ┈ ┈ ┈ ┈ ┈ ┈ ┈ ┈ ┈ ┈ ┈ ┈ ┈ ┈ ┈ ┈ ┈ ┈┃┈ ┈ ┈ ┈ ┈┃┈ ┈ ┈┃┈ ┈ ┈┃▒ ┈ ┈ ┈┃┈ ┈ ┈ ┈ ┈ ┈ ┈ ┈ ┃ ┃ ┃ ┃ ▒▒ ┃ ▶ ───────▒▒━━──╎───────────────────▒▒────────────────▒▒────────▒▒────▒▒────▒▒──────▒▒────────────── ┈ ┈ ┈ ┈ ┈ ┈ ┈╎┈ ┈ ┈ ┈ ┈ ┈ ┈ ┈ ┈ ┈ ┈ ┈ ┈ ┈ ┈ ┈ ┈ ┈ ┈ ┈ ┈ ┈ ┈ ┈ ┈ ┈ ┈ ┈ ┈ ┈ ┈ ┈ ┈ ┈ ┈ ┈ ┈ ┈ ┈ ┈ ┈ ┈ ▫ 2 ─────────────▫─────────────────────────────────────────────────────────────────────────────────── C2 C3 C4 ⠸ thinking ╭─ NOW ────────────────────────────────────────────────────────────────────────────────────────────╮ │ › fx rev▏ │ ╰─────────────────────────────────────── night drive · $0 session · $0 today · opus-5.5 · gateway ─╯
How they fit together
dawg’s sampler follows Strudel’s sample semantics: begin and end pick a window, speed changes the rate and pitch (negative reverses), loop repeats it, and Strudel’s cut groups are dawg’s choke. The menu lists each parameter under its Strudel name.
It reads Strudel’s strudel.json pack manifests, including the github:user/repo shorthand, and its drum-machine bank names, so /pack add takes the packs Strudel users already know. dawg’s loader is written from the documented format only; it uses no Strudel code.
A good split: sketch and perform patterns in Strudel, then build the song, record parts and render it in dawg.
Try them
- Strudel: open strudel.cc and start the workshop.
- dawg: install it, run
dawgin a folder, and read the docs. Source is on GitHub.
Strudel facts are from strudel.cc and its repository, checked October 2026. Corrections welcome on GitHub.