WAVR PLUGIN · OPEN SOURCE · v3.0.0

DRUM
/MACHINE
WAVR PRO

A 16/32-step sequencer that runs entirely in your browser. 8 synthesized instruments, per-row timing divisions from 1/32 to 1/4T, a 18-sound offline sample library, and file upload. Zero dependencies. Zero install.

WEB AUDIO API 8 INSTRUMENTS PER-ROW TIMING 18 SYNTH SAMPLES FILE UPLOAD WORKS OFFLINE
8 INSTRUMENTS 16 OR 32 STEPS PER-ROW STEP DIVISIONS SWING 0–75% PER-STEP VELOCITY 18 BUILT-IN SAMPLES FILE UPLOAD OFFLINE BOUNCE SOLO & MUTE 4 GENRE PRESETS 8 INSTRUMENTS 16 OR 32 STEPS PER-ROW STEP DIVISIONS SWING 0–75% PER-STEP VELOCITY 18 BUILT-IN SAMPLES FILE UPLOAD OFFLINE BOUNCE SOLO & MUTE 4 GENRE PRESETS
WHAT IT DOES

Every feature.
No server.

Everything runs in your browser via the Web Audio API. Your audio never leaves your machine.

Step grid
Toggle steps with a click. Right-click any step to set its velocity (0–100). Group markers every 4 steps. Flash animation on active step.CORE
8 Instruments
Kick, Snare, Clap, HH Closed, HH Open, Tom Hi, Tom Mid, Ride. Each synthesized with Web Audio nodes — no sample files required for the defaults.SYNTHESIS
÷
Per-row timing
Each row has its own step division: 1/32, 1/16, 1/16T, 1/8, 1/8T, 1/4, 1/4T. Rows run fully independent clocks — like Maschine's note repeat.POLYRHYTHM
Swing
Global swing 0–75% applied to all rows proportionally. Even steps fire on-grid; odd steps are pushed forward. Affects live playback and offline bounce equally.FEEL
Sample slots
Every row has a sample slot. Load from the built-in library, drag a file from your desktop, or upload via the browser panel. Synth fallback is instant if slot is empty.SAMPLER
18 built-in sounds
Rendered locally via OfflineAudioContext — no network required. 808 Kick, Crack Snare, Sizzle Hat, FM Bell, Crash, and more.OFFLINE
Offline bounce
Render a full-quality 1-bar loop to AudioBuffer via OfflineAudioContext. Per-row timing, samples, and swing all applied correctly in the bounce.EXPORT
Genre presets
Hip Hop (90 BPM, 30% swing), House (128 BPM), Techno (138 BPM), Jungle (170 BPM). Each loads a full 32-step pattern and resets BPM.PRESETS
PER-ROW TIMING

Polyrhythm
out of the box.

Every row runs its own independent clock. Set hi-hats to 1/32 for double-time, kick to 1/4 for a sparse groove, ride to 1/8T for a triplet feel — all in the same pattern.

1/32
Thirty-second note
Twice the density of default — double-time hi-hat rolls, ghost notes
0.5× base duration
1/16
Sixteenth note — default
The standard grid. 16 steps = 1 bar at any BPM
1× base duration
1/16T
Sixteenth triplet
3 steps fit where 2 would — shuffle feel on any row
2/3× base duration
1/8
Eighth note
Half as many hits per bar — sparse, spacious patterns
2× base duration
1/8T
Eighth triplet
3 in the space of 2 eighth notes — rolling tom fills
4/3× base duration
1/4
Quarter note
One hit per beat — four-on-the-floor kick, whole-bar accents
4× base duration
1/4T
Quarter triplet
3 beats in the space of 2 — maximum cross-rhythm tension
8/3× base duration
VISUAL — 1 BAR, 4 ROWS, DIFFERENT DIVISIONS
Each row's steps are spaced proportionally to its division. A kick at 1/4 fires 4 times while a hi-hat at 1/16 fires 16 times in the same bar. They share one timeline.
SAMPLE LIBRARY

18 sounds.
Zero network.

Every library sample is synthesized locally via OfflineAudioContext — no CDN, no CORS, no waiting. Load your own files on top of any slot.

KICKS — 4 SOUNDS
808 Kicksub sweep
Deep Kicklow body
Punchy Kickfast sweep
Vinyl Kicksaturated
SNARES — 3 SOUNDS
Crack Snarebright
Fat Snareshaped noise
Rimshotmetallic
HI-HATS — 4 SOUNDS
Tight HHclosed
Crisp HHpartials
Open HHlong decay
Sizzle HatFM shimmer
CLAPS — 2 SOUNDS
Snap Claptight
Room Clapshaped
PERCS — 5 SOUNDS
High Tompitch sweep
Floor Tomdeep
Ride BellFM synthesis
Crashshimmer
Load your own samples
Replace any row's synth with your own audio files. Three ways to load:
Upload button in the sample browser panel
Click the ⬡ synth label under any instrument
Drag any audio file from your OS onto a row
Programmatic API
Load buffers directly in code. Session state saves sample names and source type. Library samples re-render from the same function on restore.
Synth fallback
Clear any sample slot with ✕ to instantly restore the built-in synthesis. No row is ever broken — there's always a sound.
GET STARTED

Three lines
to make beats.

Standalone, npm, or React. Works everywhere the Web Audio API does — Chrome, Firefox, Safari, Edge.

// npm
npm install wavr-drum-machine

// import
import DrumMachine from 'wavr-drum-machine';

// mount
const dm = new DrumMachine({
  audioContext: new AudioContext(),
  bpm: 128
});
dm.mount(document.getElementById('container'));

// handle bounce
dm.onRender = (audioBuffer, bpm) => {
  // AudioBuffer ready to use
};

// load a sample programmatically
dm.loadSampleBuffer('kick', buf, 'My Kick');

// per-row step division
dm._stepDivs.hhc = '1/32';  // hi-hat → double-time
dm._stepDivs.kick = '1/4'; // kick → one per beat
Browser Web Audio Offline Render
Chrome 66+
Firefox 76+
Safari 14.1+
Edge 79+
iOS Safari 14.5+
INSTRUMENT IDs
kick
Kick drum
snare
Snare
clap
Clap
hhc
Hi-Hat Closed
hho
Hi-Hat Open
tom_hi
Tom Hi
tom_mid
Tom Mid
ride
Ride
READY

Make something
right now.

No account. No build step. Open the demo or pull the package.