DSP Up-Sampling features in Roon 1.3

Not sure if it’s the same thing but it looks like that fix is coming (where it doesn’t get converted to PCM):

I’ll try some more and report back

No if you have the DSP volume control enabled, DSD is no longer possible. It also does the volume control at 32 bit rather than 64 bit like Jriver, HQP and Daphile does.

No worries. In the post I linked above, Brian mentioned Auto Volume Leveling and Headroom Management should be happen without converting to PCM and will be fixed.

But I guess DSP volume control is different and must work in PCM (for now anyway)

I have noticed that the upsampling feature in the DSP engine has received an overhaul in 1.3 version 234: now there are 4 filter settings, while there were only 2 before.

Linear Phase and Minimum Phase have both been devided into a Precise and a Smooth version.

What’s the difference? Are there any graphs to give some visual clarification of the workings of each filter?

Of course, I will decide ‘by ear’ which Minimum Phase filter (my favorite so far) sounds best: precise or smooth, but it would be nice to know more specific what does what.

These were already in there prior to 233/234. I’m with you, though, on the desire to learn more about the differences between precise and smooth and also among the different SDM’s. Meanwhile there’s some info here:

(Repeat of @andybob’s link upthread.)

1 Like

Thanks! I did not notice the division into precise and smooth before. There have been several updates since I did a write-up about 1.3, but it wasn’t until 234 that I found out about this.

I was completely happy with Minimal Phase filtering the way it was (turns out it became Precise, Minimal Phase an unknown number of versions ago) but I’m a sucker for ‘smooth’ no matter what you throw it at as an adjective :stuck_out_tongue_winking_eye:

We’ll see (or better: hear) what happens when I change the setting.

In general I’m more of a precise guy, but with Roon’s filters, I find I have a preference for smooth with both minimum and linear phase.

1 Like

It’s strange how my expectations of which filter I would like don’t match my ears. With Roon I prefer Smooth (meaning the cutoff at 22kHz is a gentler slope, enabling a shorter filter in the time domain and a cleaner transient with less pre and post ringing) but my new favourite filter combination is HQP ext at DSD 256 (DSD7 modulator). This is a long filter, a la Chord, with lots of taps and a fair bit of both pre and post ringing, but a very steep precise brick wall in the frequency domain at 22kHz. I find the soundstage magnificent and the ringing euphonious. But I would never have picked that combination as likely to be my favourite.

Can anyone tell me what kind of digital filter is used when you do PCM up-sampling? Not to be confused with PCM to DSD transcoding.

Check this for information over this filters used (both PCM and DSD): https://kb.roonlabs.com/DSP_Engine:_Sample_Rate_Conversion.

As for the new ‘precise’ vs. ‘smooth’ filters – the release notes tell this:

New SRC filter choices: Smooth vs Precise filters. The Precise filters are steeper than the old ones, but designed around similar goals. The Smooth filters are ultra-slow-roll-off filters optimized for a very clean transient response. “Precise, Minimum Phase” is the new default.


Upsampling consists of stuffing the original sample with zeros and then applying a low pass interpolation filter to eliminate an alias (in frequency domain) or smooth discontinuities (in time domain). There is some theory here and a much more fun interactive demonstration here.

1 Like

Thanks @andybob, am I correct to say all these filters are meant for PCM when one do up-sampling, whether it is PCM up-sampling or converting PCM to DSD on the fly?

I know DSD itself has two filters, one that roll off at 50kHz and the other 100kHz, this is based on scarlet book of SACD standard. My SACD player has switchable output filters when playing back SACD.


I notice any x48 pcm rates being converted to DSD128 brings my machine to it’s knees and eventually causes a transport error.

44.1, 88.2, etc are all fine and go to DSD128 with 6x processing speed.
48,96, etc all show a load of < .6x processing when going to DSD128.

I’m on an i7-2600 VM host with 4 cores dedicated to my VM, I could move to a dedicated 3770 but I’m concerned that might still not be enough to handle x48 pcm rates. It seems to be rather computationally heavy?

And the weird part is it actually isn’t using much CPU at all now that I check, maybe 29% and no single core spiking. Just the Roon load meter is saying <.6x.

Ok, figured it out, it was because of the “Enable Native DSD Processing” option being on. Which I didn’t need if I’m not converting DSD64 up to DSD128.

Maybe due to the VM? I have “Enable Native DSD Processing” on & the Roon meter stays at 2.9-3.1 no matter what PCM rate I throw at it. DSD64 too, for that matter. I’m converting everything to DSD128 like you are. This is on a lowly AMD A10-7700K machine running Win7pro.

Maybe. The other variable in my configuration is a sMS-200 connected to my DAC.

Update: it seems to have fixed itself. I messed around with some network settings and rebooted my sMS-200. Weird!

All’s well that ends well…

Does anyone know why it doesn’t do the conversion to 64 bit float when the upsampling to DSD is set on custom? It also skips the upsample of the PCM to 352.8 when convolution is used in custom. Here’s the signal path difference.