1. Overview

Sound equalizers are useful for a wide range of tasks, such as audio enhancements, audio processing, and accessibility. There are several sound systems available on Linux, such as ALSA, PulseAudio, and PipeWire. Therefore, the equalizers are usually tailored towards one of these specific sound systems.

In this tutorial, we’ll explore the real-time sound equalizers for the different audio frameworks. We’ll begin with ALSA (Advanced Linux Sound Architecture) and then move on to the other audio frameworks.

2. ALSA: Alsaequal

ALSA is a low-level audio framework that lets us interact with audio hardware. It provides the barebones framework for audio that directly interacts with audio hardware on kernel level. In addition, it provides the foundation for other audio frameworks like PulseAudio and Jack.

Alsaequal, on the other hand, is an equalizer plugin for ALSA that can fine-tune the audio just how we like it.

2.1. Building

We’ll simply clone the repository:

$ git clone --depth 1 https://github.com/raedwulf/alsaequal

Now, we need a few dependencies before we build the plugin:

$ sudo apt install -y libasound2-dev gcc make

Next, we’ll use the build tools to compile and install the plugin:

$ make && sudo make install

The plugin is now installed to /usr/lib/alsa-lib:

$ ls -1 /usr/lib/alsa-lib
libasound_module_ctl_equal.so
libasound_module_pcm_equal.so

2.2. Configuring

Now, let’s create the configuration file for ALSA:

$ touch ~/.asoundrc

In this file, we’ll set up the equalizer plugin:

ctl.equal {
    type equal;
}

pcm.plugequal {
    type equal;
    slave.pcm "plughw:0,0";
    sound card
}

pcm.equal {
    type plug;
    slave.pcm plugequal;
}

In the config, adjust plughw:0,0 as per the sound card. For this purpose, we use aplay:

$ aplay -l
card 0: Intel [HDA Intel], device 0: Generic Analog [Generic Analog]
  Subdevices: 1/1
  Subdevice #0: subdevice #0

Notably, the card and device parameters are 0 and 0 for both the card and the device, respectively. It may vary based on your setup.

2.3. Testing

Once the configuration is set, we’ll simply play a sound file that uses the equal ALSA device:

$ mpg123 -a equal demo-classic.mp3

We can now use the equalizer to adjust the sound for the device:

$ alsamixer -D equal

Alsaequal

That’s it! For advanced configuration, we can refer to the man page for Alsaequal.

3. PulseAudio: PulseAudio Equalizer

PulseAudio is a high-level audio system that is built on top of ALSA. It provides an easier way to manage the audio input and output for multiple applications.

PulseAudio Equalizer is a GUI application that provides equalization capabilities for PulseAudio.

3.1. Installation

By default, it’s not installed on most Linux distros. However, it’s available on most official package repositories. Therefore, we can install it through a package manager using its canonical name, pulseaudio-equalizer:

$ sudo apt install -y pulseaudio-equalizer

Once installed, there should be an entry in our application menu.

3.2. Usage

We can launch the equalizer from the application menu:

PulseAudio Equalizer

Here, we can adjust the sliders or select a preset from the dropdown. In addition, we can find many presets on the web. That is, if we look hard enough.

However, PulseAudio is on the decline because Linux distributions are adopting PipeWire, which we’re going to cover next.

4. PipeWire and PulseAudio: EasyEffects

PipeWire is a modern, flexible replacement for PulseAudio and Jack. It’s a multimedia framework that bridges various multimedia components in our system. Thereby providing a unified infrastructure.

In addition, it’s not limited to audio. It can also handle video streams like screen sharing, audio conferencing, and more. Besides, it integrates with Wayland very well. In summary, PipeWire is a game-changer.

EasyEffects is a sound equalizer for both PipeWire and PulseAudio. It provides a more comprehensive approach to adding effects to our application’s audio stream.

4.1. Installation

EasyEffects is available on most official package repositories. So, we can install it using its canonical name, easyeffects:

$ sudo apt install easyeffects -y

4.2. Usage

Once installed, we can launch it from the application menu:

EasyEffects

In the main view, we can see the list of applications that are currently playing media. Let’s add some effects to it by heading over the Effects tab:

EasyEffects: Adding Effects

In the Effects tab, we can add as many effects as we need. In addition, we can adjust the variables of these effects to our liking. On the left sidebar, we can see that we currently have three effects in use.

4.3. Presets

On the left side of the title bar, there is the Presets option. It allows us to create, select, or import presets. We can find a lot of presets on the web. For example, this repository contains very useful presets.

Let’s clone this repository and install the presets:

$ git clone --depth 1 https://github.com/JackHack96/EasyEffects-Presets

It comes with an install script to install all the presets:

$ cd EasyEffects-Presets/ && ./install.sh
Installing Bass Enhancing + Perfect EQ preset...
Installing impulse response files...
...

Once installed, these presets should be available in the presets dropdown:

EasyEffects: Presets

Here, we can press the Load button to load the respective preset.

5. Conclusion

In this article, we learned how to use sound equalizers on Linux. We explored different equalizers for different audio systems on Linux, such as ALSA, PulseAudio, and PipeWire.

In addition, we also discussed how we can add useful presets to EasyEffects in order to save time.