I hear you ask – we already have four methods, so why do we need two more? New and smarter normalization methods have been driven mostly because of the loudness race, a symptom where audio content providers master audio (music, commercials etc.) to be louder than the other guy’s audio. The phenomenon is known as a Loudness War. You can experience loudness war first-hand – grab a CD released in say early 80s (or older) and play a song from that CD back-to-back with a song released recently. You should immediately notice the “younger” material is noticeably louder. That is a result of heavy dynamic compression then normalizing the newer song, a practice embraced by music industry since the mid 90s or so. You can easily tell the difference also by looking at the waveform for both songs; while for the older song you will see nice waveform with its ups and downs, the new material will most likely look like a solid rectangle with hardly any visible waveform (let alone ups and downs) – until you zoom way in into the song.
The new normalization methods we now provide deal with this “issue” as the algorithm used calculates perceived loudness (rather than peaks-based loudness), i.e. factor in the way the human ear and the brain perceive the audio, regardless how dynamically compressed the material actually is. In other words, the algorithm adjusts the volume for you in a similar way you would adjust the volume manually by a hand, had you had the two (old and new) songs played back to back. Similar technology has been around for years in consumer electronics (commonly called Replay Gain), and the EBU R128 / Loudness is the flavor of the same for the broadcast industry. The results are impressively good.
Here’s how a segue of the two songs looks using our best method until now, Root Mean Square (you can clearly see the song in the first track is heavily compressed to make it sound as loud as possible):
And here’s the same segue using Loudness (Gated):
As you can see the switch to Loudness (Gated) had two effects:
- Both songs are quieter (due to a lower target dB value for Loudness)
- The volume of the first song was reduced substantially more than the volume of the second song (that is the result of the algorithm’s work, as it compensates for a much higher perceived loudness of the first song).
Just in case you were wondering, here’s how the audio would look like without any normalization applied (= raw audio):
Quite a difference!
How to make this work?
Normalization methods are configured in Station Configuration | Normalization. Enabling the new method here will however NOT make it work for existing assets; since the new algorithms ship with Zetta 2.9 or better, Library assets imported before 2.9 do not have the normalization information available for the new methods; they will play ok but not normalized. So, before enabling the new method in Station Configuration, you will have to run Full Analysis on all existing assets:
- Open the Library
- Navigate to All Audio tab and pick default station (we most likely want to do this for all asset types across all stations)
- Open Audio Utility, pick Full Analysis and hit [Go!], then just… wait
- If you add columns for the new methods to Library – Loudness (EBU R128) and Loudness (Gated) – you should now see these columns being populated by values as the Full Analysis runs.
The good thing is that we store normalization values for all methods on the asset, meaning you do NOT need to reanalyze the audio if you change the normalization method in the Station Config. As said this ‘Full Analysis’ only needs to be performed for assets that have been imported to Zetta prior to 2.9 upgrade.
One other change we made along with this is the behavior of the Normalize override for Target dB on the asset metadata. The override is now also saved per current normalization method, in addition to per asset and station. So if you had an override applied for the Root Mean Square method and you switch to Loudness, the override will go away (as the Target dB override really only makes sense for the algorithm it was initially set for). We don’t wipe out the override, we only allow the user to set the override individually per method as well.
Loudness (Gated) is our new preferred normalization method going forward.