Auto-adjustment of headroom to avoid clipping

As per title, it would be great to have an auto-adjustable headroom that automatically set the volume reduction just 0.1db to avoid the clipping.
So we are not forced to use headroom feature.
I use a convolution filter that it’s confirmed to be set to zero as max gain and I still see clippings via the indicator despite I have -3db of headroom adjustment…

Not sure how Roon is going to know it’s going to clip especially for Streaming services which it can’t read ahead. If it could it would add significant amount of extra processing that could prove more detrimental to sq and performance than what its trying to solve. You don’t want dynamically adjusting headroom during a song either it could go horribly wrong . DSP is unique for each user and settings should be so also with manual adjustments to each use case. I would set it lower than 3db if it’s clipping not auto adjustment of any kind.

1 Like

Not really a 100% solution to all possible situations but HQplayer used in Roon as an Audio device should be able to achieve this thanks to its automatic soft-knee limiter.

Have you tried Volume Leveling instead of a static Headroom value? I recommend starting at the least aggressive -14LUFS and observe the dynamic headroom adjustment.

I’m not using any streaming service, but the clipping indicator in headroom is working for all playback? No?

I’d like to see a dB value with an indicator, for example 3.7dB over. If I then apply a headroom of -3.8 dB I’d get no clipping (on that track)
It would be nice if the ‘over’ value was written negatively to headroom by Roon, but I think I would still prefer the manual way we have now, only with a dB display showing clipping so I’d know the exact value.

Yes it works across all sources but you cant prereqf them to work out the headroom to apply it dynamically which is what the op is asking for. The thing is with your methodology it still might clip for some other tracks. I use DSP on one endpoint permanently as I am monoisng the output as its not a stereo speaker. I had to reduce headroom several times, way more than I was expecting to cover all eventualities. It was fine for a while then I got a bunch of tracks that clipped had to go to -5db to cover those and then it’s been fine for everything since until the next one. I think it’s a bit of trial and error there is no hard and fast rulesm I do think the idea of showing the peaks would be a good idea and get you started in the right direction.

I am using now the volume leveling with -18LUFS and it seems fine…I didn’t spot any clipping, so far.
I still don’t get why I have to lower the volume if the maximum gain of my convolution filter is confirmed to be 0.
Is it really some clipping going on or it’s a Roon bug?
Apparently if I set volume adjustment at -14LUFS my testing track (Tool - Chocolate Chip Trip) is showing some clippings despite the volume is lowered by -2.8db. How come this track shows clipping if I use only the convolution filter with max zero gain?

I suggest you read this article, although it’s for Dirac same principles apply.

This might depend on how the maths is done and in what order.

Even if all the samples passed to the next process are less than 0dBFS, intersample clipping can occur if upsampling is used in reconstruction of the waveform.

And doubtless I’d have explained that better if I understood the maths better…

The forum had a crash so this may come a bit late…

JRiver has an automated gain reduction related to clipping. The reduction would stay there and not change unless a different track required more headroom. The only problem with this is that loudness can suddenly change when you play a track, but in the end you’d have no clipping on any track.
When I used Brutefir some years ago, ‘overs’ where written to log so it was easy to adjust gain.

That’s something I would not tolerate. Lowering the overall headroom is a much better way and set it to a safe level , you can then bump up the volume to counter the overall reduction without harm to anything it input trim for line level inputs.

Me neither. As I said I’d prefer to do manual adjustment based on info from the clipping logic within Roon.

This feature exists in the free Equalizer APO/Peace software and works like a charm for me. Why wouldn’t it be possible to implement it in Roon?

I understand that there are nuanced use cases for which it wouldn’t work, but I believe many folks with a headphone setup have just enough headroom in the amp stage to compensate for overcorrections due to a specific track that causes clipping. And then, if you aren’t going to play that track again, you should be able to dial back the preferred gain while keeping the auto correction on, like you can in EqAPO.

I think it would be a neat feature for those of us preferring the ‘set it and forget it’ approach :wink:

Would love to see this implemented.