Measure Loudness in LUFS

Hello,

I would like to post here a macro Loudness Measurement. It measures loudness in LUFS. This was developed thanks to the great help from Steve.
Loudness Measurement.txt (953 Bytes)
History:

  • The concept was originally posted on the Nyquist plugins forum: Measure Loudness in LUFS
  • It was necessary to convert the concept into macro, so it can run two scripts in row. If used as a plugin, it would be still necessary to have one macro that runs the plugin.

Some clarifications to the code:

(cond ((< (linear-to-db pkA1) -30)
(AUD-DO “Amplify:Ratio=31.622776”)))


This part is a small trick. It allows to measure LUFS below -60 LUFS. If you remove that piece of code, you will not be able to measure anything that has value below -60 LUFS. This limitation is part of build-in plugin Loudness Normalization.
* ```text
(AUD-DO \"LoudnessNormalization:LUFSLevel=-35...
(setf lufs (- (- original-peak new-peak) 35))

Maybe you ask why not to normalize to 0 LUFS, but to -35 LUFS??. It is true that 0 LUFS also works. But, only for 32-bit… If someone would use 16-bit or 24-bit, the audio will be heavily clipped at zero level and the measured loudness will have the same value as the peak value. So again this is a simple trick to avoid this. I selected -35 LUFS as a safe level for a standard voice recording, but obviously there can be some very extreme cases when the loudness will be not absolutely precise. This can happened if the recording is extremely low volume but there are some short parts that are extremely loud.

I hope that someone finds this useful.

I’ve just tested the following way:

  1. Generate 30 seconds Brownian noise (mono)
  2. Apply “Loudness Normalization” with default settings (-23 LUFS)
  3. Apply the macro “Loudness Measurement”

Result:

Loudness = > -26.0103 LUFS
Peak = -9.43288 dB

Yes, this is a dilemma for me… I do not use Loudness Measurement with the default settings. It means that I always disable Treat mono as dual mono.
Why? A simple user story goes like this: “For the same piece of audio, I want to see always the same LUFS value, no matter which measurement tool I would use.”
With enabled option Treat mono as dual mono, I do not get the same loudness value. I have compared with multiple measurement tools. For example, if I measure with Insight directly in the Audacity, it looks like this:
Audacity Normalize vs. Insight.png
But if I disable dual mono option, then my measured value is the same, no matter what tool I use:
Audacity Normalize vs. Insight OK.png
I really do not want to say this is good and this is not, I understand that there must be a good reason why the dual mono option is recommended in Audacity. But what can I do, if I want to provide to the users a uniform experience if they would compare with other loudness measurement tools?

Please, I am still learning and there is a lot of stuff that I still do not understand, so I am open to any new knowledge and I appreciate any help to make the tool that would be helpful for other users.

There is. It’s because it is correct :slight_smile:
Turning it off is provided as an option only so that it is compatible with the (many) LUFS meters that handle mono incorrectly.

The whole point of LUFS measurements is to represent “subjective loudness” rather than just “amplitude”. When you play mono audio through a stereo system, the same sound plays through both speakers. If you take a pair of wire cutters and cut the cable to one of the speakers, then you will get half the sound (3 LU lower).

Unfortunately, the official EBU specification (https://tech.ebu.ch/docs/tech/tech3341.pdf) fails to mention mono at all, so it’s unlikely that this issue will be resolved any time soon.

Perhaps as a workaround, your output could show both options when analyzing a mono track?

What would you suggest to say in the message, so it is clear for everybody which value is what? I am not sure if all users understand “dual-mono”.

BTW, thank you for explanation. And I am also sorry that there is this confusion…

Tricky. Perhaps something like:

“As played through 1 speaker: xx LUFS”
“As played through 2 speakera: yy LUFS”

@jozefh

Please be aware that when using VST/AU/LADSPA plugins in Audacity, there is an error, has been present for many years
and is still present.

The error is that the audio levels sent to the plugin from Audacity are wrong, they are too high by up to 6dB, and it varies.
This means that any plugin that measures Peak, RMS, LUFS, will report the wrong values.

Also note that this error does not affect built-in effects such as Nyquist ones and the built-in Normalize effect.

I wrote about it here:

Others have reported it too:

The problem/error is present on Windows, Mac and Linux (if not using Jackd).
Under Linux, if the plugin is applied in the Jackd chain (i.e. on the main output of Audacity output, then it’s fine).

Thank you Paul, this is good to know!

Just for the sake of paranoia, I have checked again some audio samples. It goes like:

  • I create 10 mins brownian noise. (or I take any other sample recording)
  • Normalize to -23 LUFS (not as dual mono).
  • Measure with my plugin inside AVV and result is -23 LUFS.
  • Export as WAV mono file.
  • Import into iZotope RX Advanced. Loudness = -23 LUFS
  • Import into Pro Tools. Measure with Insight = -23 LUFS
  • Measuring with Pro Tools Pro Limiter Loudness Analyzer = -23 LUFS

I have also tried some other tools to measure loudness, but always I get the same result.

So it seems that my Nyquist plugin works as expected.

There is an update. Because it is now Nyquist plugin, it is posted on a different forum: click

For the best performance, I recommend to continue to use the macro version.
If you want to study ITU-R BS.1770-4 algorithm translated to Nyquist language or you want to implement lufs measurement into your own Nyquist plugin, see the code of the my plugin.