Loudness normalization. It's everywhere (almost), and yet still leaves many scratching their head, wondering how it will affect their music once it hits the myriad streaming services. Despite a comprehensive recommendation on streaming and network file playback loudness by members of the AES, each streaming service seems to use its own target. Not only that, but they're not all even using the same measurement methods. To cement this obfuscation, there is a general lack of transparency from the services when it comes to measurement methods and target levels, leaving us to make educated guesses on both. A common way to do this is to use BS.1770/R128 (aka, LUFS) measurements, but as of this writing, and to the best of my knowledge, only one streaming service actually bases its normalization on LUFS integrated measurements. This means that while LUFS based targets may provide a reasonable estimate, in most cases they may still be off by a dB or two.

Recently I got to chatting with friend and fellow mastering engineer Sigurdór Guðmundsson, and we found that we had both been having the same basic thought process. We had word from a reliable source that Spotify uses the Replay Gain algorithm, albeit with a modified target, for their normalization. If we could find a way to reliably measure a song's deviation from the Replay Gain target, we should be able to make more accurate predictions about what Spotify would do to that song.

We got to digging, and before long I had found a method to do it with Audacity and a free add-on plug-in. After some experimentation, we found ourselves satisfied that this new method provided a significant improvement in accuracy compared to LUFS measurements, so Sigurdór posted a short blog entry on our method, results, and how you can take these measurements yourself. You can read that here.

Being the tinkerer I am though, I wasn't entirely satisfied. You still had to add 3 dB (actually 2.9 dB, based on my measurements), to the value the ReplayGain.ny plug-in spat out, and by default it was set to normalize, not analyze. As it turns out "Nyquist" plug-ins are reasonably easy to crack open and see the source code for. It was time to play hacker.

After a few evenings of bumbling about, completely breaking the plug-in, and getting marginally acquainted with the relatively arcane LISP language and how it's utilized in the Nyquist framework, I finally got the plug-in to do what I wanted. Now it only analyzes, and automatically adds the 2.9 dB, giving you an easy way to check what Spotify will do to your music to within ±0.5 dB.

You can download the plugin here, and the installation method is the same as is laid out in Sigurdór's blog, linked above.

Hopefully you find this useful! If so, please consider subscribing above so I can let you know about any updates I add to the plugin in the future, or other interesting blog posts.