Yes. I’ve wanted something like this for a while. I’ve always wondered why there isn’t version control for DAWs. So many times I’ve spent hours editing a track and accidentally saved it without specifying a unique file name. Only to open it later and wish I could go back to before the changes that fucked it up.
The good version controls used for code & text are line-oriented; most DAW session file formats are semantically scoped, and so the VC tools won't work well.
Most DAWs allow you to "snapshot" a session at any time, and return to it as you want to. Certainly Ardour does that.
Could be pretty easy to do with atproto accounts. Users could save/share their music as a tangled.sh repo and other people could contribute or fork as they please. A nice UI could hide all of that and make it fun to collaborate on music.
It seems like the inspiration went from Audacity, and with great changes to the design and feel of calmness and solidity!
I've tried loading a file with XM format, yet the current state of the import logic stated "Unsupported". Is there any chance you'll support the format?
For example, the following artwork is radiating charmingly in VLC:
- https://cable.ayra.ch/modplayer/mods/!Others/DYNAMITE_-_Winamp_5.0RC8_crk.xm
And, thank you! very much for the experiments, effort, miracles... art you do...
Thank you :) I 'll look into it, I am a little cautious of bloating up the filesize (right now it's at 98kb of js and 10kb of css), but if I can make something work efficiently I 'll give it a go.
On an unrelated note, I'm a little surprised there is no good open source web audio tracker (like Renoise but for the web) out there yet...
Yes, it's part of the fun. Original version was 65kb (with just the single editor mode and all the filters, mp3/wav export etc). But then having to add flac codec, tempo estimators and finally the multitrack mode, made it closer to 100.
When I started developing I was a little frustrated with how bloated the web felt back then so I took that direction, it's much better today though and it's no longer an issue, but I still find it fun to impose these constraints and try to work within or around them (there's this fascinating concept of constrained creativity)
I appreciate the attention to efficiency and avoiding bloat. As a frequent audacity user I'm thinking I might end up using this for a lot of simpler tasks.
That said the web offers such great techniques to maintain this. Passive loading of plugins for example could keep things snappy and light and load things when you need them.
If you want the perspective of a prospective long term user: I'd be very comfortable using your app even at tens of megabytes. You could probably keep your initial load pretty light but pull in larger modules as needed. There are certain effects and audio layering I often use in Audacity that would keep me there, but your modern interface and browser access are huge selling points. If your vision includes moving to a bigger editor I guarantee you you'll find a huge base who wouldn't even notice megabytes of code.
All very good points, not much to say I agree with you. With loading plugins on demand it could grow in size without affecting load and experience (and since offline mode is a separate link that would still be fine to be a little larger since it's fetching the app locally).
people use gimp too. and i bet there are more gimp users than audacity.
as for the UI, i don't get it. what's so bad about it? and how is this one better? i looked at both and ardour too. so far audacity is the only one that has a feature to detect silence and label it. it's pretty easy to use too. i use this to detect chapters and create a chapter index for audio books. last one i did this week took only a few minutes, and most of the time was typing the chapter titles into audacity. i could not figure out how to do this in ardour or audiomass
It's the audio track in a channel. A channel is the horizontal strip, a waveform box is a piece of audio somewhere across that strip. You can double click on one to enter single editor mode, or single click to make it active (once it's active you can drag it around, apply effects to it, move it on a different channel etc etc).
There is a little [ + ] button next to CHANNELS in the sidebar, it has no limit but right now so add as many as you like :)
It's using dom to render the multitrack waveform boxes currently so I would assume after a certain point it might start to slow down a bit. In the future might switch it all to be webgpu based to avoid such limits.
I usually use it to edit audio tracks quickly up to 10 minutes long, though I have received nice emails from people who have used for 1hr+ podcasts successfully (though certain heavy operations wouldn't be very fun to use).
For multitrack sessions, there is the ability to export to a .amss file that contains all the settings, markers, tracks etc. For single track edit... it would just crash right now. There is already a feature for caching audio tracks in indexeddb (it's under >File), but honestly it's not a web api I have found to be super reliable. I don't blame the browser developers, because I 'm sure if it was more reliable certain websites would put it to use storing gigabytes of trackers on the user's machine :). For this reason, I haven't made it auto-save the session automatically yet, trying to be a good citizen on the user's computer, maybe that will change in the future if there's a strong need for it.
Also, right now there is no backend, once it loads there are no more requests made to the server, so it's bound to frontend limitations. This is by design, I want it to be an app that respects users, doesn't upload or leak information, no ads, etc, even if it means getting a small hit in functionality in other areas.
I think of it like photopea/pixlr are to photoshop. Quick and easy to use, get you at 90% of the way. If somebody wants to do a serious operation, then by all means go for a paid desktop pro-daw solution :)
looks at code, sees safety closures, function assignments, sequential var declaration
Ahh I see you are one of the old ways, of the lost knowledge :)
I am very nostalgic for this style of development, even though I do not miss it in a team setting at all!
Super cool app you’ve made!
So want something like this but where the tracks are in the cloud.
I want to "check out" someone's drum loop and add a guitar riff. Check it into a branch.
Someone else checks out the drum+guitar, adds a bass line. Checks in.
"Jamming" with other people is one of the most fun things. To the degree that you can "get close" on the web…
RiffHub, anyone?
I think that's what Soloist[1] is trying to do (unaffiliated, but I've met the founder)
[1]: https://www.soloistapp.com/
That doesn’t look similar at all. That looks like an app for making loops on your phone.
Yes. I’ve wanted something like this for a while. I’ve always wondered why there isn’t version control for DAWs. So many times I’ve spent hours editing a track and accidentally saved it without specifying a unique file name. Only to open it later and wish I could go back to before the changes that fucked it up.
The good version controls used for code & text are line-oriented; most DAW session file formats are semantically scoped, and so the VC tools won't work well.
Most DAWs allow you to "snapshot" a session at any time, and return to it as you want to. Certainly Ardour does that.
Bandlab Studio, maybe? Never used it, but might be what you're looking for. There's a web version and a mobile app.
https://www.bandlab.com/creation-features
Could be pretty easy to do with atproto accounts. Users could save/share their music as a tangled.sh repo and other people could contribute or fork as they please. A nice UI could hide all of that and make it fun to collaborate on music.
Too bad I'm lazy. RiffHub looks neat.
Significant props for accepting .flac files out of the bat. Incredible work.
Awesome tool. Is this the a new version? I used this few weeks ago and it looked a bit different.
This is a very impressive undertaking. Great job!!!
Thank you :) I 'll look into it, I am a little cautious of bloating up the filesize (right now it's at 98kb of js and 10kb of css), but if I can make something work efficiently I 'll give it a go.
On an unrelated note, I'm a little surprised there is no good open source web audio tracker (like Renoise but for the web) out there yet...
For that much functionality 98kb is hardly bloated at all by modern standards, impressively slight in fact, it could probably cope with some more.
Unless part of your fun is keeping it so very trim, of course!
Yes, it's part of the fun. Original version was 65kb (with just the single editor mode and all the filters, mp3/wav export etc). But then having to add flac codec, tempo estimators and finally the multitrack mode, made it closer to 100.
When I started developing I was a little frustrated with how bloated the web felt back then so I took that direction, it's much better today though and it's no longer an issue, but I still find it fun to impose these constraints and try to work within or around them (there's this fascinating concept of constrained creativity)
I appreciate the attention to efficiency and avoiding bloat. As a frequent audacity user I'm thinking I might end up using this for a lot of simpler tasks.
That said the web offers such great techniques to maintain this. Passive loading of plugins for example could keep things snappy and light and load things when you need them.
If you want the perspective of a prospective long term user: I'd be very comfortable using your app even at tens of megabytes. You could probably keep your initial load pretty light but pull in larger modules as needed. There are certain effects and audio layering I often use in Audacity that would keep me there, but your modern interface and browser access are huge selling points. If your vision includes moving to a bigger editor I guarantee you you'll find a huge base who wouldn't even notice megabytes of code.
All very good points, not much to say I agree with you. With loading plugins on demand it could grow in size without affecting load and experience (and since offline mode is a separate link that would still be fine to be a little larger since it's fetching the app locally).
This is great. I need to do audio work this coming week and was dreading Audacity.
when have you last tried audacity? it's been getting friendlier
How much work would it be to compile Audacity for the web?
(I'm a bit behind on web technologies nowadays)
Has been done https://wavacity.com/
Agreed but it’s still not a proper DAW and suffers from those limitations. It gets very rickety when you go beyond a basic stereo mix.
Have you tried Ardour? It's like a superset of Audacity.
Try Ocenaudio - I’ve used pretty much every audio editor free and paid for and this is my go to for a free editor.
I also cannot understand why anyone would recommend Audacity.
Ocenaudio is closed source, that may be one of the reasons someone might recommend Audacity over it.
Hehe ditto
I get flak for this, but Audacity is my "proof" that GIMP's name is why people don't use it, not the UI.
Like GIMP, Audacity's UI is awful, but people still use it. :)
people use gimp too. and i bet there are more gimp users than audacity.
as for the UI, i don't get it. what's so bad about it? and how is this one better? i looked at both and ardour too. so far audacity is the only one that has a feature to detect silence and label it. it's pretty easy to use too. i use this to detect chapters and create a chapter index for audio books. last one i did this week took only a few minutes, and most of the time was typing the chapter titles into audacity. i could not figure out how to do this in ardour or audiomass
Getting the 2002 Cool Edit Pro 2.0 vibes!
Cool!!
Very nice. One feature id like to see is import of stem bundles as produced by various tools like suno or stemsplitter
Not sure why you remove the tooltips from deactivated buttons
What's a waveform box and how does one select it?
It's the audio track in a channel. A channel is the horizontal strip, a waveform box is a piece of audio somewhere across that strip. You can double click on one to enter single editor mode, or single click to make it active (once it's active you can drag it around, apply effects to it, move it on a different channel etc etc).
Sorry still working on improving the UX :)
EDIT: There's a short video here - https://x.com/pkalogiros/status/2053492761350046032
Is there midi support and vst support? I know that's asking for a lot =)
Doesn't seem to support midi currently unfortunately. I was hoping for the same.
Looks promisimg. Must try the next days.
How can we add more tracks. is there a limit?
There is a little [ + ] button next to CHANNELS in the sidebar, it has no limit but right now so add as many as you like :)
It's using dom to render the multitrack waveform boxes currently so I would assume after a certain point it might start to slow down a bit. In the future might switch it all to be webgpu based to avoid such limits.
Makes me think of Quatermass ...
this is cool thanks for making it!
what is the theoretical file size / project size limit? what happens when the browser crashes?
I usually use it to edit audio tracks quickly up to 10 minutes long, though I have received nice emails from people who have used for 1hr+ podcasts successfully (though certain heavy operations wouldn't be very fun to use).
For multitrack sessions, there is the ability to export to a .amss file that contains all the settings, markers, tracks etc. For single track edit... it would just crash right now. There is already a feature for caching audio tracks in indexeddb (it's under >File), but honestly it's not a web api I have found to be super reliable. I don't blame the browser developers, because I 'm sure if it was more reliable certain websites would put it to use storing gigabytes of trackers on the user's machine :). For this reason, I haven't made it auto-save the session automatically yet, trying to be a good citizen on the user's computer, maybe that will change in the future if there's a strong need for it.
Also, right now there is no backend, once it loads there are no more requests made to the server, so it's bound to frontend limitations. This is by design, I want it to be an app that respects users, doesn't upload or leak information, no ads, etc, even if it means getting a small hit in functionality in other areas.
I think of it like photopea/pixlr are to photoshop. Quick and easy to use, get you at 90% of the way. If somebody wants to do a serious operation, then by all means go for a paid desktop pro-daw solution :)
edit: reason
looks vibe coded
> https://news.ycombinator.com/item?id=23337091