Skip to content

Configuration Guide

Shanon Pearce edited this page Feb 16, 2024 · 8 revisions

Contents

Equalizer APO Configuration

This dataset can be used with Equalizer APO, an Audio Processing Object (APO) for Windows featuring convolution capabilities. Instructions on how to configure Equalizer APO to use the provided filters for headphone correction and BRIRs for room simulation are provided below.

Installation steps

  1. Download Equalizer APO and follow the Equalizer APO installation tutorial.
  2. Download the latest release of the ASH Listening Set and extract the contents to the location of your choice. Alternatively, clone the GitHub repository to your device.
  3. Set your sound device's default format to 44100Hz under the properties of your playback device. In Windows 10 the playback device settings can be found in Settings -> System -> Sound -> Sound control panel.

Configuration steps

Clipping Prevention

  • In the configuration editor, add a Preamp to your config.txt file to reduce any clipping that may result from the convolution. The dB value required varies depending on the speaker configuration and filters selected. The analysis panel may be used to identify potential clipping. Alternatively, the Peace interface may be used to adjust pre-amplification as it offers automatic clipping prevention.

Headphone Correction

Headphone correction can be achieved through either IR convolution or Graphic Equalizer configurations, as per below.

IR Convolution

  • Add a new convolution command to your config.txt file, then navigate to the HpCFs\FIRs folder and select the desired HpCF WAV file for headphone correction. Refer to the HpCF page for more information.
  • A compatibility filter will also be required if you are using in-ear headphones with the BRIRs. Add a new convolution command, then navigate to the Compatibility_Filters\FIRs folder and select the 'Compatibility_In-Ear_Headphones' WAV file. A compatibility filter is not required for over-ear or on-ear headphones.

Graphic EQ

As an alternative to IR convolution, the provided graphic EQ filters can be used.

  • Add a new Include command to your config.txt file, then navigate to the HpCFs\Graphic_EQ folder and select the desired HpCF graphic EQ file for headphone correction.
  • A compatibility filter will also be required if you are using in-ear headphones with the BRIRs. Add a new Include command, then navigate to the Compatibility_Filters\Graphic_EQ folder and select the 'Compatibility_In-Ear_Headphones' txt file.

Binaural Room Simulation

  • Add a new Include control to your config.txt file, then navigate to the E-APO_Configs folder and select a BRIR convolution configuration file for binaural room simulation. A set of BRIR convolution configuration files are included in the dataset for each room and for a range of common speaker configurations.

Example config.txt in the configuration editor Example config.txt in the configuration editor


HeSuVi Configuration

The BRIRs and Graphic EQ filters in this dataset can also be used with HeSuVi, a headphone surround virtualization tool for Equalizer APO. The files located in the HeSuVi folder are provided in formats that HeSuVi can read. The below steps can be followed as an alternative to above Equalizer APO configuration steps.

Installation steps

  1. If using Equalizer APO for the first time, download Equalizer APO and follow the Equalizer APO installation tutorial.
  2. If using HeSuVi for the first time, download HeSuVi and follow the installation and usage steps outlined in the HeSuVi Wiki.
  3. Download the latest release of the ASH Listening Set and extract the contents to the location of your choice. Alternatively, clone the GitHub repository to your device.
  4. Navigate to the HeSuVi folder within the dataset and copy the eq and hrir folders into the HeSuVi installation folder (usually located at: C:\Program Files\EqualizerAPO\config\HeSuVi).

Configuration steps

  1. Open or restart HeSuVi
  2. The BRIRs can be selected in the Virtualisation tab. The rooms can be found under the Common HRIRs section at the top of the list as per the screenshot below.

Selecting BRIRs in HeSuVi

  1. The HpCFs can be selected in the Equalizer tab. The HpCFs can be found under _ASH_HpCFs at the bottom of the list as per the screenshot below.

Selecting HpCFs in HeSuVi

  1. If using one of the equaliser presets included in HeSuVi, it is recommended to also use the provided Room_Target_Inverse filter as the room target curve applied to the BRIRs may result in an excessive low frequency boost when paired with other headphone EQ methods. The eq\_ASH_Additional_Filters\Room_Target_Inverse graphic EQ filter, along with any other additional filter, can be included as an additional filter either beforehand or afterwards under the Addtional tab.

Pipewire and Easy Effects Configuration

The BRIRs and HpCFs in this dataset can be used with PipeWire and easy effects on Linux.

Installation

  1. Download and extract the Pipewire-Files and Easy-Effects-Files packages from the latest release of the ASH Listening Set.
  2. Install EasyEffects. Packages are available for most Linux distributions. Installation via Flatpak is recommended for convenience.

Headphone Correction

  1. Open EasyEffects
  2. Open Preferences via dropdown menu located at the top right corner of the window.
  3. Toggle on Launch Service at System Startup in Preferences
  4. Toggle off Shutdown on Window Closing in Preferences
  5. In Output - Effects tab, on left pane, click Add Effect then Convolver to add a new convolver effect.
  6. In the convolver effect, click Impulses then Import Impulse and select the desired HpCF WAV file for headphone correction. Once imported, click the load button next to the IR name. The HpCFs are located under HpCFs\FIRs_Stereo in the extracted Easy-Effects-Files folder.
  7. If using in-ear headphones with the BRIRs, a compatibility filter will also be required. Add a new convolver effect, then import and load the Compatibility_In-Ear_Headphones WAV file located in the Compatibility_Filters\FIRs_Stereo folder.
  8. If applying headphone correction through filters not provided in the ASH Listening Set, it is recommended to also use the provided Room_Target_Inverse filter as the room target curve applied to the BRIRs may result in an excessive low frequency boost when paired with other headphone EQ methods. If required, add a new convolver effect, then import and load the Room_Target_Inverse WAV file located in the Additional_Filters\FIRs_Stereo folder.
  9. In the Presets menu located at the top left corner of the window, create a new preset and save for future loading.
  10. Click Pipewire tab, on left pane, click "Presets Autoloading" and add the autoload preset saved in the previous step.

Binaural Room Simulation

  1. Move the contents of the pipewire folder (extracted from the Pipewire-Files package) into your local pipewire configuration folder. The configuration folder will be located under the Home/.config/pipewire directory, E.g. /var/home/shanonpearce/.config/pipewire. This folder will now have 2 subfolders: filter-chain.conf.d and hrir
  2. Modify the filter-chain.conf.d/virtual-surround.conf file to point to the desired BRIR located under the current user's Home/.config/pipewire directory. This can be done manually using find and replace in a text editor, or alternatively by using the Sed commands located in the section below which will perform a find and replace on the virtual-surround config file.
  3. Start pipewire with the filter-chain config by running the below command in the terminal. The virtual surround device will now exist as long as this is running in the background.

pipewire -c filter-chain.conf

  1. In Easy Effects, go to "Output-Players" and exclude "effect_output.virtual-surround-7.1-hesuvi".
  2. Save your preset again in Easy Effects to ensure the virtual surround device remains excluded.

Changing BRIRs

The below Sed commands can be run in the terminal to update the file references in the virtual-surround.conf file and point to a different set of BRIRs. After modifying the virtual-surround.conf file, the current filter-chain config will need to be terminated and a new filter-chain config will need to be started by running the below command for the changes to take effect.

pipewire -c filter-chain.conf

Room Sed Command
Room Calypso, TU Berlin sed -i "s#config = { filename = .*wav#config = { filename = "${HOME}/.config/pipewire/hrir/Room_Calypso.wav#g" ~/.config/pipewire/filter-chain.conf.d/virtual-surround.conf
ASH Listening Room (KU100) sed -i "s#config = { filename = .*wav#config = { filename = "${HOME}/.config/pipewire/hrir/ASH_Listening_Room_KU100.wav#g" ~/.config/pipewire/filter-chain.conf.d/virtual-surround.conf
ASH Listening Room (KEMAR-N) sed -i "s#config = { filename = .*wav#config = { filename = "${HOME}/.config/pipewire/hrir/ASH_Listening_Room_KEMAR-N.wav#g" ~/.config/pipewire/filter-chain.conf.d/virtual-surround.conf
ASH Listening Room (KEMAR-L) sed -i "s#config = { filename = .*wav#config = { filename = "${HOME}/.config/pipewire/hrir/ASH_Listening_Room_KEMAR-L.wav#g" ~/.config/pipewire/filter-chain.conf.d/virtual-surround.conf
ASH Listening Room (TYPE4128) sed -i "s#config = { filename = .*wav#config = { filename = "${HOME}/.config/pipewire/hrir/ASH_Listening_Room_TYPE4128.wav#g" ~/.config/pipewire/filter-chain.conf.d/virtual-surround.conf
Control Room 1, WDR Broadcast Studios sed -i "s#config = { filename = .*wav#config = { filename = "${HOME}/.config/pipewire/hrir/Control_Room_1.wav#g" ~/.config/pipewire/filter-chain.conf.d/virtual-surround.conf
Control Room 7, WDR Broadcast Studios sed -i "s#config = { filename = .*wav#config = { filename = "${HOME}/.config/pipewire/hrir/Control_Room_7.wav#g" ~/.config/pipewire/filter-chain.conf.d/virtual-surround.conf
Listening Room, University of Salford sed -i "s#config = { filename = .*wav#config = { filename = "${HOME}/.config/pipewire/hrir/Listening_Room_Salford.wav#g" ~/.config/pipewire/filter-chain.conf.d/virtual-surround.conf
Audio Lab, University of Rostock (with absorbers) sed -i "s#config = { filename = .*wav#config = { filename = "${HOME}/.config/pipewire/hrir/Audio_Lab_Absorbers.wav#g" ~/.config/pipewire/filter-chain.conf.d/virtual-surround.conf
Office, University of Surrey sed -i "s#config = { filename = .*wav#config = { filename = "${HOME}/.config/pipewire/hrir/Office.wav#g" ~/.config/pipewire/filter-chain.conf.d/virtual-surround.conf
Small Room A sed -i "s#config = { filename = .*wav#config = { filename = "${HOME}/.config/pipewire/hrir/Small_Room_A.wav#g" ~/.config/pipewire/filter-chain.conf.d/virtual-surround.conf
Small Room B sed -i "s#config = { filename = .*wav#config = { filename = "${HOME}/.config/pipewire/hrir/Small_Room_B.wav#g" ~/.config/pipewire/filter-chain.conf.d/virtual-surround.conf
Small Room C sed -i "s#config = { filename = .*wav#config = { filename = "${HOME}/.config/pipewire/hrir/Small_Room_C.wav#g" ~/.config/pipewire/filter-chain.conf.d/virtual-surround.conf
Small Room D sed -i "s#config = { filename = .*wav#config = { filename = "${HOME}/.config/pipewire/hrir/Small_Room_D.wav#g" ~/.config/pipewire/filter-chain.conf.d/virtual-surround.conf
Small Room E sed -i "s#config = { filename = .*wav#config = { filename = "${HOME}/.config/pipewire/hrir/Small_Room_E.wav#g" ~/.config/pipewire/filter-chain.conf.d/virtual-surround.conf
Small Room F sed -i "s#config = { filename = .*wav#config = { filename = "${HOME}/.config/pipewire/hrir/Small_Room_F.wav#g" ~/.config/pipewire/filter-chain.conf.d/virtual-surround.conf
Small Room G (FABIAN) sed -i "s#config = { filename = .*wav#config = { filename = "${HOME}/.config/pipewire/hrir/Small_Room_G_FABIAN.wav#g" ~/.config/pipewire/filter-chain.conf.d/virtual-surround.conf
Small Room G (KU100) sed -i "s#config = { filename = .*wav#config = { filename = "${HOME}/.config/pipewire/hrir/Small_Room_G_KU100.wav#g" ~/.config/pipewire/filter-chain.conf.d/virtual-surround.conf
Small Room H sed -i "s#config = { filename = .*wav#config = { filename = "${HOME}/.config/pipewire/hrir/Small_Room_H.wav#g" ~/.config/pipewire/filter-chain.conf.d/virtual-surround.conf
Small Room I sed -i "s#config = { filename = .*wav#config = { filename = "${HOME}/.config/pipewire/hrir/Small_Room_I.wav#g" ~/.config/pipewire/filter-chain.conf.d/virtual-surround.conf
Small Room J (TYPE4128) sed -i "s#config = { filename = .*wav#config = { filename = "${HOME}/.config/pipewire/hrir/Small_Room_J_TYPE4128.wav#g" ~/.config/pipewire/filter-chain.conf.d/virtual-surround.conf
Small Room J (KU100) sed -i "s#config = { filename = .*wav#config = { filename = "${HOME}/.config/pipewire/hrir/Small_Room_J_KU100.wav#g" ~/.config/pipewire/filter-chain.conf.d/virtual-surround.conf
Small Room K (KEMAR-N Position 1) sed -i "s#config = { filename = .*wav#config = { filename = "${HOME}/.config/pipewire/hrir/Small_Room_K_KEMAR-N_Pos_1.wav#g" ~/.config/pipewire/filter-chain.conf.d/virtual-surround.conf
Small Room K (KEMAR-N Position 2) sed -i "s#config = { filename = .*wav#config = { filename = "${HOME}/.config/pipewire/hrir/Small_Room_K_KEMAR-N_Pos_2.wav#g" ~/.config/pipewire/filter-chain.conf.d/virtual-surround.conf
Small Room K (KEMAR-L Position 1) sed -i "s#config = { filename = .*wav#config = { filename = "${HOME}/.config/pipewire/hrir/Small_Room_K_KEMAR-L_Pos_1.wav#g" ~/.config/pipewire/filter-chain.conf.d/virtual-surround.conf
Small Room K (KEMAR-L Position 2) sed -i "s#config = { filename = .*wav#config = { filename = "${HOME}/.config/pipewire/hrir/Small_Room_K_KEMAR-L_Pos_2.wav#g" ~/.config/pipewire/filter-chain.conf.d/virtual-surround.conf
Small Room K (KU100 Position 1) sed -i "s#config = { filename = .*wav#config = { filename = "${HOME}/.config/pipewire/hrir/Small_Room_K_KU100_Pos_1.wav#g" ~/.config/pipewire/filter-chain.conf.d/virtual-surround.conf
Small Room K (KU100 Position 2) sed -i "s#config = { filename = .*wav#config = { filename = "${HOME}/.config/pipewire/hrir/Small_Room_K_KU100_Pos_2.wav#g" ~/.config/pipewire/filter-chain.conf.d/virtual-surround.conf
Coupled Rooms, RWTH Aachen University sed -i "s#config = { filename = .*wav#config = { filename = "${HOME}/.config/pipewire/hrir/Coupled_Rooms.wav#g" ~/.config/pipewire/filter-chain.conf.d/virtual-surround.conf
Room Spirit, TU Berlin (less reverberation) sed -i "s#config = { filename = .*wav#config = { filename = "${HOME}/.config/pipewire/hrir/Room_Spirit_Less_Reverb.wav#g" ~/.config/pipewire/filter-chain.conf.d/virtual-surround.conf
Room Spirit, TU Berlin (more reverberation) sed -i "s#config = { filename = .*wav#config = { filename = "${HOME}/.config/pipewire/hrir/Room_Spirit_More_Reverb.wav#g" ~/.config/pipewire/filter-chain.conf.d/virtual-surround.conf
Classroom, University of Surrey sed -i "s#config = { filename = .*wav#config = { filename = "${HOME}/.config/pipewire/hrir/Classroom.wav#g" ~/.config/pipewire/filter-chain.conf.d/virtual-surround.conf
Conference Room, TU Ilmenau (Position 1) sed -i "s#config = { filename = .*wav#config = { filename = "${HOME}/.config/pipewire/hrir/Conference_Room_Pos_1.wav#g" ~/.config/pipewire/filter-chain.conf.d/virtual-surround.conf
Conference Room, TU Ilmenau (Position 2) sed -i "s#config = { filename = .*wav#config = { filename = "${HOME}/.config/pipewire/hrir/Conference_Room_Pos_2.wav#g" ~/.config/pipewire/filter-chain.conf.d/virtual-surround.conf
Conference Room, TU Ilmenau (Position 3) sed -i "s#config = { filename = .*wav#config = { filename = "${HOME}/.config/pipewire/hrir/Conference_Room_Pos_3.wav#g" ~/.config/pipewire/filter-chain.conf.d/virtual-surround.conf
Rehabilitation Room, TU Ilmenau sed -i "s#config = { filename = .*wav#config = { filename = "${HOME}/.config/pipewire/hrir/Rehab_Room.wav#g" ~/.config/pipewire/filter-chain.conf.d/virtual-surround.conf
Seminar Room, TU Ilmenau sed -i "s#config = { filename = .*wav#config = { filename = "${HOME}/.config/pipewire/hrir/Seminar_Room_TUI.wav#g" ~/.config/pipewire/filter-chain.conf.d/virtual-surround.conf
Laboratory (Position 1) sed -i "s#config = { filename = .*wav#config = { filename = "${HOME}/.config/pipewire/hrir/Laboratory_Pos_1.wav#g" ~/.config/pipewire/filter-chain.conf.d/virtual-surround.conf
Laboratory (Position 2) sed -i "s#config = { filename = .*wav#config = { filename = "${HOME}/.config/pipewire/hrir/Laboratory_Pos_2.wav#g" ~/.config/pipewire/filter-chain.conf.d/virtual-surround.conf
Studio A sed -i "s#config = { filename = .*wav#config = { filename = "${HOME}/.config/pipewire/hrir/Studio_A.wav#g" ~/.config/pipewire/filter-chain.conf.d/virtual-surround.conf
Studio B sed -i "s#config = { filename = .*wav#config = { filename = "${HOME}/.config/pipewire/hrir/Studio_B.wav#g" ~/.config/pipewire/filter-chain.conf.d/virtual-surround.conf
TV Studio, TU Ilmenau (less reverberation) sed -i "s#config = { filename = .*wav#config = { filename = "${HOME}/.config/pipewire/hrir/TV_Studio_Less_Reverb.wav#g" ~/.config/pipewire/filter-chain.conf.d/virtual-surround.conf
TV Studio, TU Ilmenau (more reverberation) sed -i "s#config = { filename = .*wav#config = { filename = "${HOME}/.config/pipewire/hrir/TV_Studio_More_Reverb.wav#g" ~/.config/pipewire/filter-chain.conf.d/virtual-surround.conf
Room HU201, TU Ilmenau (less reverberation) sed -i "s#config = { filename = .*wav#config = { filename = "${HOME}/.config/pipewire/hrir/Room_HU201_Less_Reverb.wav#g" ~/.config/pipewire/filter-chain.conf.d/virtual-surround.conf
Room HU201, TU Ilmenau (more reverberation) sed -i "s#config = { filename = .*wav#config = { filename = "${HOME}/.config/pipewire/hrir/Room_HU201_More_Reverb.wav#g" ~/.config/pipewire/filter-chain.conf.d/virtual-surround.conf
Lecture Room sed -i "s#config = { filename = .*wav#config = { filename = "${HOME}/.config/pipewire/hrir/Lecture_Room.wav#g" ~/.config/pipewire/filter-chain.conf.d/virtual-surround.conf
Adream Laboratory, LAAS-CNRS Toulouse (less reverberation) sed -i "s#config = { filename = .*wav#config = { filename = "${HOME}/.config/pipewire/hrir/Adream_Lab_Less_Reverb.wav#g" ~/.config/pipewire/filter-chain.conf.d/virtual-surround.conf
Adream Laboratory, LAAS-CNRS Toulouse (more reverberation) sed -i "s#config = { filename = .*wav#config = { filename = "${HOME}/.config/pipewire/hrir/Adream_Lab_More_Reverb.wav#g" ~/.config/pipewire/filter-chain.conf.d/virtual-surround.conf
Room Auditorium 3, TU Berlin (less reverberation) sed -i "s#config = { filename = .*wav#config = { filename = "${HOME}/.config/pipewire/hrir/Room_Auditorium_3_Less_Reverb.wav#g" ~/.config/pipewire/filter-chain.conf.d/virtual-surround.conf
Room Auditorium 3, TU Berlin (more reverberation) sed -i "s#config = { filename = .*wav#config = { filename = "${HOME}/.config/pipewire/hrir/Room_Auditorium_3_More_Reverb.wav#g" ~/.config/pipewire/filter-chain.conf.d/virtual-surround.conf
Seminar Room, University of Surrey (less reverberation) sed -i "s#config = { filename = .*wav#config = { filename = "${HOME}/.config/pipewire/hrir/Seminar_Room_Surrey_Less_Reverb.wav#g" ~/.config/pipewire/filter-chain.conf.d/virtual-surround.conf
Seminar Room, University of Surrey (more reverberation) sed -i "s#config = { filename = .*wav#config = { filename = "${HOME}/.config/pipewire/hrir/Seminar_Room_Surrey_More_Reverb.wav#g" ~/.config/pipewire/filter-chain.conf.d/virtual-surround.conf
Small Broadcast Studio, WDR Broadcast Studios (less reverberation) sed -i "s#config = { filename = .*wav#config = { filename = "${HOME}/.config/pipewire/hrir/Small_Broadcast_Studio_Less_Reverb.wav#g" ~/.config/pipewire/filter-chain.conf.d/virtual-surround.conf
Small Broadcast Studio, WDR Broadcast Studios (more reverberation) sed -i "s#config = { filename = .*wav#config = { filename = "${HOME}/.config/pipewire/hrir/Small_Broadcast_Studio_More_Reverb.wav#g" ~/.config/pipewire/filter-chain.conf.d/virtual-surround.conf
Audio Lab, University of Rostock (without absorbers) sed -i "s#config = { filename = .*wav#config = { filename = "${HOME}/.config/pipewire/hrir/Audio_Lab_No_Absorbers.wav#g" ~/.config/pipewire/filter-chain.conf.d/virtual-surround.conf
Studio C (KU100) sed -i "s#config = { filename = .*wav#config = { filename = "${HOME}/.config/pipewire/hrir/Studio_C_KU100.wav#g" ~/.config/pipewire/filter-chain.conf.d/virtual-surround.conf
Studio C (KEMAR-L) sed -i "s#config = { filename = .*wav#config = { filename = "${HOME}/.config/pipewire/hrir/Studio_C_KEMAR-L.wav#g" ~/.config/pipewire/filter-chain.conf.d/virtual-surround.conf
Studio C (KEMAR-N) sed -i "s#config = { filename = .*wav#config = { filename = "${HOME}/.config/pipewire/hrir/Studio_C_KEMAR-N.wav#g" ~/.config/pipewire/filter-chain.conf.d/virtual-surround.conf
Studio C (TYPE4128) sed -i "s#config = { filename = .*wav#config = { filename = "${HOME}/.config/pipewire/hrir/Studio_C_TYPE4128.wav#g" ~/.config/pipewire/filter-chain.conf.d/virtual-surround.conf

Troubleshooting

Equalizer APO

  • The BRIRs, HpCFs, compatibility filters, and additional filters are sampled at 44100Hz so the sample rate of the playback device must be set to 44100Hz. The sample rate of the device must match the sample rate of the filter. The HeSuVi BRIRs are provided in both 44100Hz and 48000Hz sampling rates.

  • If your audio device does not support a 7.1 surround channel configuration, a virtual audio device such as VB-Audio Virtual Cable or Voicemeeter can be used for audio processing in place of your regular audio playback device. Equalizer APO can be installed on the virtual audio device which can be configured for 7.1 audio, and the output of the virtual audio device can be sent to your regular audio playback device.

  • Ensure that the BRIRs are at the correct relative path. The 'E-APO_Configs' folder and the 'BRIRs' folder must have the same parent folder for the files to be read by the E-APO configurations.

  • The convolution, pre-amplification, and include commands can be placed in any order.

Clipping Prevention

  • To assist with pre-amplification, the table below lists the approximate gains that the various IRs in the dataset apply to the low frequencies, which is the region where clipping is most likely to occur.
IR Approximate gain
BRIRs (2.0 configuration) +15dB
BRIRs (5.1 configuration) +24dB
BRIRs (7.1 configuration with 2.0 audio stream) +15dB
BRIRs (7.1 configuration with 7.1 audio stream) +28dB
HpCFs -6dB
In-ear headphones compatibility filter -4dB