AudioMass – free, open source, web-based Audio and Waveform editor
audiomass.co
audiomass.co
I am the author! Wow, I can't believe the attention this is getting! Hopefully this proves to be useful as a tool, and not just as a JS demo! :)
The next plans are - redo drawing library to further improve performance! - polish a bit some audio plugins (like the paragraphic EQ) since some parts feel a bit off (the limiter, paragraphic eq for example). - Add some tutorials! Some things might not be straightforward like using Shift + [keys] for shortcuts etc. - Easier recording mode (like the ability to open a new empty audio project) - Multitrack mode, for more channels! - play a bit more with the concept of having different windows that can be in different screens (check out the frequency analyzer under "view")
To answer a few questions, I plan to have a very open license this is just a fun side project for me. but I need to figure out the licenses of some libs I am using first (eg wavesurfer, lzma-wasm) and do proper attribution!
Thanks again!
PS. I wrote this in 2018, and just kept it on my hard disk until recently, so certain features might be slightly different than back then :)
In particular, low latency (like native roundtrip latencies, so <10ms easy, but depending on the OS) no-jitter/real-real-time audio programming is now something that developers can do. Lock-free/wait-free programming and SIMD are coming in the next weeks/months.
Very cool project in any case, I'll use it when I need to quickly do very high zoom on wave forms to debug things for Firefox.
Sooooo?
Not being able to use Midi from FireFox means that for a whole raft of possible applications Chrome is the only option, which is a real pity.
Please, please, pretty please, give web midi a higher priority.
Realtime audio rendering is a soft realtime problem. If the web audio APIs don't have methods for guaranteeing deadlines for rendering audio, it's only possible to build toy audio applications.
I'm aware of things like bandlab and such. They're still toys and too limited for serious work, where the money is.
In addition to just musical instruments, a huge number of different hardware still use midi. I'm personally interested in DJ-world where things like DJ- and light-controllers use midi and therefore are very easily remappable and very hackable (if the sw is built correctly).
I've wanted to build some DJ-related sw myself that would work via browser but the fact that currently only Chrome supports the standard has so far kept me off it. I'd very much like to see Firefox supporting Web midi.
https://www.youtube.com/watch?v=NV6rdmdZnkA
Get in touch if you want to beta test it and let me know if you think it is fast enough on your set up, etc. Hoping to put it on "Show HN" soon. rjbrown at gmail More about it at https://pianop.ly/portfolio/
In an environment that interprets -all- the codes, MIDI's almost unlimited. Hollywood's used it for a long time. It's very undemanding so people could -certainly- mix their music on the (right) browser. And, if people could add javascript routines to it? Ay-yay.
https://www.youtube.com/watch?v=NV6rdmdZnkA
(piano karaoke that overlays and syncs with youtube videos)
I have tried some Web MIDI demos (and online CSound IDE) this way.
Easily, reliably, and quickly playing audio is table stakes for Windows and Mac OS. They've been doing it for years. But instead of improving one or two audio APIs, on Linux it is time for a new audio server that will, but doesn't, solve all of the problems of every predecessor.
I mean, I have currently 5 soundcards on my desktop computer, 1 pro over PCIe, 2 pro over USB, 1 standard HD Audio and 1 output in my screen's HDMI, and I can assure you that even on windows it's definitely not a smooth ride between WASAPI, ASIO, MME, WDMKS... things crash or get stuck routinely, and I sometimes get random loud buzzes or no sound until I reboot. With my band we had tons of issues with a M-Audio card on windows fixating itself on the wrong sampling rate as soon as a desktop music playing was launched (this includes web browsers), entirely preventing playback on Ableton Live for instance.
It's barely better on macOS, e.g. look at that shit: https://github.com/OSSIA/score/issues/778. macOS also sacrifices some low-latency when comparing the same hardware on it versus Linux (with raw ALSA or JACK) and Windows with ASIO.
well, no, the web audio API & stuff is explicitly being sold as something that will be equal in capability to other solutions, so definitely things used for pro audio.
It seems like a relatively contained problem to take multiple streams of PCM audio into a computer, locked to word clock. Then the hard, fiddly aspects of analog design can be left to high-quality outboard converters which speak MADI or whatever.
I say "contained" because I don't want to minimize the difficulty of getting such a design right, but it seems like you only have to get it right once.
Then we don't need a USB driver for each converter! We only need one USB driver, for the digital i/o interface. And we can polish the driver for that one interface until it's actually reliable, instead of relying on the sketchy one-off driver for this year's soon-to-be-obsolete USB audio interface.
ETA: Many such converters (most of them high-end) listed here: https://www.sweetwater.com/c796--AD_DA_Converters
If I'm not mistaken the underlying transport protocol is the same for all of those - you can get a coaxial to XLR to get S/PDIF into an AES port or a coaxial to TOSLink converter to get S/PDIF data into an ADAT port.
You can look into the Madiface XT maybe ? https://www.rme-audio.de/hdspe-madi-fx.html or the other RME products which have enough digital I/O to cover a lot of needs
But the point is that I want open source drivers, and open source hardware! I don't want to depend on the health and the priorities of a commercial entity. I want to be able to inspect the driver software and contribute towards perfecting it!
Compared to, say, GPUs, the needs of multichannel digital audio i/o are modest and not changing very much over time.
Some quick usage of Wikipedia suggest that you are, sadly, mistaken. ADAT lightpipe seems to use a completely different protocol (more capable?), and while S/PDIF and AES/EBU use quite similar protocols, they differ in impedance and max and min voltages, so I'm guessing that directly electrically connecting the two controllers is a bad idea for both the controller and the data.
(Licensing could be a concern though if ADAT lightpipe is proprietary — I'm not clear on that. But then we could just use other open protocols instead.)
Windows probably has the best audio stack of them all (battle tested, easy to use UX). In comparison, JACK/pulse are pretty good as well and people use it professionally. Like most things on Linux, the initial UX is a bit of a pain, but once you get past it you get amazing customization, even more so than Windows.
These are the only abstractions I'm aware of on Linux systems - and they are simply built on top of ALSA which is the kernel's core sound API. Almost all desktop environments simply install PulseAudio, and you never have to worry about sound.
CoreAudio is far and away the most impressive and powerful audio API across the board. It's ridiculous how much you can do with it and the abstractions it provides.
It's also been better, faster, and supported lower latency than Windows up until WASAPI came around - you needed to use ASIO on Windows for years. Even today you can't programmatically change the sample rate of a device on Windows, which means that engines like RtAudio have to do resampling under the hood to support basic functionality that's been in CoreAudio.
The only problem with it is that the documentation has evaporated. Which admittedly is a big one.
New MBP 16". Apparently it's a problem with the T2 security chip and affects almost all external USB 2.0/3.0 audio devices. Just do a google search for audio drop outs and T2. All digital audio goes through the T2 chip which seems to add latency and these drop outs. I think the only solution at the moment is to use a USB-C native device (but I haven't tested this). If you already have substantial hardware like I do, Catalina is basically unusable (and no fix in sight from Apple...).
I understand with brand new machines it's a problem, but buying less-than battle tested hardware/software has always been problematic. If you already have substantial hardware, you probably shouldn't be buying a brand new machine and expecting it to just work after a major OS upgrade.
And I've been burned enough times by OS upgrades that I know to be cautious. I'm not saying the situation is good, just that it's a shitshow everywhere. I got around a dozen emails from my device and software vendors telling me not to use Catalina, so I'm not yearning to go out and buy a new Mac to run my software on and connect my hardware to it. I'll shit on Macs for that, but under the hood, CoreAudio is much more impressive than anything on Windows or Linux.
(Nitpick: Linux has nothing to do with Pulseaudio, it's just the kernel.)
1. An port of Audacity's "Noise Reduction" filter. I have done this once [0] (with some difficulty and no doubt with errors) and I am so tempted to just translate it to JavaScript and put up a PR, but I'm slammed right now.
2. It would be very useful to be able to view the spectrograph as an alternative to the waveform, rather than having it live in a separate "spectrum analyzer" pane. Especially if zooming along the frequency axis were implemented, this would make it much more useful for, well, spectrum analysis.
Thank you for making this. It's impressive in its own right but doubly so as a web application.
[0] https://github.com/robin-labs/robin/blob/master/noisereduce/...
I'm amazed that you still have ideas regarding improvements here, because at least the selection performance is buttery-smooth even on a phone.
Great job, very useful product.
I remember the performance to be decent, but not 60fps-decent.
But aside from that phones usually have relatively infrequent touch updates, which usually results in a single repaint on every such event, so 10FPS or so.
Any particular reason you're not using standard keys for cut/copy/paste/select all etc...?
Some of the most horrible web experiences, occur because websites try to take control of native functions. For example "smooth" scrolling, or highjacking the back button, or trying to abuse the clipboard! Confusing the user, breaking navigation, making the page less accessible and in some cases breaking after X months when browser or OS behavior changes.
What I have now is unfortunately far from "good" and there is improvement and experimentation waiting to happen, but the straight forward approach is not much better either...
Most web major apps do this. Office365, Google Docs/Sheets/Slides. Even Facebook/Slack/Gmail since they re-interpret the text (converting :-) into emoji and or replace with images.
Perhaps I should add support for the control key, but let other combinations were conflicts might arise. Getting good UX is a such fascinating topic.
Also, looking at the page load and see less than 80Kb transferred: this is absolutely beautiful! Amazing work!
"RX 7, The industry standard for audio repair": https://www.izotope.com/en/products/rx.html
- First of all, I am amazed at the suggestions and love this is getting. I have been dog fooding it by using it to quickly edit foley audio from a tascam hand-microphone device, in order to make some cheap sound effects for a game project I am working on. The point is, I thought I was aware of all bugs, and all areas of improvement, and I am humbled to have my mind opened and see how valuable outside perspectives are! It's so easy get tunnel vision and think you know best I guess.
- Secondly... as I said I wrote this in June 2018, and just... kept it... I guess I was afraid of sharing it to the world, perhaps the audio people would get mad at me for making mistakes with the audio api (like the fade in/fade out being linear). Perhaps the javascript people would make fun of me for just using Vanilla JS.
But if this is impressive in 2020, imagine how impressive it would have been back in 2018! So I guess my point is. Share your work! Do not be afraid to put it out there!
- If anyone is interested on how it is built, and how the interface complexities are managed, even though it is just plain old school JS that has the reputation of being notoriously difficult to maintain, I would be happy to make a write-up shortly, or perhaps give a talk on it.
- Third... (hopefully that is ok). If you like AudioMass, and like the way it is built and it performs, perhaps you might enjoy working together with me. We are doing cutting edge computer vision, and well.. some CRUD stuff too! My company is hiring (info in my profile). But please be advised that due to covid-19 things may take longer or may not be fully up to date.
PS. As for license, I will probably choose something like "wtfpl.net". if it can help you learn something, or build something, go ahead! If you noticed, the page doesn't have any tracking (I realy don't know how many visitors came (I also disabled nginx logs)). And of course no ads at all. I 'm just trying to build cool and useful stuff!
Google publishes their internal open source policy[1], i.e., what open source licenses can be used in Google software. I think it is a solid reference for what a good corporate open source policy is. It explains the reasoning, it isn't some crazy enterprise things that bans all open source (I've seen that), and it isn't some free-wheeling startup that allows everything with no scrutiny.
They ban the use of WTFPL code[2], and ban contributions to WTFPL code.
[1] https://opensource.google/docs/thirdparty/licenses/
[2] https://opensource.google/docs/thirdparty/licenses/#wtfpl-no...
To maximize the reach of your program, you would be well-served to select one of top-ten or top-twenty popular FOSS licenses. I could provide a list but any list would be biased; just google it.
I have my opinions about which FOSS license I would select, but I'm going to suppress them because I just want to help you ease into the mainstream.
A decent way to choose would be to look at what community you want to be a part of and see what the predominant license choice is within that community.
Imagine the future interface with flac + svg + you’re already well-performant foundation with audio mass
And performance is fine, but it can be so but soooo much better! Like just by adding sprinkling some wasm or asmjs in the "onaudioprocess" loops, to speed up the buffer traversing loops and escape the dreaded garbage collector!
The ability to preview EQ changes while the audio is playing back is impresssive, although the x-axis scale on the parametric isn't helpful - everything below 1kHz is squashed into the left-most 10% of the plot.
Some small nitpicks are that it's currently quite fiddly to use the compressor without a gain reduction meter, and my usual bugbear with simpler audio editors: that fade-outs are almost never useful unless you can alter the curve.
But the fact that this is working so smoothly in a browser at all, and in Firefox to boot, is really commendable.
How come so many apps get this wrong? This is really basic psychoacoustics, and linear fades sound terrible!
> fade-outs are almost never useful unless you can alter the curve.
I agree, but would like to add that you should be altering a logarithmic curve.
I do have to say, this is a super cool tool and I've definitely bookmarked it. I normally use tools like Audacity to quickly record, trim, and normalize audio tracks so this tool fits my use cases very well. Thanks for sharing!
Comments like this surprise me, but probably because the lightest weight thing I'll spin up for audio work is Reaper.
The idea of anything but online rendering for user controlled DSP wouldn't cross my mind - it always aggravates me when I have to do it (there's a few older tools I use where it's the only way to do things like time/pitch edits).
> everything below 1kHz is squashed into the left-most 10% of the plot
Very specifically you want a semilog plot (use center bin frequency, not edge of the bin to avoid the 0 problem) or if you're really fancy, constant-Q/mel/bark scales. Grid should be Frequency = [(1:9)e(1:3),10e3 20e3], Magnitude = [-96:6:0].
Very helpful if you use an exponential average on the bins for meter ballistics.
> Since Photopea is not fully open-source, this account serves as a place for bug reports and general discussion.
This one one intuitive and natural. I'd have to evaluate how file system handling worked, but just based on the UI and snappiness - I'd use this over Audacity for any quick-n-dirty audio editing tasks. Really cool!
High Performance Web Audio with AudioWorklet in Firefox 76
https://hacks.mozilla.org/2020/05/high-performance-web-audio...
Interestingly, no such issues on desktop - at least not until I add some heavy processing.
The app is super impressive!
edit: this thing https://i.imgur.com/UXqSteO.png
1. record silence
2. copy paste the recording till you achieve the desired length
3. start recording from the beginning
On AudioMass and its performance/snappiness: this feels much more smooth than Audacity on my MBP, so I'll give it a shot soon.
⋆ or: whatever the memory limitations of your PC were
It a shame it's gone tbh, it was a REALLY quick way to just playback an audio file, without all that extra baggage that later playback apps had (iTunes clones).
Edit: another way I like to look at this is that HN itself is a list, and posting a list to a list adds a layer of indirection that mostly never gets traversed.
Think for HN you probably need a quick demo that will attract more of the large number of people who are not necessarily going to use this tool long term. Give people a hook. Also keep trying, because it's pretty random what gets voted up on any one day. I think with some development and innovation this could be a useful tool. You've also not got any contact info which makes it harder for interested people to get in touch if they like your stuff.
I particularly appreciate the ability to preview compression. Compression is probably what I use most when I'm editing audio and having that at my fingertips without loading Audacity or Ableton would be super nice for quick, rough changes.
One thing that I'd really like to see would be a de-essing plugin, or even better a multiband compressor.
Or just click this https://audiomass.co/index-cache.html
I've tested it. Disconnected wifi went to https://audiomass.co and it worked.
What's is out there? My DuckFu is letting me down in this instance.
I'll give AudioMass a spin over the weekend, and like others have said if it could be a standalone Electron-based app that would probably work, and happy to throw a few antipodean dineros at it.
Saw something like that but for synths - https://www.webaudiomodules.org/wamsynths/
There are decades of research, feedback loops and work put into tools such as FruityLoops, Cubase, ProTools etc, and the thought of reimplementing parts of it for web is such a daunting task.
I think you are right, a light DAW would cover 80% of people's needs. And as long as you can export the track as midi and audio bounces, you could always continue it in a native DAW.
I would love to collab if you need UI/UX for this btw? I've worked on audio and DAW stuff for a long time, as well as open source. What's the best way to reach?
If I were to be super critical my only pet peeve has to do with the style of the menu :P The color (dark on light) seems disconnected from the rest of the app design and those big rounded corners gives the app a little bit of a toy-ish look (My point of reference for "pro" is something like Adobe Audition, Presonus StudioOne, Pro Tools, etc... kind of look) But that is just a personal preference (this is the radius I'm talking about https://github.com/pkalogiros/AudioMass/blob/master/src/main...)
But the project look awesome! keep it up!
So everything needs to use lower fidelity settings, or do things like compress WAV files in a lossless way with LZMA since other avenues are too heavy. I am not seeing this becoming something like Audacity or Audition replacement, but a quick tool for modifying audio files on the fly.
I take it you took the approach of using WASM for audio decoders?
I'm noticed my CPU fan at full blast and checked my processes (then Chrome task manager), I had left it open an it was using 80-95% CPU in the background.
Tested again, it seems to be the spectrum analyzer (even after I pause playback, or close the analyzer window).
Kudos to the creator!
I wish there was a cli for this
Being able to label things with markers and different colors though would be fantastic! It's in the plans, once a bit better audio handling of slices (eg cross-fading, mix-dragging etc) is added!
start end label_name
1.02302 2.23193 label_1
You could take it further and have some numeric labeling (audacity doesn't autofill) and that'd be even nicer. This would be super helpful for working with speech processing data. Regardless, keep up the good work!
.wav export would be grand!
Nice job!
My favourite one is how, depending on when, resizing the selection while playing with loop enabled can cause the cursor to escape the selection (!). That was the first one I checked for when I opened this up.