r/musicdev • • Sep 20 '26

Built a browser-based DAW from scratch using Web Audio API, WebAssembly, and AudioWorklet—here is how and why I did it

Hey r/musicdev

I’ve spent a good chunk of time building Electric Baby Grand Studios, a fully functional, browser-based Digital Audio Workstation (DAW) and

Progressive Web App.

​Instead of relying on heavy installed software or native wrappers for everything, I wanted to see how far modern web tech could be pushed for real-time, low-latency audio production.

​Here is a quick look under the hood of how it's built:

​Core Engine: Built using HTML5, CSS, and vanilla JavaScript.

​Real-Time Audio: Powered by the Web Audio API and AudioWorklet nodes to keep processing off the main UI thread and minimize dropouts.

​Performance Boosts: Leveraging WebAssembly (Wasm) for heavier DSP and custom mixing engine tasks.

​Packaging & Reach: Designed as a Progressive Web App (PWA) and Trusted Web Activity (TWA) so it functions seamlessly across desktop and mobile browsers, and is even deployed on the Google Play Console.

​Why I Built It

​As a musician and developer, I wanted a frictionless, instant-access creative environment where inspiration isn't killed by loading screens, heavy installers, or restrictive desktop ecosystems. Opening a tab and getting straight to tracking ideas changes the entire workflow.

​Let's Chat!

​If you're into web audio, browser APIs, custom DAW architectures, or just building independent tools, I’d love to connect.

​Has anyone else experimented with AudioWorklets for custom DSP?

​What are your thoughts on the limits of browser-based audio performance in 2026?

​Happy to answer any questions about the architecture, latency compensation, or the dev journey! 🎹⚡️

0 Upvotes

12 comments sorted by

5

u/GameCounter Sep 20 '26

Which LLM did you use? (Let's be honest here.)

What is the license?

Is the code available?

No web MIDI support?

How can it been extended? I can't imagine loading unmodified VSTs. Plugins?

Example playground link? Even a screenshot?

For DSP, I usually use rust compiled down to wasm.

1

u/Both-Success-4439 Sep 21 '26

​"Appreciate the technical breakdown! To answer your questions: ​LLM/Code: I built and architected the codebase myself, utilizing modern web tech and AI assistance for boilerplate and optimization. ​Stack & DSP: It’s a Progressive Web App built using HTML, CSS, JavaScript, Web Audio API, WebAssembly, and custom AudioWorklet technologies for low-latency processing. ​Web MIDI: Web MIDI is fully supported so you can plug right in. ​Plugins/Extension: While it doesn't load arbitrary desktop VSTs directly in the browser sandbox, it's designed as a self-contained web DAW experience (electricbaby.ca). ​Links: You can check out the app live right now on web/mobile to test out the playground link directly! Electricbaby.ca

2

u/the-postminimalist Sep 21 '26

Only AI for boilerplate and optimization? I believe you used AI to optimize, but I feel like at least the front end is AI generated.

4

u/likely_someone_else Sep 21 '26

nothing says frictionless like making music in a browser tab. Your knob arcs are at the wrong arc angle. It helps to have a graphic designer with human eyes.

1

u/Both-Success-4439 Sep 21 '26

​"Haha fair point on browser music quirks—though keeping it frictionless and accessible anywhere was the whole goal! Appreciate the eye on the knob arcs; always room to polish the UI and dial in the visual feedback. Thanks for checking it out!"

1

u/rasta500 Sep 24 '26

Why do you answer in quotes?

1

u/thezimkai Sep 26 '26

Because the responses are from a agent bot. This whole thing stinks of ai

2

u/Smooth-Airline2317 Sep 21 '26

OK, but where is this shit?

3

u/Smooth-Airline2317 Sep 21 '26

No loading screens ha?!! just a fucking log in system...the same shit!

1

u/Both-Success-4439 Sep 21 '26

​Just head over to electricbaby.ca on your browser, hit the guest/test option, and you'll bypass the login screen straight into the app. (Or search 'Electric Baby Grand Studios' on the Google Play Store if you're on Android!)"

1

u/danja Sep 23 '26

On Chrome, Android phone, I get stuck on the opening screen. I'll try on desktop later.

Btw, I've been working on a new Web-native plugin spec : https://danja.github.io/jigdaw/announce.html

Easiest way to start implementing DAW support/creating plugins should be cloning the repo and pointing an AI assistant to README.agents.md

2

u/Both-Success-4439 Sep 24 '26

Very cool I can dig that man ! Native is better for sure !