PipeWire Loudness Normalisation

Setting up Loudness Normalisation / Equalisation for PipeWire when you're watching your favourite Youtube influencer!

One of the biggest features of Pop!_OS 22.04 LTS I’ve been waiting for is the native integration of PipeWire for audio processing. This brings a host of new low-latency graph based audio processing opportunities with sandboxing support (so you can run it from Flatpak).

This guide is a quick rundown on setting up Loudness Normalisation / Equalisation or Audio Normalisation for Linux (and in particular Pop!_OS but can by applied to any distro) which will help manage those annoying volume differences when you’re watching various content.

PipeWire Bling with EasyEffects

Install EasyEffects

Install EasyEffects which allows you to manipulate your PipeWire configuration easily and autoload on startup and save your configurations as profiles.

flatpak install flathub com.github.wwmm.easyeffects

Once EasyEffects is installed, you can use the amazing EasyEffects Presets for Loudness Equalization from Guisy Digital by copying it to your output folder in EasyEffects.

Setup EasyEffect Preset

If you’ve installed EasyEffects via Flatpak as above, the path to the output folder is:

PRESET_PATH=~/.var/app/com.github.wwmm.easyeffects/config/easyeffects/output

Otherwise, your path will be:

PRESET_PATH=~/.config/easyeffects/output

You can then grab the normalisation profile and place it into the output folder:

PRESET_REPO=https://raw.githubusercontent.com/Digitalone1/EasyEffects-Presets/master/LoudnessEqualizer.json
curl "$PRESET_REPO" --output $PRESET_PATH --silent

There’s also a fully automated way via my dotFiles repo, in particular just the setup-loudness-equalisation.sh script which detects the install path and pulls in the latest preset from the repository.

Configure PipeWire with EasyEffects

Next we have to configure EasyEffects to load the preset and do some configuration changes so the profile persists.

Enable EasyEffects on Startup

Hit the hamburger menu on the right and goto your Preferences.

PipeWire Preferences
Figure 1. PipeWire Preferences

Then make sure that ‘Start Service at Login’ is enabled and close Preferences.

Load the Profile Preset

Next, in the ‘Output’ area, find the ‘Presets’ drop down on the left and select ‘Loudness Equalizer’ and hit Load. You can verify this was loaded correctly by going to the Effects tab at the bottom and you should get a list of Effects loaded like below:

PipeWire Preset loaded with Loudness Equalizer preset Effects.
Figure 2. PipeWire Preset loaded with Loudness Equalizer preset Effects.

Set Preset To Load at Startup

Next we want this preset to load at startup, head over to the PipeWire section and click ‘Presets Autoloading’ setting.

Here you’ll be presented with two drop downs, first is a list of your audio output devices and the other are your presets. Select the relevant audio device you want to wire up and make sure you select the ‘Loudness Equalizer’ profile to load with it, then hit the PLUS icon to add it to the list below.

PipeWire Autoload Preset for my two audio devices.
Figure 3. PipeWire Autoload Preset for my two audio devices.

For my system, (with a Ryzen 5700G & the Dell U3421WE Monitor) I have only configured to normalise my main audio output and the audio via HDMI sent to my monitor.

And that’s it, you can give it ago with various audio content.

Installing Cadence & Catia

To take things a step further and see how your audio pipeline now works, you can install Cadence and Catia tools from KX Studio to visualise things.

First setup the repository as per KXStudio Repositories setup guide with the latest package file.

$ sudo apt install cadence carla

There are some awesome audio applications from KX Studios to check out too.

Related Articles