Rowen Studio
For recording a vocal over a beat and arranging it without installing a DAW. Everything runs on the visitor's device and no audio is uploaded.
- Category
- Experiment
- Status
- Invite only
- Role
- Design and development
- Year
- 2026
Invite only while it is in private testing.

Overview
Rowen Studio is a multitrack DAW in the browser, laid out after FL Studio. Audio files drop onto a playlist, are edited on a snapped grid and recorded over from a microphone, then go through a mixer with inserts and sends to a WAV bounce or one WAV per track.
Alongside audio it has patterns: a channel rack and a piano roll edit the same notes, played by synthesized drums or a sampler channel. Built-in effects stand in for plugins, since a browser can't host VST3. Projects save in the browser, the app installs as a PWA that works offline, and two browsers can edit one project over a direct WebRTC connection.
It is an experiment in private testing: the page is noindex, isn't linked from the site, and opens only after an invite code is entered on that device.
What it does
Import, arrange and edit audio
Audio files are dropped in or browsed, with tempo detected on import. Clips drag, trim, split and delete on a snapped grid, with markers, marquee selection, copy and paste, and automatic crossfades where clips overlap.
Recording with latency calibration
Records from a microphone with a count-in and input monitoring. A calibration plays three clicks, listens for them and takes the median, and later takes are pulled back by that measured delay.
Mixer and built-in effects
Per-track volume, pan, mute and solo, insert slots and send buses. Twelve effects built from Web Audio nodes, including EQ, compressor, delay, reverb, limiter and bitcrusher, plus lite versions of Rowen's Vocal Polish and Fragment plugins, each with knobs and presets.
Patterns, channel rack and piano roll
Step sequencing and piano-roll editing work on the same notes, played by synthesized kick, snare, hats, clap and tom or by a sampler channel, with scale highlighting in the roll.
Automation, clip envelopes and time-stretch
Volume and pan automation lanes sit directly under the track they control, clip gain envelopes shape the level inside a single clip, and loops can be warped to the project tempo.
Loudness readout and export
Integrated LUFS and peak readings for the rendered mix, a WAV bounce, and stem export with one WAV per track.
Saved projects, offline install and Jam
Projects save in the browser and reopen after a reload. Chrome and Edge can install Studio as an app that works offline, and Jam links two browsers to edit one project by swapping copy-paste codes.
How it was built
Playback and bounce share one graph
AudioContext and OfflineAudioContext expose the same node API, so the audio graph is built by one function used twice: against a live context it is playback, against an offline one it is the bounce. EQ, automation and the master chain therefore can't sound different in the export, and an edit made during playback just reschedules from the playhead.
Time-stretch that doesn't sound robotic
Warping uses WSOLA: before each grain is written, the read position slides a few milliseconds either way to find the offset whose waveform best continues the output. Warped clips remember their source and original tempo, fold the ratio to the nearest octave, and re-stretch from the original when the project tempo changes, so quality never degrades across changes.
Projects that store audio once
IndexedDB keeps project structure as a few kilobytes of JSON and audio as the original file keyed by a hash of its bytes, so a beat used in four projects is stored once and deleting a project removes only audio nothing else uses. A private window or full disk leaves the app working without saving, and waveform peaks are computed in a worker built from a Blob so long imports don't stall the transport.
Collaboration without a relay server
Jam connects two browsers over a WebRTC data channel, with handshake codes passed through whatever chat the two people already use; a public STUN server is used only for address discovery. Each edit travels as the same snapshot the undo system already makes, so a synced edit and a local one behave the same.
Built with
- Vanilla JavaScript
- Web Audio API
- OfflineAudioContext
- MediaRecorder
- Web Workers
- IndexedDB
- Service Worker
- Installable PWA
- WebRTC data channels
- File System Access API
- Web Crypto
Want something like Rowen Studio?
Tell me what you are building and what it needs to do. rowenapichardo@gmail.com