blüp
New

How it works

Make a beat in about thirty seconds. Everything else is optional.

Open the sequencer

Start

  1. Press Play. The first press takes a second or two while the drum sounds download. After that it is instant.
  2. Press a genre — 80s, Synth, Techno or House. That builds a whole loop: tempo, key, drum pattern, bassline and chords.
  3. Press 🎲 Random to roll another one. If a genre is lit, Random stays in that genre. If none is lit, it picks the genre too.

Nothing you do here can break anything, and you do not need an account to play, build or export.

The grid

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.

Drums

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.

Bass

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.

Chords

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.

Groove and Kit

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.

Tempo, key, scale, steps

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.

Sounds

The Sample library panel holds 218 banks and about 2,000 individual sounds from the Dirt-Samples collection — drums, breaks, percussion, vocal bits, noise.

  • Pick a bank from the menu, or type in the filter box to narrow 218 down to the few you want.
  • ▶ previews a sound without touching your loop.
  • Use puts that bank on the first empty drum row, then you tap squares to place it.
  • The little 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.

Saving & sharing

Three different things, on purpose:

♥ Fav
One tap, no account, no naming. Saved in this browser only — a place to throw a loop you stumbled into before you roll again. It will not follow you to another device.
Save
Needs a free account. Gives the loop a name and its own web address you can send to anyone. Private until you say otherwise.
Share to community
Puts a saved loop on the community page with your name and picture next to it. Reversible any time.

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.

Export

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.

The code panel

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*4four 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
cs2C sharp, octave 2 — write sharps as s, not #

Press ⌘Enter to hear an edit immediately, against the bar already playing.

Shortcuts

Spaceplay or stop
⌘Enterrun the code as edited
⌘.stop
⌘Zundo the last grid change

No sound?

Press Test tone. It plays a plain beep two different ways, bypassing everything else, and reports what happened in the small gray text.

  • You hear the beep but not your loop — the pattern or its sounds are the problem. Check the gray readout says samples: local.
  • You hear nothing at all, on an iPhone — check the ring/silent switch on the side of the phone. Web audio obeys it and no website can override that. Then check media volume by pressing volume-up while a sound is playing; iOS has separate ringer and media volumes.
  • "Audio is blocked by the browser" — tap Play once more. Browsers need a tap before they will make sound, and occasionally the first one does not count.
  • It says 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.