Improving performance with DSD256 and long convolution filter

I have a silent (passive cooled) audio PC that is currently a roon core & player. It has a i7-4770t chip, which has a TDP of 45W and so is suitable to be passive cooled. I have noticed however that when playing DSD256 (including with some DSP turned on) the playback stutters.

Is there anything I can do to remedy this with my current CPU, or do I need a new faster CPU? And if the latter, any recommendations for one for a passive cooled rig? The i7-7700t looked like a potential option. I am planning to move the PC anyway and have it as a core with an Ultrarendu as an endpoint.

Any advice appreciated.

Have you tried RoonServer, the version without the GUI? I run DSD128 without issue on a much older cpu i7-2600 using RoonServer. Never tried the gui Roon core.

I would think DSD256 was possible on that CPU, at least with “parallelize sigma delta modulator” turned on, assuming it’s being cooled adequately.

That’s not necessarily a given with a fanless PC–maybe it’s overheating and self-throttling. 45W TDP and passive cooling is possible, but many setups won’t extract full performance for more than a short time since the CPU will turn down the speed as it heats up.

You can keep an eye on what’s happening with HWMonitor and try to see if stutters correlate with temp increase, CPU clock speed slowdown, or both.

Personally, I would rather have a trouble-free server with a fan in a closet somewhere than worry about fanless + heat dissipation. Doesn’t work for everyone, but if you’ve got the option, it’s something to consider.

1 Like

Hi ec, I’d definitely give this a shot first, swapping to RoonServer as suggested by Larry, and see if that solves the issue. If not, and you’re looking at a new CPU, would fanless still be a requirement after you move the PC ?

Thanks for these.

I haven’t tried Roonserver. If it is without a GUI, how do I browse my albums? Please excuse my ignorance :slight_smile:

@brian @andybob - I should add that some DSP settings are turned on, which will likely be adding some extra processing strain. Where is the parallelize setting that you mention? I couldn’t see it under audio settings. I have just installed HWMonitor and will take a look at what that says.

Yes, the reason it was fanless is because I was initially of the CAPS school (over at Computeraudiophile), a school which I suppose pre-dated the server and endpoint mentality. I could sell my fanless case and get a new case + fan. Another consideration is whether my HDPLEX 100W linear PSU would be powerful enough for a more powerful CPU (since it powers the SSD also).

The setting is in DSP Engine.

The SSD isn’t such a big deal, but the other chips on the motherboard + RAM aren’t negligible. No harm in trying it first, though. The 7700T has a smaller TDP than your current CPU–that should create some breathing room.

Phone, tablet or another PC. I got a 2nd hand iPad Mini 3, which I love as a Roon Control.

I turned on the Sigma-Delta modulator, though it didn’t really make any difference.

If I “outsource” the rendering of the music to an Ultrarendu, then is there a different Roon build for this or is it still the standard one that I am using?

HWMonitor showed the total CPU load at around 15% (I think) when the DSD256 playback was stuttering/stopped.

Some figures showed max 100% however, though I’m not sure what this means as it lists 7 CPUs and I only have 1! See screenshot:

This is a 4 core processor, 0,1,2 and 3. Each core has hyperthreading which allows each core to behave like 2, so you see a reading that says 0,1,2,3,4,5,6,7. Four cores further split into two virtual cores hence 0-7 (which totals 8). Turning on the Sigma-Delta should help, but re-reading the thread I think your problem is your PSU. 100 watts really is not enough for a the potential of an i7 with a decent load. My opinion is your PSU is running out of steam.

What does your signal path look like when this is happening?

It looks like this (no quantum flimflammer):

Do you really think it might be the linear PSU? CPUID HWmonitor says that the “package” power is only 30W max (see the screenshot above). Don’t know if this is the right statistic though?

If so - anyone want to buy an HDPLEX 100W linear PSU? :smiley:

No, I don’t think this is the PSU.

But I understand where all of the CPU is going now. Your convolution filter is incredibly huge–8.4 million taps. It’s pretty unlikely that you actually need a filter with an impulse response of that duration unless you are simulating boomy reverb in a large concert hall or something like that.

You’ve likely loaded a reasonably sized filter at a lower sampling rate, and then Roon has had to up-sample it, which makes the filter much longer (and thus much more expensive for the CPU).

Possible solutions include:

  • Generating your convolution filter at a higher sampling rate. At least 705.6kHz or 352.8kHz would help a lot.
  • Turning off “Enable Native DSD Processing”, which will cause Roon to apply the filter at 352kHz PCM instead of trying to do it at DSD256. Since the filter will no longer have to be upsampled to the DSD256 sampling rate, it will end up much shorter and the CPU problem will disappear.

I’ve seen DSD256 convolution filters work. Most i7’s can manage it–but you have to be judicious with the size of the filter to make it practical, and this one is way out of bounds. I don’t think a CPU upgrade is going to solve this for you.

1 Like

Thanks @Brian, will look into that.

I got the filter from REW, the room EQ software recommended here. I saved a filter for each rate that REW allows (up to 192 i think) and then grouped them in a zip - again I think this was recommended. Did I do something wrong here?

I would rather leave native DSD processing on, as I have a lot of DSD files that I would like to play natively - as native DSD sounds better than upsampled DSD with my DAC.

Thanks!

You didn’t do anything wrong–REW is just not a great tool for generating filters for such high sample rates.

I don’t know why they don’t provide options for generating shorter filters, filters at higher sample rates, or windowing to manage filter length. Maybe the authors didn’t really consider what would happen with DSD in the mix.

I just had an idea about how we might be able to fix this…can you send me your filters? I want to try something out. I’ll send you a PM.

I asked the developer of REW to add higher sample rates, he said he would do it but the last beta does not have it. Maybe he forgot.

I think you can import the filter response into RePhase though, and there they have a setting for number of taps, but not 100% sure if that will yield a good result (my experience with RePhase is very limited and filled with inverted know-how).

Would it be possible for Roon to reduce the number of taps runtime (interpolate or something similar)? Even at DSD64 I get 700k taps, which seems a little overkill.

Thinking about this in terms of tap count is actually kind of backwards. You should be thinking about duration. A 700k tap filter at DSDS64 is about 248ms long. Whether or not that is overkill depends on the goal of the filter.

The key thing is–when we resample filters, we must preserve the duration of the filter (in time, not in taps). The tap count is just the result of meeting that obligation at a given sample rate. So if you give us a 2 second filter, it’s going to be 88200 taps at 44.1kHz and 5644800 taps at DSD64. That’s just the math.

What is overkill is the fact that REW generates the same filter length (in taps) regardless of the sample rate. If 131072 taps is adequate at 192kHz then it is unnecessarily large for 44.1kHz. 131072 taps at 44.1kHz is roughly 3 seconds. Either the 44.1kHz filter is wasteful, or the 192kHz filter is inadequate. In fact, in most cases that come up here both are probably wasteful.

I’m considering a feature that detects blocks of 0’s at the end of the filter (waste inserted by the filter generation software) and treats them as if they’re not there. This will not change the mathematical outcome at all, since those 0 terms never contribute to the accumulator in the convolution calculation.

To actually remove non-zero sections of a filter in an effort to make it smaller would change the response characteristics of the filter. There are applicable techniques for doing this (window functions), but I’d be much more comfortable if the filter generation software were doing that since there are details to take into account that are not one size fits all.

This mess is the consequence of not taking DSD sample rates into account during the filter design process. Running these filters at PCM rates is easy for just about any hardware. Running them at DSD rates is right on the edge of possible. The “lowest hanging fruit” in this optimization problem is to avoid waste during filter generation.

2 Likes

I am a newer member getting ready to jump into Room on my Oppo 205 and this is very hard to follow. I am not giving up and I really need to understand it so I can begin extracting the best out of my sound system. It looks like I can use us my iPad mini with the RoonServer through my system for best results given I do not want to buy a dedicated computer for my music?

Hey @Trent_Charlton,

I definitely don’t think you need to understand what’s being discussed in this thread to make your initial setup choices with Roon. @extracampine is having a very technical performance issue when combining his Room Correction with extremely high-rate DSD playback and I’m working through it with him–but it’s pretty unlikely that you’re going to be running into the same thing.

You will need a permanent place to run the Roon core software that is not a tablet or phone. This could be a Mac, PC, NAS, NUC, etc. It doesn’t have to be dedicated if you don’t want it to be. Once that’s set up, you can use your iPad to control the system and stream to the Oppo BDP-205.

1 Like

Just as a sanity check, stick your numbers in here to see if 100 watts is enough.

In light of what @brian has said, I am more than happy to be corrected but either way this is a decent resource for system assemblers who might buy their bits from different sources. The main thing is if it is enough your PSU can stay put. :slight_smile:

Just sent the filters to @Brian to look at.

Will look at that power calculator, cheers!