Make a beat in about thirty seconds. Everything else is optional.
Nothing you do here can break anything, and you do not need an account to play, build or export.
Each row is an instrument. Each square is a sixteenth of a bar — sixteen squares is one bar. A lit square means "play here". Tap to toggle. The column lights up green as it plays, so you can always see where you are.
Four rows to start: kick, snare, hats, percussion. Each row has a sound menu and three buttons — M mutes it, S solos it (everything else goes quiet), × removes the row. + Track adds another.
A piano roll. The rows are notes, low at the bottom, and they change to match your key and scale — so anything you place is in key. One note per column: tap a lit square to clear it, tap a different row to move it.
Four slots, one chord per bar. The menu only offers chords that belong to your key, labeled both ways — i · Cm means the first chord of the scale, which in C minor is C minor.
Two menus above the drums that change a lot at once. Groove changes where the hits fall — four on the floor, boom bap, breakbeat, trap and six more. Kit changes what they sound like — 808, 909, acoustic, lo-fi. They combine, so you can put boom bap on an 808.
Change the key and the bass and chords transpose with it — the loop stays itself in a new key. Steps switches between 8, 16 and 32 squares a bar. Swing pushes the offbeats late for a looser feel. Reverb is the space around the chords.
The Sample library panel holds 218 banks and about 2,000 individual sounds from the Dirt-Samples collection — drums, breaks, percussion, vocal bits, noise.
n0, n1 labels are the position of each file in its bank. Useful in the code panel: s("amencutup").n(4) plays the fifth slice.Bass and chords have their own sound menus — four raw waveforms plus sampled synths like Juno, Moog and JVbass.
Three different things, on purpose:
Your work is also kept in this browser as you go, so signing in or refreshing will not lose it. You will see "Restored your unsaved changes" when that happens. That is a safety net, not storage — saving is what makes a loop real.
Your profile lives at /u/yourname. Add a picture and a bio under your profile.
Download WAV records the loop as audio you can drop into a video, a DAW, anything. Pick how many bars first — 1 to 64.
Two things worth knowing. Recording happens in real time, so a 64-bar export takes as long as playing 64 bars; the button counts down. And it starts on a bar line, so the file loops seamlessly.
Download code gives you the Strudel text instead, which you can paste back in here or into strudel.cc.
Leave Limiter ticked. A busy loop adds up past what the speakers can take, which sounds like crackle and gets baked permanently into an export. The limiter catches the peaks.
Press Code to see what the grid is really doing. It is Strudel, a live-coding music language. You can edit it directly, and your edit drives playback until you touch the grid again.
setcpm(120/4)
kick: s("bd ~ ~ ~ bd ~ ~ ~ bd ~ ~ ~ bd ~ ~ ~").gain(0.9)
hats: s("hh*8").gain(0.5)
bass: note("c2 ~ ds2 ~ g2 ~ as2 ~").sound("sawtooth").lpf(800)
chords: note("<[c3,ds3,g3] [gs3,c4,ds4]>").sound("juno")
setcpm(120/4) | tempo — this is 120 BPM |
bd*4 | four kicks in the bar |
~ | a rest |
<a b> | one per bar, not per step |
[c,e,g] | played together — a chord |
kick: | a name, so layers stack instead of replacing each other |
cs2 | C sharp, octave 2 — write sharps as s, not # |
Press ⌘Enter to hear an edit immediately, against the bar already playing.
| Space | play or stop |
| ⌘Enter | run the code as edited |
| ⌘. | stop |
| ⌘Z | undo the last grid change |
Press Test tone. It plays a plain beep two different ways, bypassing everything else, and reports what happened in the small gray text.
samples: local.samples: loading — the sound files are still downloading. First load only.Still stuck? Tell whoever sent you this link what the gray readout said — it names the exact point things stopped.