I’ve been playing with Roon’s upsampling and I’ve noticed that when disabling headroom and attenuating signal using Procedural EQ → Volume, I get different (crisper?) sound. Technically when using Procedural EQ instead of headroom, I attenuate the volume after the upsampling, while headroom attenuates before upsampling. Yes, it’s heavier to attenuate the signal at later stage, but that’s a different topic. In understand the reasoning for doing volume attenuation before sample rate conversion from CPU efficiency point of view, but it’s a different matter.
A small technical detail that came to my head was that by disabling headroom upsampling uses the original samples exactly as they were when converted to 64bit, while headroom attenuation can introduce some rounding errors. The more accurate values we use as a starting point for upsampling, the more accurate intermediary samples we get as an output.
But that’s all just context. My actual question is, can sample rate conversion cause clipping if I have:
Headroom disabled
Sample rate conversion enabled
Procedural EQ with for example -4db adjustment
Assume no other DSP.
Reasoning why it should be ok: before sample rate conversion Roon converts everything into 64bit float which supports positive values. Positive intersampleovers shouldn’t be a problem as long as we attenuate before we dither into 16-32bit for the DAC.
Reasoning why it might cause problems: if the sample rate conversion algorithm has some internal “safety mechanisms” which try to deal with small intersampleovers, my model would trigger those as attenuation would happen too late.
And please let’s not derail the discussion into discussion about audibility as that topic has been covered quite extensively in other threads. I’m merely a technical person and just want to know what the software does, as I want to have holistic understanding about what different things do in my chain.
Mr.Flibble
(Uncle Arnie fries them alive with his hex vision)
2
Yes, clipping could occur. Some mastering processes can introduce intersample overs, where the signal briefly exceeds the allowed range between samples. Upsampling can amplify these overs, potentially leading to clipping.
The -4db adjustment might take care of this, but may not in some cases.
Try enabling headroom but set to ‘0’ and set the clipping indicator to ‘on’. Play something with your sample rate conversion and PEQ DSP active.
Thanks for the response. Yes, oversampling can introduce intersampleovers. I’m interested in if it causes problems if I attenuate after the oversampling instead of before it, ie. if Roon’s upsampling is designed to handle them with compression or something or to pass them through. 64bit float as such can represent them, so it doesn’t introduce any technical reason for why positive intersampleovers would be a problem at that stage.
For argument’s sake we can assume -6db adjustment to be on the safe side as the question isn’t about that, but if it’s mandatory to use headroom instead of attenuating later due to technicalities regarding to how oversampling (or the pipeline in general) works in Roon.
I’ve tried enabling headroom with 0db and I don’t see clipping, but still. I can also hear a clear difference when enabling/disabling headroom even when using 0db, so I prefer to keep that disabled completely. Even if it doesn’t attenuate, it sounds like enabling it introduces some kind of filter or something.
1 Like
Mr.Flibble
(Uncle Arnie fries them alive with his hex vision)
4
I only hit clipping issues when converting to DSD.
When I upsample from 16/44.1 above and up to 24/192 I don’t recall having an issue with clipping.
That said, I rarely upsample.
You’re not the first to say this. More active DSP could lead to a perceived difference in SQ.
Mandatory, no, no DSP is mandatory. Apply what works for you and sounds preferable to your taste. Clipping as you know is not desirable.
Applying a -4dB in PEQ as you have done and setting this before upsampling may reduce the need of headroom. Maybe set the -4 to -7 giving a -3dB headroom within PEQ.
I forget if the order of DSP via PEQ can be forced before sample rate conversion.
Yes, I definitely want to avoid clipping, but it should be possible for Roon not to clip internally as long as we attenuate before we dither to 24bit (as that can no longer represent positive values). That’s what I’m just wondering, if Roon has been designed this way.
And I want to keep the attenuation after the upsampling as long as the software is designed to handle that without artificial internal clipping as then I don’t touch the original samples before upsampling, giving the reconstruction filter the best possible starting point. And I think I would hear it if things didn’t work as I describe, but just looking for confirmation for this from someone who knows the code.
[[quote=“Marin_Weigel, post:6, topic:296796”]
Roon’s processing always exactly does what it says on the box, no hidden anything.
[/quote]
To me the difference in sound is so obvious that it’s impossible to believe that headroom at 0db would bypass everything and be bit-perfect. That’s why I’m asking it here as in general I’ve believed Roon following that practice religiously, but in this case the difference is in my face. I think I will try to setup some virtual ASIO endpoint or something to record some bitstream with headroom disabled and enabled @ 0db and compare. Headroom enabled kind of softens everything by changing the timing of transients.
Yep I tested Roon with it on/off bit perfect passes at all bit depths. Also adjustments within Roon adding -3dB headroom then another DSP process to volume +3dB again passes bit perfect as long as processing is 32bit to 64bit and back to 32bit.