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
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:
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:
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:
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:
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.