Audacity 4 in the browser

Hey all!

With Audacity 4 entering its final stages before release, I wanted to see if I could get the robot to get a browser-based version of it going. And, well, yes: Check out Soundscaper, Audacity 4 on the web

The thing is based on DilsonsPickles’ design system, which has been our design prototype when designing Audacity 4, some web tech for audio and storage, as well as a healthy amount of Audacity code compiled into WebAssembly. I’ve also asked the robot to implement some pet features of mine, such as video tracks, multi-track recording and a project bin.

While it does run in the browser, it does not upload anything; all storage and processing happens on your device.

My hope is that Soundscaper can serve both the Audacity team as an advanced prototype, as well as users who cannot use Audacity 4 due to OS version limitations and other reasons. If you find any bugs, report them here or on Github – it’s very much not stable yet.

5 Likes

That’s really interesting Leo. Is it a personal project of yours?

1 Like

Yes. It evolved from “oh look, there’s an FFmpeg WASM which allows me to do file conversions” as I was getting annoyed that my video editor didn’t handle WebM and WebP particularly well (which also went somewhere: Converters | Koytek Wattenberg Media) via an “but couldn’t I do basic edits too?” to finally “but what if I ported Audacity?”. Compared to the little converter tools, I feel like this “Audacity on the web” concept has a lot more merit as an actual project.

There have been a few WebAssemby versions of Audacity over the years. I don’t recall the earliest version I’ve seen, but one of the more well known versions from around 2022: https://wavacity.com/

I wrote a rather lengthy reply to your post on this thread @LeoWattenberg along the lines of what you have posted in your blog, but it got held for review and then I guess deleted. If it all comes back to me I’ll write it again send it to you directly.

@LeoWattenberg , have you found any intrinsic limitations to the web version of Audacity 4?

I’m aware that browser based technology has evolved a lot over the years, but I’d guess there could still be issues related to, or arising from the browser’s security sandbox.

1 Like

@Wrecks0 I don’t see anything from you in the mod queue, so it probably failed for other reasons. But feel free to DM me!

@steve from what I can see so far:

  • audioIO is limited to whatever the browser provides. Usually you can select inputs freely, but not outputs, input channels are limited to 2 in chromium, and desktop audio needs explicit confirmation every time you engage it
  • CORS can get in the way of fetching online resources, so any kind of downloader requires a server to do it
  • compiled plugins don’t work (but nyquist should)
  • localStorage is managed by the browser and thus can’t be moved to a different drive for space reasons, and all files must be copied into either RAM or localStorage to be worked on (I compress them with wavpack to alleviate this pressure a bit)
1 Like

That’s really interesting, as a “died in the wool” webby who’s dabbled in web audio and web containers (thanks to Stackblitz)) I’m intrigued by this.

You can manage quite a lot locally on the play and mix side using the the web audio graph and local file access. But the specs and implementations are patchy (eg no master clock in spec, filesystem chromium only). It’s fun though and the web is an amazing platform. Eg see this basic mixer I’ve been playing with. BIggest problem was syncing streams - you can’t (weak spec) and have to load all into browser memory (Safari is the biggest problem here, no surprise)

Web assembly make sense but so much of the code will we making platform assumptions so I shows a good architecture that you can get so much to run. Awesome.

What is “the robot?” you mean Agentic something or other?

yeah - and more issues too :smiley:

It’s Codex, though I bet Claude could do it just as well. I recently told it to fully switch over to test-driven development and it’s spent the past 3 days clamping down on the basic “contracts” as it calls them. Whenever it’s done, it’ll probably either work surprisingly well, or not at all — but probably nothing in-between :slight_smile:

@LeoWattenberg, this is where I try to remember what I posted to you earlier that got lost.

If Audacity ends up with a front end on an internet browser, then correcting a problem for one person will correct it for everyone. There will be no need for users to run an update to see the latest.

But I can see running under that model it would be tempting to start walling off some features — even existing ones — under a paywall to afford the back end expenses.

Indeed, all incentives are pointed towards enshittification of a web thing. I shall try mitigating them as best I can, perhaps making an association similar to KDE to take care of it instead of kw.media. But we’ll get there when we get there, ie once the thing actually works and proves itself to be worthwhile pursuing in the first place.

Wow. I really didn’t expect to get Soundscaper into a so much more complete state than Audacity 4 upon its release. I have been pointing the robot quasi-non-stop at Soundscaper (here’s the commit graph), but then, I’m fairly sure the Audacity team has access to the very same LLMs as I do. I wonder what went wrong in the release process…

Anyhow:

This appears to be the case, and it also appears that setting an open source non-profit like KDE up in my jurisdiction is reasonably straight-forward. I shall get to it in the next couple of weeks.

Hi Leo,

I’ve been having a look at your Soundscaper to see to what extent it could be an alternative to Audacity 3.7.9 for me.

Right from the start, I noticed the following:

Although I can set the snap to the CDDA frames (75 fps), none of the timers allow me to display this, and the timer in the top toolbar associated with the playback position can only be set to hh:mm:ss.

I tested this in Firefox 155.0.1 on Windows 11.

Best regards
Christian

1 Like


Thanks, I’ve added it! You may need to delete the cache to get it to show up.

I had a brief look at Soundscaper too. I tried opening several of my aup3 project files. Not a single one would open. The error message was truncated so I don’t know what went awry.

Hm, I’m currently limiting files to 512MB to not immediately run out of memory and take down the browser, but maybe I can move this to disk instead. Depends on how much the browsers let me do without telling me off.

Maybe I should go full circle and make a desktop version too.

Ah, that would probably account for it.

I think you might make a lot of friends amongst disgruntled Aud4 users but what about Muse? Didn’t you mention a cease and desist letter from their legal folks? And, I suppose the obvious question is, if you can do that why can’t they?

They didn’t followup on that ¯\_ (ツ)_/¯ But I’m careful now to not infringe on their trademarks because they’d for sure try something if this gains any popularity.

I have two hypotheses on this:

  1. I tried adding very similar features to Audacity, but the robot had a much harder time figuring it out. I don’t know whether this is because webtech has more training data than C++, or whether it is because Audacity’s codebase is so byzantine that noone can find their way through it easily. It probably also helps that I have unit tests everywhere, which Audacity doesn’t.
  2. When I was at the Audacity team, we’d very rarely talk about the process, as especially the devs would much rather do real work than have retro meetings every other week. From what I can tell, the team still does code review and manual QA which takes an enormous amount of time and means that there is practically no speedup coming from AI usage, and I think they’ve been under pressure so much lately that it hasn’t occurred to them to discuss on how to speed things up. I meanwhile solely rely on automatic tests, whether it’s unit tests (all functions produce the right output for any input) or browser tests (basically macros; stringing together a bunch of actions produces the expected result). I even use these tests to generate the manual.

Given the state of the release of Audacity 4, it seems like their approach of working hasn’t actually resulted in a sufficiently bug-free release. It remains to be seen whether mine is any better, though given that I only really started working seriously a month or two ago on Soundscaper, alone, without a team, I have suspicions that I might be right.

1 Like

Hi Leo,

Looks good, Thank You!

Best regards
Christian

1 Like