MOTEBOX
granular sampler — user's manual
Motebox is a granular sampler that runs in your web browser. It takes any recording and turns it into clouds of tiny overlapping fragments — grains — that you can stretch, freeze, scatter, and pitch in real time. It is designed to be fed lo-fi analogue sources (tape echo, valve amps, vinyl) and to keep their character intact.
motebox.agoracle.io — nothing to install; Safari and Chrome on macOS.Quick start
- Open the site.
- Drop an audio file (WAV, MP3, M4A) anywhere on the page.
- Drag on the waveform — the grain cloud starts and follows your pointer.
- Press space to freeze the moment you like.
- Click capture output to record what you hear; stopping it downloads a WAV.
Thirty seconds of theory
A granulator doesn't play your recording from start to finish. Instead it fires a rapid stream of tiny snippets — grains — drawn from one spot in the recording. Each grain is smoothly faded in and out so there are no clicks. Position chooses the spot, density sets how many grains fire per second, grain size sets how long each one lasts, and everything else adds controlled randomness. Enough overlapping grains and a fraction of a second of audio becomes a sustained, evolving texture.
The waveform display
The big panel at the top is the instrument's main playing surface.
- The amber band shows where grains are being drawn from; the bright line inside it is the exact position.
- Drag horizontally to move position. If the cloud isn't running, dragging starts it.
- While holding, drag vertically to widen or narrow the spray.
- Sparks flash where each grain reads the buffer — higher or lower on the display according to where it lands in the stereo field.
- ← → nudge position finely; shift + arrows nudge coarsely.
- ✕ clear (in the source panel) empties the display and unloads the current source.
Freeze
Freeze (the button, or spacebar) locks the position — drags and arrow keys are ignored while it's on, though spray stays live. It's how you turn a moment into an indefinitely sustained cloud: find the spot, freeze it, then shape the sound with the other controls. The band turns ice blue while frozen.
Controls
Grain
| control | range | what it does |
|---|---|---|
| position | 0–100 % | Where in the recording grains are drawn from. |
| spray | 0–500 ms | Random scatter around the position. Small values shimmer; large values smear a whole region into a wash. |
| grain size | 20–1000 ms | Length of each grain. Short is gritty and granular; long is smooth and overlapping. |
| density | 2–100 /s | Grains per second — sparse pointillism up to a dense pad. Loudness is automatically compensated as grains stack up. |
Pitch
| control | range | what it does |
|---|---|---|
| pitch | ±12 st | Transposes every grain, up to an octave either way. |
| pitch scatter | 0–±7 st | Random per-grain detune. With quantise on, scattered grains land on exact semitones — instant harmonic clouds. |
| quantise | on/off | Rounds all pitch (including scatter) to whole semitones. |
| reverse chance | 0–100 % | Probability that any given grain plays backwards. |
Output
| control | range | what it does |
|---|---|---|
| stereo spread | 0–100 % | How widely grains are panned at random across the stereo field. |
| lowpass + resonance | 40 Hz–20 kHz | The only built-in effect — a filter for taming digital sheen or hollowing the cloud out. Everything else (echo, reverb) is meant to happen outside the box. |
| master | 0–100 % | Output level. A safety limiter quietly catches grain pile-ups. |
Recording from a mic or interface
- Click enable input and grant microphone permission.
- Pick your device (e.g. an audio interface) from the dropdown that appears — the choice is remembered for the session.
- Watch the level meter and set gain on the interface — it turns red when you're clipping.
- Click record — up to 60 seconds. When you stop, the recording immediately becomes the source, ready to granulate.
- While recording, the incoming signal draws live across the main display — the full width represents the 60-second budget.
- The mono checkbox folds the input to mono and ignores a silent channel — leave it on when recording one input of a stereo interface.
- The browser's "helpful" processing (echo cancellation, noise suppression, auto-gain) is disabled automatically, so line-level signals arrive untouched.
- Mic input needs a secure connection: the hosted site qualifies; if running locally,
serve via
python3 -m http.serverand use the localhost address.
Capturing and exporting
Click capture output and play; click stop & export and a 16-bit WAV of everything you heard downloads. Use capture as source loads that capture straight back in as the new source — the feedback workflow: granulate → capture → re-granulate, no files needed in between.
Keyboard reference
| key | action | |
|---|---|---|
| space | Toggle freeze | |
| ← → | Nudge position | |
| shift + ← → | Nudge position coarsely |
Tips
- Feed it character. Tape echo tails, room recordings, vinyl surface — the engine preserves grain and hiss rather than cleaning it up.
- Sustained textures: freeze, then small spray, long grain size, high density. A fraction of a second becomes a pad.
- Harmonic clouds: quantise on, pitch scatter up to ±7, medium density.
- Broken tape: reverse chance around 50 % with a little pitch scatter.
- Spectral crunch: tiny grains (20–40 ms) at high density.
- Keep echo outside the box: send the output through your delay (that's what the lowpass-only design assumes), then record the result back in through the input and granulate it again.
Troubleshooting
- No sound? Browsers require a click or keypress before audio can start — click the waveform or the start button.
- Position won't move? You're frozen — press space.
- Input won't enable locally? Mic access needs HTTPS or localhost —
use the hosted site, or
python3 -m http.serverlocally. - Distortion at extreme settings? That's the safety limiter working hard — back off master or density.