Unleash the potential of your headphones/speakers (ft. Linux & Easy Effects)
Prologue
Have you ever wondered why MacBook speakers sound so much better than those in other laptops, especially compared to the speakers of the 16-inch MacBook Pro with Apple Silicon? If you haven’t had a chance to hear them yet, my personal experience has been nothing but outrage at traditional laptop makers, as the speakers of the 16-inch MacBook Pro made other laptops feel irrelevant.
In the past, when I was evaluating my options for a new laptop, I thought about running Linux on an old(er) MacBook. I gave it a shot, and I immediately noticed how terrible the speakers sounded as soon as I booted from a live USB. I was confused — why do they sound so much worse than on macOS? That’s when I fell into the rabbit hole of audio effects.
Fast forward to today, Apple’s “black speaker magic” has largely been solved for me. Instead of routing the audio directly to the speakers like other laptops (and computers in general) do, macOS applies numerous digital effects under the hood before routing the digital audio stream to the DAC (Digital-to-Analog Converter). There is no denying that MacBook speakers are the best in their market, but software is precisely what sets MacBooks apart from other laptops. So let’s achieve the same on Linux!
The Effects
I applied the same strategy Apple used with its speakers on quite a few devices so far, starting from something simple, like laptop speakers, and ending with a car’s sound system. So far, I have seen significant improvements in everything I’ve applied it to; in some instances, the improvements were so game-changing that I cannot even imagine listening to anything without my precious effects — my Linux laptop and my expensive headphones are among those.
So far, the main effects for me have been (in order of importance):
- Bass Enhancer plugin from the Calf Studio Gear plugin suite — does magic no EQ can do.
- Equalizer (EQ) (any will work) — obviously.
- Loudness Compensator Stereo plugin from Linux Studio Plugins (LSP) — softens the sound and helps avoid clipping.
It may not sound like much, but the difference these three plugins can deliver is huge.
This guide will teach you how to set up this stack. While it may sound great “out of the box”, keep in mind that some manual tuning will be necessary to fine-tune it to your ears and to accommodate your specific hardware setup.
Meet Easy Effects
For a regular Linux user box, the easiest (and probably the best) way to set up some effects is through Easy Effects, a GUI app that works with PipeWire (previously with PulseAudio as PulseEffects, deprecated as of now). This does assume that you are running PipeWire, and if you are on PulseAudio, consider switching, as there is little to no reason not to switch.
Here’s how it looks:

You can install Easy Effects (and the necessary packages for the plugins we’re going to use) through your distribution’s package manager:
Arch Linux
pacman -S easyeffects calf lsp-plugins
Ubuntu/Debian
apt install easyeffects calf-plugins lsp-plugins
Fedora
dnf install easyeffects calf lsp-plugins
Other ways
See this Easy Effects wiki page for other platforms.
I advise against installing Easy Effects through Flatpak or any other similar sandboxed app platforms, since it’s a low-level tool that interacts closely with Pipewire; expect issues otherwise.
Configuring Easy Effects
Open Easy Effects through your launcher or by typing easyeffects into the terminal. You will be greeted with a window like this:

Adding and configuring effects
Order matters!
Loudness
The first effect in our chain is going to be Loudness Compensator Stereo from the Linux Studio Plugins suite. To add it, go to the Effects tab, press the Add Effect button and look for Loudness in the list:

Select Loudness:

Once you have it selected, you should see the following screen:

Now to the configuration: I suggest using -10 as the starting point for Output Volume. Raise it if the resulting volume is too low, but only if the audio is indeed too quiet. The purpose of this plugin is to take advantage of the headroom and the low-volume precision of your output device, smoothing the audio and giving it a “soft” feel.
Set the FFT Size to 256 (the lowest) to avoid the latency introduced by this effect; otherwise expect a continuous delay of about 100-200ms (fine for media but unwanted for real-time use). As far as I can tell, there is practically no delay at the FFT Size of 256 and no difference in the sound when compared to the default of 4096.

Bass Enhancer
This is perhaps the most powerful plugin one could use to enhance audio. For Bass Enhancer, the configuration will vary a lot depending on the depth of the bass in your speakers/headphones. I should note that Bass Enhancer is different from simply turning the bass up in the EQ; instead, this plugin adds things called “harmonics” to the sound that make the bass deeper without amplifying it.
I’m a user of electrostatic headphones, the type of headphones that are notorious for their shallow bass. If left untreated, the bass sounds pathetic; the good news is — Bass Enhancer can fix it.
If your output device is as terrible at bass as mine is, I recommend starting with something less conservative like 9.5 for Harmonics, 1.0 dB for Amount, and 175 Hz for Scope.
Harmonics and Amount specify the amount of harmonics to be added to the sound, but I am not sure what the difference between the two is; the documentation states the same for both.
Scope sets the plugin’s upper frequency; 175 Hz has always been the sweet spot for me.

Equalizer
EQ is the plugin you will spend the most time in — not because it’s hard to use but because there are just so many knobs to move.
Easy Effects has its Equalizer plugin that provides a generic EQ.
I recommend settling on 12 bands as opposed to the default 32, as the latter is a little too much. Don’t forget to hit Calculate Frequencies to recalculate the band frequencies after changing the number of bands.
Once the bands are set, you can start experimenting with moving the band knobs. Do not move any knobs above 0 dB as doing so will result in degraded audio quality and clipping. Only move the knobs down.
Since the bass is handled by Bass Enhancer, your area of interest is generally non-bass frequencies (i.e., >250 Hz).

Some Tests
Here are some of the results I was able to achieve using this setup.
Each audio track consists of three cycles, from ON to OFF to ON again.
My electrostatic headphones
Pardon the poor seal; this is about as good as I could have made it without actually wearing the headphones.
Config used:
[Loudness]
FFT Size = 256
Output Volume = -10
[Bass Enhancer]
Amount = 1.0 dB
Harmonics = 9.5
Scope = 175 Hz
[Equalizer]
# Bands not specified are set to the default value of 0 dB.
Bands = 12
1.6 kHz Band = -1.61
2.8 kHz Band = -3.22
4.9 kHz Band = -2.96
8.8 kHz Band = -1.75
Recording:
My Linux laptop
Since those are speakers, the result is most obvious here.
Config used:
[Loudness]
Output Volume = -15
[Bass Enhancer]
Amount = 3.5 dB
Harmonics = 10
Scope = 175 Hz
[Equalizer]
# Bands not specified are set to the default value of 0 dB.
Bands = 16
220 Hz Band = -0.71
339 Hz Band = -7.49
522 Hz Band = -9.62
803 Hz Band = -10.34
1.2 kHz Band = -9.98
1.9 kHz Band = -6.77
2.9 kHz Band = -3.92
4.5 kHz Band = -6.59
7.0 kHz Band = -11.05
10.7 kHz Band = -10.17
16.5 kHz Band = -9.18
Recording:
Outro
That’s it! The effects will work in the background as long as the Easy Effects process is not terminated; note that closing the window does not terminate it. To terminate Easy Effects, use Ctrl+Q on an Easy Effects window. If you want to temporarily disable (bypass) all the effects, use the circle-arrow-shaped button in the top left corner of the Easy Effects window.
Once I discovered Easy Effects and tuned my audio devices with it, I never looked back. I sometimes can’t believe how unpopular it is, given the tremendous gains in audio quality.
Overall, I hope you found this useful.
Note: See Licensing Information for the sample track’s license.