DSP Up-Sampling features in Roon 1.3

Hi Brian,
Is there a need for ‘Sigma-Delta modulator’ that does noise shaping, i.e, 5th order etc…when processing PCM to DSD conversion? If I understand correctly, Roon doesn’t use this when playing back DSD directly.

In the DAC end, the hardware does the Sigma-Delta plus noise shaping and the analogue signal goes to gentle LPF.

Sorry. Yes. Misunderstood your question.

You have to noise shape when going pcm->dsd if you want to produce a DSD signal that is very useful to anyone downstream.

Noise shaping shapes the noise floor so that more dynamic range is available at the frequencies where musical content exists, and less dynamic range is available at higher frequencies. Only after that’s done can you filter out the noise with a gentle LPF effectively. If it were un-shaped, noise would intrude on frequencies that you couldn’t reasonably attenuate without doing damage to the signal.

Noise shaping isn’t a step you can move to after the X->1bit conversion, though–you have to noise shape in order for the 1-bit DSD signal to make sense. What happens afterwards in the DAC varies–it might re-modulate, it might not.

While this may be true, I think it’s important to look at the real-world market that Roon [and similar companies] are appealing to

Roon has thousands of customers…and while only Roon can give us specific numbers, my best guess is that the majority of those customers have between 3 and 10 Zones in their homes…with very rare situations where 20 Zones might be used

I think it’s fair to say that for most of the above users, that they will only have ONE Highly Resolving system / Critical Listening rooms in their homes, with a DAC and Speakers that can benefit from the type of SRC / DSD Upsampling being discussed here…and yes, it’s possible that some people may have 2-3 highly resolving systems in their homes, but that is rare in my experience

Likewise, I also think it’s fair to say that there tends to only be one audiophool :wink: in the house…and if you’re lucky, your partner may also be similarly inclined, but again that’s rare IMHO…so that means that even in a house with two high resolving systems that benefit from SRC / Minimum Phase / DSD Upsampling…that means there would really only need a maximum of two simultaneous streams of the type being considered here

And so, even if you consider the “edge cases” of Roon’s user base…I think Roon has shown it can deal with 2-3 simultaneous streams feeding DAC’s & Systems that can usefully benefit from e.g. DSD256…whilst still dealing with feeding 16/44 music to up to 8 other, more “casual” listening rooms…but obviously the user needs to have a reasonably spec’d i7 with SSD and RAM as the Roon Server platform, to cater for such an edge case scenario

I think the key word here is simultaneous streams…and how many of them are really needed in a typical household…and I think it’s fair to say that Roon is more than capable of dealing with that :slight_smile:

5 Likes

I think doing DSP in Roon Bridge is inconsistent with the design goals of Roon Bridge as a lightweight program that can run on inexpensive minimal hardware without a substantial processor load. All those things are inconsistent with DSP, particularly upsampling at rates like DSD 256 and DSD 512.

What does the “processing speed” measure when you’re feeding HQPlayer? I’m seeing numbers in the 4000-6000x range…

Thanks!

It’s just measuring how long it takes to pack the stream up for HQPlayer. If it’s that high, it doesn’t mean much, and you can just ignore it.

This is fair, and probably the reasoning behind the Roon team’s recommendation of a 5th or 6th generation i3 or i5 for the core. My only point is that depending on how your system is used, there may be practical considerations behind upsampling within the same rate family rather than upsampling everything to the highest supported rate that have nothing to do with sound quality.

I think this is probably true.

The thing I really like about the HQPlayer integration is that it allows you to separate the hardware concerns into what is needed for your upsampling requirements and what is needed for your library. That is, you could choose a spec for your core based on the size of your library, and then add one or more boxes for HQPlayer based on how many simultaneous streams you need and how much processing power each of those streams require. With HQPlayer, if I decide that I want/need another upsampled stream, I can buy another appropriately spec’d box and all is good. With the current Roon model of all of the DSP functions happening in the core itself, now the potential processing power required for the core is unlimited. Whatever specs I choose for the core effectively limit the possible number of streams/DSP capabilities that my system will support. As unlikely as it may be in practice, if you want to support multiple DSD512 streams, with the current DSP design, this is a practical impossibility.

Fortunately, HQPlayer is still supported, so there are alternatives, but I’m just advocating that the HQPlayer model is a better one, conceptually. In practice, I wish is that HQPlayer could play to RAAT zones, and I look forward to HQPlayer Embedded 4 that should be able to run headless and integrate with Roon. I Guess I just want to have my cake and eat it too — I would like to be able to choose between using HQPlayer and Roon for DSP based solely on sound quality (or tweakiness) factors, not because I am forced into that model simply because it is not really possible for the Roon model to scale to meet my needs.

That being said, I don’t see any reason why Roon couldn’t support this model eventually. Perhaps this isn’t the intended function of the Bridge, and instead some day there is a new “RoonDSP” component (or Roon optimized DSP kit) that you can install somewhere to outsource DSP functions for one or more zones. I’m sure the Roon team wanted to keep things simple, and will add/support this if they sense the market demand makes the added complexity/support worthwhile.

I think maybe this could be summed up the best through the sentiment (perhaps first expressed by Larry Wall in the book Programming Perl) that the easy jobs should be easy and the hard jobs should be possible. I definitely think that Roon has succeeded in making the easy jobs easy. What I would like is a way to make the hard jobs of streaming to several zones with DSP possible.

I definitely don’t mean to sound like a complainer though. I understand the trade-offs and rationale involved, and definitely think they made the right choices for 1.3. I think they also made all of the right architectural choices to make this feasible in the future, so in that way they are making “the hard jobs possible” just not supported today. I am not making a criticism of Roon, more of an observation and a sort of feature request :slight_smile:

1 Like

It is easy in the Tidal app, no discovery needed :slight_smile:
Can this also be as easy in Roon soon?

All they would need to do is implement free open source SRC/SDM and they can surpass HQP internally without the complication of using 2 programs to talk to each other. They can do it easily in freeware, so I’m confident the brilliant team at Roon can do it too. Everyone talks about it like it’s like climbing Mt Everest, but it really shouldn’t be.

Maybe. I really have no opinion on this. The specific implementation of the sample rate conversion algorithms is not my issue, but it seems valid if there are other/different algorithms/filters you would like Roon to support. I leave it to the Roon team to make the technical decisions on how to implement the features they have chosen to support. Whether they use an existing library or implement everything themselves makes no difference to me.

Actually there’s been a lot of very nice improvements with 1.3. I will happily wait for better on-board upsampling. :slight_smile:

It sounds like multicore DSP processing on the Roon Core Server will be a big improvement for multizone implementations. How far off is this?

If Roon can do background Analysis over 64 cores I am sure DSP processing on a core per zone is doable.

I wonder if the option of whether DSP occurs at the core or endpoint might be useful?

When building my audio server I tossed up between really low power N3150 CPU and low power I7s and decided to go 65W I7 which gives some flexibility.

My HP Microserver with quad core Xeon is much more powerful at running the DSP than my dual 16C/32T Xeon V4 due to higher operating frequencies (3.4ghz vs 2Ghz) and would probably cope with 2 high end zone on a single core, sadly the dual Xeon server wouldn’t if DSP is run on a single core on the Roon core server.

As for how many zones is usual I am only tempted by 2 truly high-end zones. One for Speakers and one for headphones.

Regards

Andrew

Roon already uses multi-core processing for different zones playing at the same time, including during grouped playback.

The thing we don’t do at the moment is using multiple cores to process the stream for a single zone.

(Nor does most other software–HQPlayer the obvious exception. There are efficiency and reliability tradeoffs involved in getting multiple cores working on the same stream because of the extra synchronization/inter-thread-communication/disassembly/reassembly that’s required. It’s not the kind of thing you want to do unless you absolutely have to to make things work.)

Thank you

Andrew

You’re not gonna like this…

I just compared this:
1- Roon 16/44 upsampling to 24/176, linear phase
2- Roon->HQP upsampling to 24/176 poly-sinc-short filter
In both cases I am using the microRendu (RoonReady mode in ‘1’, NAA in ‘2’)

So… ‘2’ is much better than ‘1’. ‘1’ sounds both veiled, strident, and with less space than ‘2’. Piano color in ‘1’ is just not right in comparison. Female voices are natural and present in ‘2’, not in ‘1’.

Oh well… Loving v1.3 otherwise!

Why not? It’s a perfectly fair comparison with a clear preference for one. Fine with me – and it’s not like HQP integration will be taken away now Roon does a bit of DSP on its own.

For me – now I’ve had some playing time I prefer PCM192 Min Phase upsampling by Roon in my main system to anything I’ve heard through HQP. (The judge is still out on the Mojo – it appears to do quite a nice job on its own).

Is it my system? Is it just personal preference? Who knows – but just enjoy what you like best.

Will try your options. What HQP filter are you comparing to? poly-sinc-short-mp? Thx.

Not actively A/B-ing – that does not tell me a lot.

When I used HQP, I preferred poly-sinc-short-mp / NS9 indeed.

Funny you mention the piano: for me it is the exact other way around (not quite right in HQP – nicely balanced and fleshed out in Roon).

1 Like