DSP Up-Sampling features in Roon 1.3

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.

Forget it.

Here’s a comparison comparing 24/96 tracks upsampled to DSD 256. I think I pinpointed the issue. Look at the difference in processing speed. The server is probably crapping out when upsampling in custom. The conversion to 64bit float drops the CPU load drastically for some reason. But increases the taps when using convolution. Clients reporting better sound.

Here’s an interesting article on filters if anyone is interested.


Hi @brian

I’ve a lot of SACD ripped to DSD64, upsampling say to DS128 or higher will it shift the noise shaped higher? Does it improve the overall SNR in the audio range? Thanks

I’m not Brian, but I know he’s a busy guy. And as a guy who
makes SDM DAC’s I know the answer. What it does is takes the phase shift of the filter further out of the audible 20-20khz range. It can also lower 2nd order noise caused by downstream gear that’s sensitive to ultrasonic noise.

This plot shows a similar frequency and phase response typical with DSD 64. Note how deep the phase shift goes into the audible band. This can mess up soundstage. Upsampling shifts everything further away, and by the time we get to DSD256, if the DAC has a proper analog filter for the task, no phase shift will be in the audible band.