WAVR PRO is a full-featured digital audio workstation that runs entirely in your browser. Multi-track timeline, per-track 6-band EQ, five visualizer modes, session persistence, and a complete VST-style plugin system — no download, no subscription, no install.
WAVR PRO ships with a complete recording and production workflow. Everything runs client-side on the Web Audio API — your audio never leaves your machine.
.wavrproj.
WORKFLOW
OfflineAudioContext. Progress bar, EQ applied in the
bounce. No server roundtrip.
EXPORT
WavrPlugin class and it gets a topbar button,
modal/drawer chrome, BPM sync, and session state automatically.
EXTENSIBLE
MediaRecorder. Recorded clips drop straight onto the
timeline.
RECORDING
React manages UI state. All audio timing, scheduling, and synthesis runs through refs and the Web Audio API — no re-renders in the hot path.
wavr-pro/ ├── src/ │ ├── WavrPro.jsx ← main DAW component │ └── wavr-ember-theme.css ← drop-in theme │ ├── plugins/ │ └── DrumMachine/ │ ├── DrumMachine.js ← pure JS plugin │ ├── DrumMachinePlugin.jsx ← React wrapper │ └── test.html ← standalone test │ ├── plugin-sdk/ │ ├── src/ │ │ ├── WavrPlugin.js ← base class │ │ ├── PluginShell.jsx ← generic wrapper │ │ └── usePluginManager.js │ ├── plugins/DrumMachine/ │ └── examples/ExamplePlugin.js │ ├── public/ │ ├── wavr-pro.html ← standalone full │ └── wavr-lite.html ← standalone lite │ ├── docs/ ← GitHub Pages ├── README.md ├── CONTRIBUTING.md └── COMMUNITY.md
One base class. Four methods. The framework handles everything else — chrome, session state, BPM sync, modal/drawer UI.
Use the standalone build for zero-config audio work, or integrate WavrPro.jsx into your React project for full customisation.
wavr-pro.html from the
repo.
// 1. Import the component import WavrPro from './src/WavrPro'; // 2. Drop it anywhere in your app export default function App() { return <WavrPro />; } // 3. Add the Drum Machine plugin import DrumMachine from './plugins/DrumMachine'; pluginManager.register(DrumMachine); // 4. Build your own plugin class MyPlugin extends WavrPlugin { static pluginId = "my-plugin"; mount(el) { /* build UI */ } destroy() { super.destroy(); } getState() { return {}; } setState(s) { } }
WAVR runs entirely client-side on the Web Audio API. That's a superpower and a constraint. Here's what that means in practice.
No account. No install. No waiting. The DAW is already running at the link below.
MIT licence · Web Audio API · React 18 · Zero external dependencies
Works
in Chrome, Firefox, Safari, Edge — any modern browser.