How to use convolution with DSD files

Hi there,

I added convolution filters for several PCM resolutions to a zip file according to https://kb.roonlabs.com/DSP_Engine:_Convolution.
It seems to work fine with PCM, but as soon as I play a .dsf file, I get “Transport: Playback has failed due to unexpected error communicating with audio device” and “Transport: Too many failures. Stopping Playback”

I tried setting the “DSD Playback strategy” to “Convert to PCM” in Roon’s DAC settings (exaSound e20) and also played around with the “Sample rate conversion” settings in Roon. However, I don’t get the DSD files to convert to PCM and play with convolution.
Only when I remove the convolution, the files play. One thing worth mentioning is that the audio path shows DSD64->352.8kHz although I specified DSD64->384kHz in Roon’s “Sample Rate Conversion”.

EDIT: I am on latest Windows 10 x64 and latest Roon x64.

Hello @Hans_Stahlhelm,

Can you please send us the convolution filter you are using so that we can take a look on our end? I will PM you instructions on how to send the filter over to us shortly.

Thanks,
Noris

Thank you. PM sent.

Hello @Hans_Stahlhelm,

We have taken a look at the Convolution filters you have uploaded in the Lab and was unable to use them for DSD content either. Convolution is supported on DSD but there seems to be something wrong with your filters or .cfg files here and would be worth checking with the source you downloaded them from to see if they can provide another set.

Thanks,
Noris

Hi @Noris. Thanks for the reply.

I am not sure we understand each other:

  1. Using convolution with DSD is “not possible” (well HQPlayer does it as far as I know). In general, if one wants to use convolution with DSD, the files need to be downsampled to PCM first.
    Now you say that convolution is supported on DSD?! I am puzzled.

  2. Because of 1. I tried to downsample the DSD files to a PCM format that I have filters for (that works nicely in JRiver btw so I don’t think there is something wrong with the filters) but I get the errors mentioned in my first post in Roon as soon as I want to play a DSD file with convolution on (expected behavior: downsample/convert the DSD file according to the settings in “Sample Rate Conversion” and applying the relevant convolution filter).

I did not download the filters but have created them with Acourate, and use them in JRiver.

Hello @Hans_Stahlhelm,

Yes, using convolution with DSD is possible but you have to enable DSD processing in the Roon’s DSP Settings under Sample Rate Conversion. I have escalated your case with the technical staff who will review the provided filters and will let you know their exact findings.

Thanks,
Noris

Thanks again @Noris.

Is convolution of DSD files documented somewhere? (Because I “think” that my provided filters won’t work for DSD since they are only for 44.1, 88.2 … 484 kHz EDIT: you might, of course, upsample the filters…). Just for my understanding, you suggest that DSD -> Convolution -> DSD works, correct?

Please note that what I was trying to achieve was DSD>PCM->Convolution->Output PCM which does not seem to work.

Hello @Hans_Stahlhelm,

I have confirmed with the tech team that the issue here is with the submitted .cfg files, they are invalid. Please take a look at our Convolution documentation and Convolver Config File Documentation. Unless you are trying to do channel mapping or something similar, Roon will automatically use the correct filter so .cfg files are not necessary.

We have found the easiest way to test this behavior was to remove the .cfg files and just keep the filters in the .zip folder, and they then work with high-res content and DSD content, please let me know if you see something different on your end after removing the .cfg files.

Thanks,
Noris

Hello @noris,

thanks for the confirmation. The .cfg files are according to the documentation in the link you provided. I think they would not work in JRiver if there would be something wrong with them. Reading your documentation I suspect that it might be indeed something wrong with how Roon interprets them (“Note: as of the 1.3 release, only a handful of users have used our convolution text file support during alpha testing. If you run into issues, please stop by community and let us know.”).

Anyway, removing them and just keeping the .wav files in the zip file works. Am I right to assume that Roon downsamples DSD to PCM (option “for compatibility only”) when I use convolution and “DSP volume”?
The signal path stays in the DSD domain (DSD->convolution->DSD) when I use “fixed volume”.

FYI: I readded the .cfg files and left the volume at “fixed volume” (in contrast to “DSP volume” which leads to the errors in my first post). Everything looks good (even the signal path) but there is no sound coming out of my speakers.

EDIT: Another question that came to my mind: Are any options on the “Sample rate conversion” screen applied (for example “DSD processing settings”) when “Sample rate conversion” is disabled?

Hello @Hans_Stahlhelm,

  1. You are correct, it is not possible to use the DSP Volume feature while keeping streams in their native DSD form.
  2. Looking at the .cfg files you’ve provided us, I’m not sure why you would need to be using them with Roon. I do not see any advanced operations that are not already automatically taken care of by our Convolution logic. As for why they don’t work, I can see in a few of the files that the incorrect sample rate .wav files are being referenced, maybe that is the cause.
  3. Even when the “Sample Rate Conversion” stage is “Off” in DSP Engine, the settings applied on this screen will be applied when Roon performs sample rate conversion for other reasons (compatibility, other DSP stages requiring conversion). If you are applying convolution to a DSD stream, the “DSD Processing Settings” will impact how the operation is performed.

-John

Thank you @john.

Regarding 2.: You are right, the sample rate was not correctly stated in the cfg files. Sorry for the inconvenience. I corrected the files but it does not make a difference regarding my “FYI” in my last post.
I do not need those cfg files, but Roon should process them correctly.

Since Roon fetches the correct .wav files depending on the sample rate (if provided), what happens in case of playing DSD? Are the impulse responses upsampled? I’ve seen another thread here that suggests that (currently) resampling the impulse responses does not work quite as it should.

Hello @Hans_Stahlhelm,

In regards to Roon’s DSD Engine native DSD processing capabilities, I will refer you to this post by our CTO explaining how this feature works from a technical perspective

In the case of using convolution filters with native DSD processing, we will resample the filter to the native sample rate of the DSD file in accordance with the strategy above.

-John

No evolution ?
I have same problem.
I made convolution wav files (44.1 to 384) with REW… no problem except with DSD… i have a “boom” in my speakers when i go from a 44.1 to a DSD and no sound…
With Roon Radio is not funny : “Oh, a DSD file” !

[EDIT] Sorry, it’s good with “Natve DSD” unchecked to play DSD as PCM.