Multichannel and Other Playback Processing Issues

Core Machine (Operating system/System info/Roon build number)

WS2019 desktop experience, i9-10900K processor, 32Gb RAM, ASUSTeK ProArt Z490-CREATOR 10G motherboard, NVIDIA GeForce RTX 2080 Ti (EVGA) graphics card, Audiophile Optimizer 3.0, Roon 1.7 build 610

Network Details (Including networking gear model/manufacturer and if on WiFi/Ethernet)

Comcast/Xfinity gigabit internet, connected to server via ActionTec MoCA network and ethernet

Audio Devices (Specify what device you’re using and its connection type - USB/HDMI/etc.)

– Okto dac8pro multichannel DAC, connected to server via USB, for multichannel listening
– Pro-Ject PreBox S2 Digital DAC, connected via Sonore microRendu as NAA to network, for HQP real-time playback of digitized vinyl
– Bel Canto streamer, connected to server via wifi, for 2-channel listening

All endpoints utilize convolution filters generated by Audiolense 6.7. Music files are on a Synology 1813+ NAS, ethernet connected to the network.

Description Of Issue

The good folks at Microcenter have built out a new server for me essentially to the specifications of the new CAPS20 server described by @ComputerAudiophile here:

I am not having any problems with the Bel Canto streamer for 2-channel listening. My prior server ran an older generation i-7 processor, which successfully allowed use of the Okto DAC to play multichannel with convolution through Roon at 24/192 via WASAPI, but wouldn’t allow me to use the Okto-supplied DIYNHK ASIO driver to play multichannel DSD128 files natively. The prior server would playback digitized vinyl with convolution through HQP to the Pro-Ject DAC scaling back up to DSD128 with EC modulators, but stuttered badly at DSD256, as the CPU and memory of the server reached their respective limits.

With the power of the new server, I was expecting no issues being able to play multichannel files with convolution through the Okto DAC at DSD128 and digitized vinyl with convolution through the Pro-Ject DAC at DSD512 with EC modulators.

Focusing here on Roon, you can see in the attached screenshot that processing speed to the Okto DAC has not improved at all – a mere 0.6X, and only for DSD64, let alone DSD128 that the Okto is designed to handle natively. Music starts for a few seconds and then Roon dies. I can see in Task Manager that the server is hardly taxed – CPU bumps up no more than 12% and memory to 23% when playing multichannel DSD files natively to the Okto DAC, so the server seems to be doing its job. @ComputerAudiophile notes that I have 15 paths of convolution with 966K of taps and he wonders if that is the problem, although I’d have thought the server would be taxed if such were the case, and it is not.

On the HQP side of things, I do have CUDA offload enabled, so the heavy processing to get to DSD512 should not be on the server, and indeed, CPU doesn’t get past 21% and memory not past 23% when engaging HQP. So, again, the server seems to be doing its job. Indeed, HQP shows that it is playing out at DSD512 with convolution and the HQP timer is running smoothly, yet the audio output stutters badly.

Tagging @mitr, @Mitch_Barnett and @jussi_laako for their help as well on this one. Thanks, all. JCR

WS 2019 isn’t supported.

Thanks, @ged_hickman1. That’s not the answer, however, in my experience. I’ve used Windows Server 2012R2, 2016 and 2019 with Roon on my old server and all was fine. This is about the scaling levels that I am out to achieve, which my prior server couldn’t handle. I really don’t believe it’s an operating system issue, as I know others use WS2019 as well. I’ve never had the issues described in the link you provide above in any of my Windows Server utilizations. JCR

For HQPlayer, for starters, offload only convolution to the GPU by setting CUDA offload to grayed.

Then observe CPU and GPU loads from Resource Monitor.

Another aspect to check is buffer sizes in the ASIO driver control panel, you can usually find from the system tray. Set the buffer sizes to as big as possible and leave “Buffer time” in HQPlayer set to “Default” which then uses the sizes suggested by the ASIO driver.

I don’t know what Audiophile Optimizer does, but it is likely better to try with such disabled first. In Windows Control Panel -> Power set the power profile to High Performance or Ultimate Performance.

Hello, @jussi_laako. Well, I have tried both ASIO Lynx and ASIO4all as input backends (WASAPI doesn’t work), with the Lynx AES16e in ASIO4all and in the Lynx Mixer settings for ASIO Lynx set to 2048 buffer. I’ve tried the 44.1 and 48 x512 bitrates, but still stuttering. As far as I can see, the CPU never gets past 20% or so, and the GPU isn’t taxed, either. I tried with convolution off, and still have the stuttering. Given that I have Multicore DSP, Adaptive Output Rate and CUDA offload all set to grey, I assume that with convolution off, it is an issue with the server processor and not the GPU, as I assume that’s disabled if convolution is off. At 44.1x256, all plays fine, with convolution.

Your thoughts now?

By the way, what is the difference between using 32, 44.1 and 48 x the bitrate?

Just so you know the other settings, SDM oversampling is set at poly-sinc-lp-2s, oversampling Nx is at poly-sinc-ext2 and modulator is at ASDM7EC.

Thanks. JCR

I am making progress, @jussi_laako. I can get native DSD 128 now playing out through my Okto DAC. My current question is about the convolution matrix. Audiolense creates 14 mono wav files, some with different gain provisions, and for Roon utilizes them with cfgs for routing. Without cfgs in HQP, how do I deal with all 14 when HQP has only one input available per channel? JCR

What are those 14 filters supposed to do? Without knowing purpose of each it is hard to say.

You can have one filter per virtual pipeline, and you have total of 32 virtual pipelines available. So you can process max 32 convolution filters at the moment. Number of channels is a separate thing.

@jussi_laako, I hear you, but have no understanding of how to insert more than one filter per channel as your convolution matrix is organized that way. Clearly, 32 convolution filters are plenty for me, as I have 14. Can you show an example of how to load all 14 into HQP? Here is a Dropbox link to a full 384K zip file with all 14 filters, the cfg file generated by AL and the corresponding mono wav files. The zip also has the cfg file generated by AL for 2-channel, but you can ignore that and just focus on the MCH filters.

In addition, by separate email, I have just introduced you directly to Bernt Rønningsbakk of Audiolense, as I believe the two of you could figure out the proper compatibility of HQP with Audiolense mono wav filters. As I understand from Bernt, the 7 additional filters relate to bass management, but still relate to the same 7 channels in my 5.2 MCH system. Thanks. JCR

Each of the pipelines have selection for source channel and destination (mix) channel. Then you can apply a specific gain and filter for each of such. If more than one pipeline output to the same destination channel, they are mixed together.

I looked at the file, but I have no idea what it is trying to have. The configuration file has just some magic numbers and the file names. It would be better if the configuration file would have some sensible structure like XML or JSON with parts named in explanatory way.

This topic was automatically closed 365 days after the last reply. New replies are no longer allowed.