blog · git · desktop · images · contact & privacy · gopher


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 PulseAudio Mini EQ. 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.

screenshot