Measuring RMS: Problem with Noise Gate on 16-bit track

Hello,

after few hours reading, testing, etc. I give up and I ask for help. Here is the problem:

My ultimate goal is to measure RMS of selected track, that format is 16-bit. Simple.
The problem is that between clips there is (almost) silent, sometimes 10 seconds of (almost) silence. This (almost) silence can be between -90dB to -50dB. It is problem because the RMS value is heavy influenced by those silent part. I can delete them manually one by one, but I need to create workflow for hundreds of hours of recording, so manually deleting is no way to go. I do not want to truncate silence - It is important to keep the timing.
Of course, there is Noise Gate which can be used to create between clips absolute zero silence. And then there is Detach at Silences feature. Excellent! But when I apply Noise Gate on the selected track, nothing happens. The silent parts have measured volume (apporx. -84 RMS). But if I change track’s bit depth from 16 bit to 32 bit, then Noise Gate works - it create absolute silence. Then I hit Ctrl+Alt+J (Detach at Silences), set back 16-bit depth on that track and then I can measure loudness with Contrast Analysis or any other RMS tool.

This is the workflow, and now I have to create a macro for that. Everything would be fine, but I do not see an option to change track’s bit depth (not project default settings).

So my questions are:
Is there any way to measure RMS with option to ignore silent parts below some threshold? This would be the best option.
If there is not, is there way to turn (almost) silent parts into absolute silence on 16-bit tracks?
If there is not, is there way to switch track’s bit depth by macro?

Thank you.

Why is the track 16-bit? Audacity’s default is 32-bit float. If the track is 32-bit float, then you won’t have the problem.

The root of the problem is that Audacity works internally in 32-bit, so when you process a 16-bit track, the data is converted from 16-bit to 32-bit, processed, then converted back to 16-bit. It is that last conversion that is the problem. 32-bit float format cannot be converted exactly to 16-bit.

Thank you for explanation. The problem is that I cannot influence this. The track has to be 16-bit. Also this is the our default settings in preferences.
One of the reason why it was decided to use 16-bit is the size of projects. It is important to keep them as small as possible. Also 16-bit is enough for our purpose. As there are already hundreds of projects recorded in 16-bit and many more coming, it is not possible to change this now.

Despite of that, is there any help for me please?

16-bit clearly isn’t enough for your purpose, because you are complaining that with 16-bit, the RMS measurement is not sufficiently accurate.
If the tracks were 32-bit, then you wouldn’t be having the problem.

It is problem because the RMS value is heavy influenced by those silent part.

I’m pretty sure the RMS algorithm used by [u]ACX Check[/u] ignores silent (or very quiet parts).

I’m not sure what bit depth has to do with this, but the conversion from 16-bits to 32-bit floating point and back is lossless. Export as 16-bit and you’re back to where you started. (Set [u]dither[/u] “None” if you want mathematical perfection.0

Except, you can’t do RMS calculations with 16-bit integers because it involves squaring & summation and the numbers get way-way bigger than you can “count to” with 16-bits.

Thank you for reply.

This is one of the plugins that I have tested to measure RMS. Sorry to say, the result is influenced by silent parts.

Only in 32-bit I am able to create absolute silence (zero), then I remove those parts and then I switch back to the 16-bit. Creating absolute silence is not possible in 16-bit (at least not with Noise Gate). this is what I observe by testing and explanation from steve makes sense to me.

Meantime, I did macro that actually measures RMS without silent parts, but it is little bit “ugly” and I am not completely happy with that. It temporary truncates silence, measures and undoes truncating. But I have to enable EditClipCanMove so it measures all selection. As I do not know how to store value of preference, I cannot call it at the end of macro. So every time I run macro, option EditClipCanMove will be disabled. But this is the best what I can achieve with my limited knowledge…

Well, it seems you are right. For measuring RMS it would be better to have 32-bit. Before recording projects, I did not know that it is going to be so difficult to measure RMS.
Audio quality in 16-bit is sufficient, also the size of project is just half of possible 32-bit recordings.

I am interested in answers to my questions from the first post.
Thank you very much.

If Audacity Preferences are set to “32-bit float” (default), then “Mix and Render” will convert the track to 32-bit float.

Audacity adds a dither signal to WAV output so the conversion from 32-floating to 16-bit fixed errors don’t cause problems. That conversion is never going to hit the theoretical -96dB noise floor (“zero” noise) no matter what tools you use.

You can turn dither off in Preferences > Quality.

32-bit floating only happens inside Audacity. The outside world never sees that unless you go to special effort to Export the show at 32-floating. It is possible, but not normal.

If you’re not paying attention, you put 16-bit in and get 16-bit out and never know there’s anything magic happening in the middle.

Stopping dither may do what you want.

Koz

Thank you very much, this is helpful tip!

My ultimate goal is to measure RMS of selected track

Probably not. The ultimate goal is a product or service. Before we get too deep into the weeds dissecting each dB, it would be good to know what that product or service is.

Language Learning? Ride or Gaming production? AI Environment development?

Koz

This is amazing!! I disable dither and now Noise Gate works properly on 16-bit track. Yay!
Thanks to this advice, I can create nice macro that will measure RMS without counting those silent parts.

I really appreciate your time and sharing your knowledge with us!

All the best :slight_smile:


PS: to the type of production - I handle only standard voice recordings. Nothing special. But I have to keep timing of clips as it is.

Please note that even with dither turned off, using 16-bit tracks will needlessly reduce the sound quality. Turning dither off is NOT recommended when processing audio. The recommended (professional) way would be to convert the audio to 32-bit float initially, then stay in 32-bit float format until the end, then convert to 16-bit on export.

This isn’t for a professional service is it, so why do you have “hundreds of projects”?