# DSP Engine: Convolution --- ## Introduction Convolution is part of the [[DSP Engine]]. For more information on accessing the DSP Engine, [[see here|DSP Engine: Accessing DSP Engine]]. Convolution is a powerful signal processing technique commonly used for room correction, headphone listening, or surround processing. When using convolution in Roon, the first step is to design a convolution filter. This is done using an external piece of software. Some examples of software that can generate convolution filters are Room EQ Wizard, Acourate, Audiolense, DRC, Rephase, and EQuilibrium. ## Loading a filter into Roon Convolution filters are loaded using the Browse button: <img src='http://roon-kb.s3.amazonaws.com/90e67f01-4b5b-4bfa-9530-c0e4eaaa3c77.png'/> ###### Note that Roon does not yet support loading convolution filters from mobile devices. This must be done on a Mac or Windows computer. Depending on the exact type of filter you have, the next steps vary slightly: **If you have a single impulse response file, typically in `.WAV` format:** 1. Browse to the `.zip` file and select it in Roon 2. Enjoy the music. **If you have a set of impulse response files, one per sample rate or channel layout:** 1. Place all of the impulse response files in the same directory 2. Create a `.zip` file from that directory 3. Browse to the `.zip` file and select it in Roon 4. Enjoy the music. **If you use convolver-style `.cfg` files:** 1. Place all of the impulse response files and `.cfg` files in the same directory. 2. Open up each `.cfg` file and make sure that the filter paths inside are relative to the location of the `.cfg` file (see "Convolver text configuration support" for more details). 3. Remove any `.cfg` files that simply contain a list of other `.cfg` files. Roon does not support these. 4. Create a `.zip` file from that directory 5. Browse to the `.zip` file and select it in Roon 6. Enjoy the music. ## Technical Notes ### Handling of Monaural impulse responses If you provide a monaural impulse response file, it will apply to channels of the source material. If you provide an impulse response file with multiple channels, then they will be mapped onto the channels in the source material appropriately. ### Sample rate and channel layout switching If multiple impulse response files, or multiple `.cfg` files, are provided in the same `.zip` archive, then Roon will choose the closest match based on the channel layout and sample rate source material being played. ### Filter resampling If no filter is available that exactly matches the playback sample rate, Roon will resample the provided impulse response file to match. You can avoid filter resampling by providing a separate filter for each sample rate. This can improve performance--both CPU performance and sonic performance--so you should try to provide a filter for each rate when possible. You can also avoid filter resampling by configuring Roon to resample all content to the rate that matches your filter using [[!Sample Rate Conversion|http://kb.roonlabs.com/DSP_Engine:_Sample_Rate_Conversion]]. ### Impulse Response File Formats Roon supports the following impulse response file types: - `.flac` - `.m4a` (ALAC only) - `.aiff` - `.wav` - `.pcm` (raw float32 samples) - `.dbl` (raw float64 samples) Filters may use 16, 24, 32, or 64-bit samples. 64-bit samples are only supported for `.wav` and `.dbl` formats. ### Implementation Details Filters are applied using FFT Convolution and the overlap-add method. Like all of [[DSP Engine]], Roon's Convolution engine uses 64-bit floating point processing throughout. ### Convolver text configuration support Roon supports the [convolver text configuration](http://convolver.sourceforge.net/config.html) format. [Examples](http://convolver.sourceforge.net/configegs.html). When using `.cfg` files with Roon, you must first place them in a `.zip` file along with the impulse response files that they reference, as described above. Roon does not support `.cfg` files that simply list out other `.cfg` files. If you have files that look like this, please do not include them in the `.zip` file: <img src='http://roon-kb.s3.amazonaws.com/84a23507-5a44-4a75-8c12-cb744d416532.png'/> Note that unlike convolver, Roon requires that you use relative paths when referring to impulse response files. This may require you to edit the files like this: <img src='http://roon-kb.s3.amazonaws.com/c371f664-3681-4e47-a3ff-b357c575e336.png'/> 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](https://community.roonlabs.com) and let us know.
Page last changed Thu Jun 08 2017