blog · git · desktop · images · contact

PulseAudio Mini EQ


– Update 2021-05-16: The final script has been renamed to pafilters. It used to be called pulseaudio-mini-eq.

My current appartment has bad acoustics. Hard walls, hard floor, no carpet. Expensive speakers are not worth it and, as my last setup eventually broke down, I decided to just buy two very cheap ones:

main speakers

They’re good enough for some basic background music or podcasts.

But … the room still has bad acoustics and now the speakers are bad, too. Uhh. Yeah.

Yes, I could buy “acoustic treatment” elements, absorbers or diffusors. Truth is, I’m too lazy for that.

I recently noticed that I can vastly improve the sound quality by reducing the mids. The audio nerds are going to hate me for this, but I’ll be honest: I actually like HiFi sound that lacks mids. I don’t find mids to be aesthetically pleasing.

So, how to apply those EQ settings? Since I’m basically forced to use PulseAudio these days, I might as well use a solution built on PA.

At first, I tried PulseEffects, but it’s heavily overpowered. Then I gave pulseaudio-equalizer-ladspa a try, a much lighter solution. Worked fine, but has some quirks. For example, it assumes you only have one output device. I have two. A dedicated USB soundcard with some dedicated speakers inside the computer case plays ratterplatter all the time. Yeah, sorry, I just like it that way. :-)

USB soundcard speakers inside case

pulseaudio-equalizer-ladspa kept moving ratterplatter to the wrong output device.

I then had a look at how it works and, sure enough, it’s actually not that complicated. It uses PA’s built-in module module-ladspa-sink to route audio through some LADSPA EQ and that’s it.

Very well, rewrote it from scratch and ended up with pafilters. It uses the same internal mechanism, but has a different UI (I found it to be very important to be able to quickly enable and disable it – I don’t want EQ when I use proper headphones) and only moves PA clients to the virtual LADSPA device if they’re currently playing on the “main” soundcard. ratterplatter is on a different device, so it won’t be touched.

Let’s see how long I’ll keep this setup.