If you have used mix:analog before, chances are you've made an internal list of things that worked really well and some that... well... honestly, could have been better. We think there's a good chance that meters and metering in general was one of them. They worked, then jerked a bit, stalled, worked for another three seconds, disappeared, ... um, yeah. I can assure you, that was not as planned.
We are well aware how important UI feedback is to the user. People go on about listening with your ears and not looking at meters all the time, but then again, you can tell pretty confidently if the low end of your mix is in good health just by looking at how the VCA Compressor's meter reacts to kick, snare and bass transients.
It's not "cheating" or not using your ears, it's about using all the available tools to get the best sound possible! And if meters were there just for show and all the pros were only using their ears, there probably would not be loads of them in every high-end console and on pretty much every compressor ever made. So it's a pretty important aspect of an audio processing app to get right.
As you might expect from the narrative, things get complicated now. All in all, it would have worked flawlessly long ago if it was easy.
So, how are meters supposed to work?
Making a real-time system that runs over the internet is not an easy job on it's own, but making the browser side of the system perform perfectly in sync is only one half of it! First, there's converter I/O meters. These are pretty simple, as the data is easily accessible in the audio engine as raw audio samples. Measure the output buffers as they are sent to the audio interface, measure the buffers as they come back from the interface to the driver, time-stamp them, send them, done. What about GR meters? Well, that's the hard part.
What you see displayed as gain reduction readout on the unit's GUI is an actual side-chain voltage reading from the microcomputer that's running the automation. That reading has to be updated at least 30 times per second, while not conflicting with the automation setting procedures on a single-core CPU.
We literally had to rewrite the device-side firmware three times to get it right and stop the occasional crashing and freezing. Finally, all these readouts have to be time-stamped and synced with the audio before sending them over the internet, embedded in the audio stream.
And of course, there were a few bugs at time-scaling everything in regard to the sample rate of the stream. We looked under the wardrobe, under the table and in all the corners and squashed them, mercilessly.
Last, but not least, we took another look at the upper-left side monitor output meters' algorithms. They now correctly diplay sample peak and RMS values, the latter with VU timing ballistics and LUFS option comming soon.
... and the result?
Take a look at this video! Those meters now actually show you what you're hearing! Improved frame-rate performance and greatly reduced measurement jitter now shows all the nuances of compressors' timing settings and allows for fine-tuning the threshold to the magic "just touching the needle" level. Give it a test drive and enjoy the enhanced worklow!