Show HN: I'm building a browser-based DAW
signalsandsorcery.org
signalsandsorcery.org
Timing is the hardest - especially if you’re going to try to let people record on the fly against the running track. Have two or more play at the same time… rough.
And I suggest you checkout https://www2022.thewebconf.org/PaperFiles/40.pdf there is an implementation called wam out there that lets you use VSTs in JS. It works pretty well.
Good luck! I’ll be one of the first to sign up.
I know people who mix+master and sending huge project files and also have to convert between DAW formats even. Having a common web DAW that can render on a server could be a very powerful ecosystem.
1.) Is WebAssembly better about timing + buffers?
2.) Is JS have a WebGL-esque lower-level interface with audio hardware planned?
3.) I believe Electron grants more local permissions. I know Electron has some modernization hurdles (ESM still I think) but wonder if it's any better or the Chromium process within it has higher affinity than a proper browser. Not quite "web-based" but maybe a better option as your project gets more complex.
4.) Is it possible to have a buffer that "renders" separate from any loops themselves? If you can't time a drumtrack in real-time accurately enough or "play" an instrument you could certainly have it render N millisecond ahead.
As far as libraries go for analysis, the only solid option I've found so far is Meyda[0]. I was drawn to it mostly because it closely maps to librosa[1], and it seems fairly mature. Does anyone have any others that may come in handy for this kind of work? This is just free-time tinkering for me. I'm completely new to the space.
[0]: https://meyda.js.org/ [1]: https://librosa.org/
Desktop DAW's have many benefits:
- ASIO drivers for low latency
- Better CPU utilization
- Multi-channel output
- VST plugins (essential for most composers)
- Good MIDI supportI am currently recording an album with my band and we all have have monitoring equipment and recording interfaces at home (save for the drummer for obvious reasons) and currently we just bounce a Reaper project between each other so we can all add our respective tracks.
It's far from ideal. We don't all run the same OS. We don't all use the same commercial plugins. Result is that nobody gets the same audio out of it and sometimes the project gets mangled (eg the Linux port can't load some resources because they point towards `C:\Users\JohnDoe\Album` or something). Also, the folders get huge very fast.
A web-native DAW would solve a lot of these problems, assuming realtime audio is possible. I know that, for instance, with Pipewire or JACK/PulseAudio, you could probably pull it off, but I have no idea how it would work on Windows' audio stack which appears to be made of pixie dust.
I'm hoping the VST format dies a painful death, personally. It's a non-portable legacy solution and even in the best of cases it's a pain to work with.
One of my complete song can push even my Intel i9 to its knees on desktop. You're talking about dozens of MIDI tracks, dozens of audio tracks, several plugins...that requires heavy duty performance.
Everyone works with the exact same environment. Accessible from any machine. The only concern is latency, and that will be a hard one to solve. But once it is solved, it could imo become the next big step forward for DAWs that completely changes the game.
On my desktop with Ryzen 5700x, 32GB Ram and a dedicated audio interface, I still get 11ms I/O latency (22ms combined) in Ableton. If I had to send this signal through a web browser to a server, I can’t see any scenario where I could keep this under 30ms. Beyond 30ms, the lag becomes noticeable.
It can work if you’re only working with MIDI tracks but any audio work requires absolutely the lowest possible latency
- mute tracks easily, change volume on parts
- add tracks where we can upload alternate/extra parts
- visualize the structural flow of a song
- general cut/splice play around :)
the company that makes bandlab also makes a desktop DAW called cakewalk. It seems to have a nice feature where you can sync it with bandlab, which would be killer. It's windows only so I've been unable to try it out though
Definitely agree re: VST format - PC/Mac/Linux fragmentation is annoying, old plugins often can't even be loaded, and sharing presets is a pain.
Probably they key reason why they get to support X86 plugins on M1.
You need to restart the plugin manually.
Chromebook users
On-the-go users
Teachers where students have their own computers
I bet there's more
I'm sure you aren't aiming your project at, like, totally upending the record publishing industry. But it would be cool if someday artists could upload snippets, mix them together, publish the result for sale on a site. And somehow have it sort out the contributors so that royalties can be trickled down elegantly so that, like, the internet-equivalent of a session artist gets a fair cut.
Uh... not to set the bar too high or anything. Good luck!
Especially, btw, with the Spectre/meltdown mitigations that coarsen the browser's clock resolution/etc.
[0] For example: https://web.dev/audio-scheduling/
I'd love to see a set of bindings come out that allow us to build web DAWs with the WebAudio API, but utilize native C/C++ when run locally via e.g. Electron
The problem with DAWs in browsers is more around latency and precise timing, which browsers don't exactly excel at compared to desktop applications.
Must haves:
- Compose a draft and share with friends, so that they can contribute
- No install/login required.. just too much of a drag to keep track of when we're evaluating new things all the time.
All the music features are less importantbackstory is my band broke up after we all moved around the country and too far for live jams due to latency. Since, we've been after an async composer just to screw around again.
The fonts make everything really hard to read. (Full disclosure, I'm old and my eyes suck, but I was wearing glasses while trying it out.) Personally, they also remind me of old Mac 128k adventure games. (Which I guess makes sense given the name, but isn't what I want when working with a tool.)
I ran it in Orion (WebKit-based, similar to Safari) and couldn't get more than one segment of music to play at a time.
Pressing the large play button at the bottom left did nothing, as did pressing the "Render" button.
The switches in the top row only look like switches once you mouse over them (at least in Orion). Otherwise they look like a small off-center circle and had me scratching my head. Some additional contrast in the background color of the switch might help.
I hope that helps!
Web audio has come a long way. MIDI and SoundFont support was an adventure. Good luck!
I'm using the latest Chrome on OSX.
Have you considered a sample market? I'd love to be able to sell loops that I can't really find much of a use for, or drum samples that I made myself but don't need.
Also feel free to download and use the samples. They are 100% royalty free.
The WebAudioModules distro is 4 GitHub repos, it is also available as npm modules. (https://github.com/webaudiomodules, start by building the wam-example one and run the examples). You can find some presentations on youtube (such as: https://www.youtube.com/watch?v=8G3we8dikq8).
DAW prototype (should be included soon in the wam-example repo): Picture : https://i.ibb.co/mBdNGqk/WAM2-DAW.jpg online version: https://wam-openstudio.vidalmazuy.fr/, current repo (work in progress, as I said, this work is active and we do plan to add all missing functionnalities the upcoming months) https://github.com/TER-M1/wam-openstudio
There are also professional, commercial DAWs, not open source ones, such as https://ampedstudio.com/ that is also capable of loading WAM plugins, and is developed using the same approach as our DAW proto (host as AW), bandlab.com or soundtrap.com.
Michel
But it's probably fun to work on
A lot of people making music have spent $$$ on plugins, and just on the sheer R&D they've received, are going to sound considerably better than anything someone who is focused on writing a DAW can make.
Plus, from my own experience, I have 20+ years working with FLStudio and know the program inside and out. Abandoning that plus my investments in VSTs is simply a no-go.
So, good luck, but you've got some significant barriers to overcome.
"Car companies like Honda and Ford have been around for decades, and those vehicles are going to drive considerably better than anything someone working in their backyard could make.
Plus, from my own experience, I've been driving these cars for the past 20 years, and abandoning that experience in how they feel and handle is a no-go.
So good luck, but you've got significant barriers to overcome"
Other than some side project just for fun, I absolutely see no practical use, application, or function the app can provide that Ardour (which is already open-source and free if you compile it) isn’t going to do infinitely better.
The author isn’t an idiot, quite the opposite, it takes a lot of effort to write even a simple DAW.
But the product makes no sense. The target platform is totally in opposition to the needs the tool requires to fulfill its purpose.
It’s like those people who run DOOM on their smart fridge. The creator isn’t an idiot, it’s just a waste of time outside of saying ‘I did this’ and nobody is ever actually going to choose to seriously play the game with that way.
There’s no need to be snarky like you’re being, it’s possible to make points without coming off like an asshole.
I also need to note that users of free/cheap audio software can be some of the brattiest, most entitled and actively hostile users I've seen anywhere, based in my 20+ years on KVR, GearSpace, and other forums. Every dev in the space needs to have a thick skin and be ready for the "it would be great if only it..." to start rolling in.
Great to see people pushing the "envelope" of browser-based tech!
They probably wouldn’t find that “Logic—al”…
(I couldn’t help myself, I’m a Logic user and you wrote it for me :P)
You are saying this, not me.
Plug-ins are often the secret sauce for our workflows and styles, and prosumers/hobbyists dip into them as well. If your browser based DAW doesn't have, say, Izotope RX support, then that's a non-starter for a ton of people (especially podcasters). I'm not going to round trip between software on my computer and a browser based software, that's for sure. I don't have time for that nonsense.
Regardless of your opinion or how you feel about the above, your tone is needlessly hostile and unproductive.
Both they and I would both love to know if the developer behind this DAW has given any thought to how they might integrate with existing plug-ins such as VSTs, not an easy feat.
People far too often approach projects like this with "this app is only useful for me if it does x..." and I think that framing is poor when someone is just exercising their passion on a project. I'd personally respond with "great, go build your own that supports your plug-ins. Have fun."
Is it? I’m genuinely asking as someone who works in audio production. Plenty of people create tools for us in the podcast space, AI transcriptions for spoken word (premiere has a good one), new ways to automate typically manual processes for mastering, you name it. The thing is it is not a given that the person creating a solution has an audio production background and properly weighs the needs.
Plenty of engineers do work for or work directly for hospitals. Are you going to tell me that they might not overlook something a nurse or doctor might need? Because I assure you it happens in every industry when people come up with new tools and solutions, often because many actually don’t come from a strong background in the industry they’re making tools for. I value an outside perspective, don’t get me wrong. But it has its issues too.
It’s not uncommon and it’s fair for us technicians, the people these solutions are designed for, to ask questions.
I took it personally because all these hacker news retards want to nitpick a hobby project when a post like this (really cool, non-axios.com-tech-guy-libertarian-shit) shows up to feel like they have a big dick despite not being able to build something half as cool themselves
Of course, the Web based DAWs and plugins are young, but some big actors like Roland (see https://roland50.studio/), Ableton (see https://learningsynths.ableton.com/), Propellerheads (they ported to the Web their VST synth Europa), Antares (the real autotune VST is available in the online DAW soundtrap.com).
Real time recording is operational without any hassle on Mac OS, and with some driver configs on Windows or Linux. You need to calibrate "latency compensation", that will automatically adjust the live recording audio to existing tracks.
Yes, online DAWs are close to GarageBand for example, in terms of features. But they also have some advantages : automatic sharing of projects, some DAWS even allow synchronous collaboration à la Google Docs, sharing a project is just sharing a link, and working together on the same project becomes really easy, no hassle for storing the audio files. Publication to spotify/deezer/youtube/apple Music is a click on a button. Most DAWS can be used for free. Etc. It's just the target user profile that is different: while Pro Tools/Logic/Ableton will target studios and pro users, these online DAWS are more for less exigent, more online connected people. Most projects are electronic music, etc.
I use Logic Audio, and I also use online DAWs. I heavily used ampedstudio during the covid lock down with remote friends... Then we roughly recorded / mixed some song projects, then I polished the final version by re-importing the tracks in LOGIC, but this was really for fine tuning things... AmpedStudio and soundtrap (I did not try bandlab) are very capable online DAWS.
I have FLStudio mobile and some other mobile DAW on my iphone and ipad. And to be honest, I never use them, other than as a tapping BPM counter. Do people actually feel productive tapping this stuff in on an iPad?
Shoddy support for platforms other than Windows, not to mention VSTs going out of support by the developers and then unusable when something changes (e.g. Apple dropping support for 32-bit x86 years ago).
WASM is at least a common denominator supported everywhere... basically Java just better.
There's entire ecosystems of plugins out there. Yes they can be reimplemented but if the authors use the same quick algorithms as everyone else it's going to sound plastic-y and dull. IMO plugin dev is one of those things where every hour spent makes a cumulative difference in output quality.
WASM may be great, but unless they can run as their own binary in their own windows you're going to have browser overhead for each window, nevermind those of us that spread our DAWs out across multiple screens.
I use Audacity like a DAW. Please clarify:
"Audacity is a free and open-source digital audio editor" [0]
"A digital audio workstation (DAW) is an electronic device or application software used for recording, editing and producing audio files." [1]
You can use Audacity to record, edit and produce audio files.
* no real time effects playback
* it doesn’t support VSTi’s (long standard and expected)
* no sequences
* can’t use MIDI controllers
It’s a fantastic platform for recording audio and post-processing, it is a terrible music production program, which even the most basic DAW’s can handle.
To make a video comparison, it’d an like an NLE that can’t sync audio/multi cam, has an unintuitive and semi-bloated UI, doesn’t support captions, and can’t support multiple timelines under one project.
Same reason I like Squadcast and other browser-based podcast recording software - works on (virtually) every machine, no one needs to download anything, cloud storage baked into it, easy for my other producers/colleagues to hop on and check things out, etc.
Quite frankly, even native performance is often not enough.
That said, I can see it being relevant for learning audio, synthesis and how signal processing works. And of course, just for fun!
Source: Worked with DAWs for a decade. Also currently writing a paper on the role of native performance.
Audio DSP is doing a lot of math. CPUs are good at it, sure, but modern synths and effects are legitimately pushing up against how much math a CPU core can evaluate in the few milliseconds you have to render (in the worst case, low latency realtime rendering time is actually dominated not by how much DSP you can do, but how long it takes to move audio from userland to kernel and out to the hardware and back).
Some of the DSP algorithms are really hard to optimize with SIMD, in fact most of the common audio DSP operations can't be trivially converted to SIMD forms (and when they are, they aren't N times faster for N more lanes). Filters are especially tricky because converting the math from one form to another changes the topology of the signal flow, which is only equivalent in the steady-state of non-linear and time-invariant filters. DAWs are using non-linear time variant filters that are being modulated in realtime, so your super fast SIMD optimized biquads might not sound as good as the converted SVF that can't be trivially optimized (there are tricks, but it's a game of tradeoffs).
And there's the other aspect of the scene that there's just a lot of bad or naive code out there. There is a lot of know-how floating around, but a lot of tools are designed by folks without it to begin with. That's a good thing because it makes a lot of interesting and cool tools, but it also means that institutional knowledge is kind of locked away. It doesn't help that some of the largest examples for newcomers (JUCE's DSP module, RAFX/Aspik with the accompanying text), as well as classic (and new!) textbooks teach people to do things in the least performant way possible, and those algorithms make it into production.
The synth itself. Samplers, hardware emulations, and effects can eat a lot of memory and CPU, to say nothing of a monster 100+ voice synth patch (very easy to achieve with unison, used in supersaw-type sounds)
> What does freezing tracks mean and why is it so expensive?
Freezing tracks means recording the output of that track to a WAV and using that output as a stand-in for the real thing. Freezing tracks isn't expensive, it's what you use when another plug-in is too expensive and you want to reduce your CPU load.
https://cardinal.kx.studio - web version of the VCV Rack wrapper Cardinal