Naming convention for convolution files?

I’ve developed a number of convolution files for correcting:

LR (stereo WAV)
C (mono WAV)
LFE (mono WAV)
ALL surround channels (mono WAV)

What I’d like to ensure is Roon assigns the correct WAV / convolution file to the right channel, but not sure what matching protocol it is using so to do.

For example, I think the LR / stereo WAV file is likely to be assigned correctly, but will Roon be able to recognize the C, LFE, and ALL Surround filters and assign them correctly? Given they’re only mono files, how does Roon know which files to match to which channels?

Again, I’d think Roon may be able to handle LR, perhaps C and LFE (based on common naming standards), but will it understand to assign the final filter to the remaining (e.g., surround) channels?

Would like to make sure I’m getting this right :wink:

AJ

Yes, I’m well aware of that document; however, it does not answer this question.

It basically says,

"Roon will automagically determine based on content, blah, blah, blah … "

… but I’d like to understand what logic it uses to do so, since there is no documentation or representation in the interface showing the mapping.

You have to create a CFG file. Read the links in the document.

AJ

1 Like

OK, got it. I was taking Roon’s word for it they’d figure it out given a ZIP file full of impulse response files :wink:

So, I think I’ve created the appropriate config files - from what I can understand (limited, I’m sure), it appears you need one for each channel config you plan on playing back; i.e., you can’t just create a 7.1 file and run all your music through it, else you’ll wind up with, for example, LR content coming through your surround channels, etc. Or I’m reading the spec wrong, which is certainly possible - it’s kind of complicated and not very well documented (in my opinion, at least).

Any ideas on how to work around this? Or to convince Roon to switch automatically between the appropriate ZIP / cfg files per channel layout?

The Roon convolution guide could be more clear and helpful.
For a first time user, its easy to get stuck, especially on channel output masking configuration.

So Lets see if I can help.

The convolution .cfg file performs many functions:

  • Defines sample rate
  • Defines numbers of channels to utilise
  • Defines the output mask, or number of output channels / speakers
  • Defines input and output convolution waves to output channels
  • Defines gain
  • Etc

To understand how the .cfg file works and its function please look here:
https://convolver.sourceforge.net/config.html

So to answer your question, the convolution .cfg can do everything you need.
To create your .cfg, use a text editor. Save the file and ensure .txt file convention type is replaced by .cfg.

Example:
As an example, below is my .cfg file for 44.1khz, you will see I actually have .cfg’s for all major sampling rates… up to 192khz.

However, its possible to use Roon to sample for all other sample rates. In this method, simply create one .cfg for say 44.1khz and Roon will automatically sample the convolution up/down as needed.

This is a tested hex summary I made, for my interface:
1
2
4
8, F = 4 channels
10
20, 3F = 6channels
40, 7F
80, FF = 8channels

My example:
This .cfg processes stereo ‘Room correction’ convolution for an active 2 way speaker.
44100 – sample rate
2 – Input channels
4 – Output channels
F – hexadecimal output channel mask – to assign the output channels correctly on my Motu MK5 interface. Most users will set this to 0. My Motu needed some extra direction to assign correctly. Getting your output mask correct, might be the most difficult part of this exercise / interface depending. Again Read here: Config file

44100 2 4 F
0 0
0 0 0 0
L44.wav
0
0.0
0.0
R44.wav
0
1.0
1.0
L44.wav
0
0.0
2.0
R44.wav
0
1.0
3.0

This is the total file inclusion within my .cfg file for all sample rates:

This is loaded into Roon, as a zip file:
image

Overview of functions… again read the convolver link, and examples:
https://convolver.sourceforge.net/configegs.html

Here are a few additional examples, to help explain .cfg’s.
This was for my 3way active speaker setup, executing mono convolution files for low, mid, high:

44100 2 6 3F
0 0
0 0 0 0 0 0
LOW44.wav
0
0.0
0.0
LOW44.wav
0
1.0
1.0
MID44.wav
0
0.0
2.0
MID44.wav
0
1.0
3.0
HIGH44.wav
0
0.0
4.0
HIGH44.wav
0
1.0
5.0

Another example 2 way crossover executing to 8 channels for testing:

44100 2 8 0
0 0
0 0 0 0 0 0 0 0
M2high.wav
0
0.0
0.0
M2high.wav
0
0.0
2.0
M2high.wav
0
0.0
4.0
M2high.wav
0
0.0
6.0
M2low.wav
0
1.0
1.0
M2low.wav
0
1.0
3.0
M2low.wav
0
1.0
5.0
M2low.wav
0
1.0
7.0

5 Likes

I really appreciate your taking the time to write this up :slight_smile:

I’ll take a closer look over the next few days - you’ve confirmed what I’d like to happen is at least possible if I can figure it out LOL.

It would be nice if Roon would allow convolution filters in the Procedural EQ section, with the toggles to determine exactly which filters are to be applied to which channel (like you can do with PEQ).

1 Like

Your welcome. :wink:
When I was starting out, I had some welcomed helped also.

Yeah, unfortunately convolution FIR, requires .cfg.
The config controls all.

The easier way might be to apply a high pass or low pass to each channel separately (one at a time), to understand you have your config (channel/correction assignment) correct. I.e. If this would give you piece of mind.

Your channel assignment using 7.1 will likely follow procedural/PEQ assignment.
Example:
image

Most interfaces will probably work fine using 7.1 with a channel mask of 0.

I.e. 44100 8 8 0 (Multichannel)
I.e. 44100 2 8 0 (Stereo to Multichannel)

Just following the protocol, I suspect something like this would be about right?!
Obviously use the sampling rate you prefer.

I would suspect their would be a few multichannel audio users doing convolution that could confirm.

Assumes 7.1 input, 7.1 output

44100 8 8 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
insert left channel convolution name.wav
0
0.0
0.0
insert right channel convolution name.wav
0
1.0
1.0
insert centre channel convolution name.wav
0
2.0
2.0
insert LFE channel convolution name.wav
0
3.0
3.0
insert back left channel convolution name.wav
0
4.0
4.0
insert back right channel convolution name.wav
0
5.0
5.0
insert Surround L channel convolution name.wav
0
6.0
6.0
insert Surround R channel convolution name.wav
0
7.0
7.0

I have set up separate config files for my stereo and my surround music as follows:

96000 2 2 0
0 0
0 0
Left-96k.wav
0
0.0
0.0
Right-96k.wav
0
1.0
1.0

and

96000 8 8 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
Left-96k.wav
0
0.0
0.0
Right-96k.wav
0
1.0
1.0
Centre-96k.wav
0
2.0
2.0
LFE-96k.wav
0
3.0
3.0
Left Rear-96k.wav
0
4.0
4.0
Right Rear-96k.wav
0
5.0
5.0
Left Surround-96k.wav
0
6.0
6.0
Right Surround-96k.wav
0
7.0
7.0

I have similar files for 44100, 48000 and 88200. Everything gets played through my Sony AVR and 96000 is the max I can pass. I want to keep the stereo to 2 channels and surround up to 8.

Now I find that I have to create separate zip files for the stereo and surround filters. Roon suggests that it selects “the best match filter by considering the sample rate and channel configuration of the source material”. However if I zip both the stereo and surround config files into one file when I play surround music I only get the left and right channels played.

The multichannel .cfg looks good. I updated mine to reflect the correct input route selection.

1 Like

Same - I believe I’ve been successful in mapping my convolution files to output channels using this as an example. Cheers.

1 Like