Roon DSP with HQplayer

Can you use the Roon DSP functions (e.g. the convolution) if you want to use HQplayer as the output to the endpoint?

Can be done but you can also use the convolution directly in HQP itself.

This way HPQ handles all your DSP as a single DSP engine.

I think both Brian and Jussi have recommended doing convolution in the same software as upsampling. Not sure why, I used to convolve in Roon and upsample in HQP and it sounded pretty good. Now I do both in HQP. I don’t think I could pick the difference, but I have a nice warm inner glow.

And this is what we all seek in this thing called life…


1 Like

Another point, which will depend on individual use case.

I don’t know how many people know, but with HQP Embedded (including the USB bootable HQP OS version), you can feed any TOSlink input into HQP with the help of a little miniDSP USBStreamer…

So you can apply convolution (or whatever other DSP) to whatever TOSlink source and you use HQP as the single DSP engine.

For example, I can use the official Tidal or Spotify apps and play to Chromecast Audio and this feeds HQPlayer OS which does all the DSP. This kind of scenario isn’t possible with Roon, until they one day release an input type feature like HQP has…

Sometimes I hookup my Apple Airport express to HQPlayer and discover new music via Apple Music form an iPad.

If I’m using headphones, I have HQPlayer handle my Bauer crossfeed DSP in addition to up-sampling, applied to Spotify/Apple Music/Tidal/whatever.

For a speaker setup, substitute crossfeed for convolution and again apply it to Spotify/Apple Music/whatever.

If all you use is Roon and nothing else, it’s probably no big deal. But if you like the flexibility of different sources (not just RAAT) and want to have a single DSP engine, HQP is great.


Technically Roon could send 64-bit floating point intermediate format to HQPlayer, and HQPlayer has always supported this, but Roon doesn’t…

This would make the split DSP functionality more feasible.

Ordinarily I apply DSP either in Roon or (more typically) in HQP, but not both. Today I tried combining the two. Here’s my signal path:

I seem to be getting better results with this combination than if I only use HQP. I don’t mean that the SQ is better, but now I can use a more demanding HQP modulator and upsample to DSD512 without stuttering. If I disable the Roon DSP with the same signal path, it stutters heavily.

I don’t understand this. I do have the Parallelize Sigma Delta Modulator enabled in Roon.

Looking at your Signal Path, Roon is doing the heavy lifting upsampling to DSD512, i.e. that HQPlayer does not have to upsample anymore.
The only thing HQPlayer is now doing is applyig the filter and modulator.
And as both Roon and HQPlayer most probably will use designated processor(s) , your server benefits of the ‘optimised’ load distribution.

My music server (running Roon Core) is a sonicTransporter i9.
For this system, with some demanding DSP configurations, using Roon DSP + HQP in tandem may be the way to go (even though I’ve seen recommendations to use one or the other.) I don’t know if this combo carries SQ trade-offs, but to my ears it sounds wonderful so far.

It does lot of unnecessary work, you would be better off by dropping HQPlayer out of the picture and using Roon’s DSP if you like it more.

If HQP is out of the picture and we play through an ultraRendu in “Roon Ready” mode, the sonicTransporter’s average CPU load is 3%-4% with upsampling to DSD 256 (the max Roon allows with this config). If Roon DSP operates in tandem with HQP, with upsampling to DSD 512, the average CPU load goes to 5%. Doesn’t seem like much of a cost (assuming one has the server horsepower).

OK, if that’s the case, you have Direct SDM enabled in HQPlayer and it is doing nothing more than acting as a bit pipe. So there would be even less sense to keep HQPlayer in chain.

With those load figures it doesn’t sound like HQPlayer would be upsampling DSD256 to DSD512.

Yes, I had Direct SDM enabled. After disabling it, the CPU load then increases to about 16%-21% (average for all cores). After then disabling Roon DSP, the average load increases to about 39% (avg all cores) with individual cores reaching > 95% (and frequent stuttering).

Is there anything one can do to the HQP settings to achieve the more efficient load balancing (if that is the issue) provided by Roon DSP?

You can grey (auto optimise) or check (force) Multicore DSP. Similarly for CUDA offload if you have a CUDA capable graphics card.

Roon DSP is designed towards efficiency so as to enable use by a wide variety of hardware. HQPlayer efficiency varies considerably depending on the upsampling rate, filter and modulator selected.

The xtr-2s variants are considerably less taxing than the xtr filters, without sounding appreciably different.

I believe HQPlayer actually does more balancing between cores than Roon. Roon tends to use a single core until the Zones multiply.

Using Roon DSP and HQPlayer at the same time has become less of an issue now that Roon can pass 64 bit output to HQP. I understand that there may still be some repetition or inefficiencies involved, but it can be convenient to use the PEQ in Roon and then pass it on to HQP.

Ultimately, if you do that you could turn that PEQ curve into a wav (using external software, not Roon) and convolve it in HQP. It would be interesting to know if people hear a difference.

I’m using HQP-embedded with a sonicTransporter i9.
I do not see any “Multicore DSP” option (as there is in the HQP Desktop version). But AFAIK the sT i9 uses multicore processing by default and the user cannot directly control load balancing. This system has no CUDA-capable graphics card.

As far as I can tell, piping Roon DSP into HQP is the only way I can get upsampling to DSD512 with the above-cited ext2 filter/modulator combo. If I remove HQP, max upsampling is DSD256; if I remove Roon DSP, then with HQP alone it stutters.

Now, with an xtr-2s filter (instead of poly-sinc-ext2) and ASDM7 512+fs, I can turn off Roon DSP and get no stuttering with an avg core load of about 15%. So, thanks for that, @andybob.

Roon DSP doesn’t have “more efficient load balancing”. Roon DSP just has simpler algorithms that have lower CPU load.

If you are trying to do DSD512 with ASDM7EC modulator, it is not going to work, as there’s no fast enough CPU on the market at the moment to do it. But you can do it with ASDM7 though.

There shouldn’t be any problem doing it with poly-sinc-ext2 either. Even my i5-7600T low power CPU can do DSD512 with poly-sinc-ext2 and ASDM7.

Yes, when Roon outputs PCM without rate conversion to HQPlayer. So just some of the DSP but without rate conversions.

But in above case Roon outputs upsampled DSD which HQPlayer then processes DSD -> DSD. And that is not meaningful.

1 Like

I have experimented with this, and convolution files sounds more transparent (but with higher latency) in HQPlayer than in Roon.

1 Like