EasyEffects should be part of every Linux distribution to improve laptop speaker sound quality
61 points by hawski
61 points by hawski
EasyEffects is also a great way to run custom equalisers, e.g. from the AutoEq website, which I can definitely recommend for all headphone users.
It also provides an easy interface for Linux Studio Plugins while even allowing interaction through the native UI.
remotely related:
Feel like it should be a one time profile loading into pipewire instead of a gtk gui
EasyEffects are Qt/Kirigami since 8.0
I'd uninstalled it already before then, but that would have been a blocker for me. All my apps are GTK. I'd been using it for mic audio cleanup, but I use rnnoise directly now.
Damn so applying a basic EQ profile requires dragging in all of Qt and the KDE frameworks? That sucks.
No, applying a basic EQ with EasyEffects requires that.
Pipewire has a parametric equalizer function: https://docs.pipewire.org/page_module_parametric_equalizer.html
Or you can bring in a LADSPA module. Or you can apply equalization at the application level -- shairport-sync, or music-on-console, or...
Depends how you use it. If you want to apply EQ to your headphones and mic - sure. I appreciate a switch between "conference call with terrible Bluetooth mics" and "listening to music" presets.
If it is just to one time tune your laptop speakers I'd agree. I also use it for headphones and it is nice to be able to easily switch EQ profiles.
And EasyEffects offers a lot more in regards to audio filtering both on the input and output side than just EQing.
For example, my audio interface uses a stereo signal for the input but only one side has signal as it is a combined input for XLR and 1/4. Most applications handle that fine but some applications like discord do some weird stuff where with a stereo input they average the noise level for both sides into one mono signal. Which cuts the volume in half. With EasyEffects in between I let it handle the mixing in a sane way so that other people can hear me.
I also have filters for audio calls with certain people to protect my hearing and/or reduce noise coming from crappy microphones.
Yeah. Ideally one would bring laptop close to a PC with decent speakers, play sine wave sweep on the speakers at a distance the software on the laptop says is good going by 4kHz tone. Then the microphone curve would be calibrated against the big speakers we'd assume are roughly flat. Then the laptop's built-in speakers would be calibrated against the built-in speaker. None of this would need extra hardware. One could even plug the laptop to TV and use its speakers over HDMI to get at least some calibration.
None of this will be perfect nor exact, but it will be enough to compensate for the low-frequency cutoff and the self-resonance hump and that's sufficient. See the datasheet curve for a random speaker.
But honestly, you cannot do much about the low-frequency cutoff. The speakers are just too small. You can lower the overall volume to bring the mids and highs closer to the lows and that would help quality. But it will be significantly quieter.
Now, obviously, having profiles for the speakers in some DB people would contribute towards would be ideal. But that might mean having a set of well-known calibration speakers and/or microphones to bootstrap from. Those don't have to have good curves, just consistent, well-known ones. Seeding from e.g. mobile phones might work decently if someone maps their curves in a lab or against a shared reference.
I did the same with my recent Framework 13 Pro purchase, using an equalizer that I found in Reddit: https://www.reddit.com/r/framework/comments/1vbhb3y/fw_13_pro_linux_users_heres_an_easyeffects/.
It greatly improves the sound and makes the speakers good. Still not MacBook Pro levels of quality (but maybe this is not a fair comparison, my MacBook Pro is a 16" that has much more space for speakers).
Are you otherwise happy with that laptop?
I am really happy with the purchase, probably the best laptop I ever had running Linux. Everything just worked (disclaimer: I went directly to Linux 7.2, not sure how the hardware behaves with earlier kernels), including things like Secure Boot and the Fingerprint scanner. Also the hardware quality is fantastic, the screen and haptic touchpad is probably the best I ever saw in a laptop that is not made by Apple, the keyboard is second only behind my ThinkPad, the battery life is good and the things is really fast.
The only 2 things that I am kinda disappointed is the aforementioned speakers (but again, they sound much better with EasyEffects tuning) and that the material from body seem to absorb sweat and fingerprints too well. I just bought some DBrand skins since I want this laptop to stay with me for a long time. It is really that good.
I recently got a second hand Lenovo X1 Yoga Gen 6. Installed Ubuntu on it, and the sound is super tinny and quiet. It has top speakers (on both sides of the keyboard) and bottom speakers (on the bottom side, under the palm rest). Only the top speakers seem to emit any sound. When I found Easy Effects and ready-made presets I thought gotcha!, but the sound didn't improve. Sadly I didn't test on Windows before installing Ubuntu, perhaps the bottom speakers are physically damaged.
Sounds like the same problem I had with my Lenovo Yoga c930. The LFE bottom speakers don't have a working driver in Linux, and without Lenovo providing support or a skilled reverse-engineer, there's little hope of future improvement. (https://bugzilla.kernel.org/show_bug.cgi?id=203409)
I had the same issue on an old Lenovo Y50-70. The bottom speaker (which was a subwoofer I think) didn't work.
If this is an AMD platform, be sure to have the Cirrus firmware. If this is an Intel platform, you need to install the SOF firmware. Both of them are available for Debian/Ubuntu but are not in main. Unfortunately, hardware offloads more and more to software and features are disabled when some pieces are missing.
I appreciate the comments here and on OSNews about the CPU usage of Easy Effects (not sure why it's written "EasyEffects" in so many places, but the official source repo says "Easy Effects"). Someone on OSNews pointed to this as a lighter alternative that I plan to try out:
https://github.com/Audio4Linux/JDSP4Linux
Thom's call to integrate this into GNOME and KDE doesn't have to look like preinstalling Easy Effects itself. I think the idea is that the ability to easily add/enable audio effects could be integrated into their respective audio settings so you don't need a separate application. Essentially, it will be nice if these desktop environments expose more of what PipeWire is capable of and then Easy Effects will be available for people using other setups.
Putting EasyEffects on a NUC I had made the audio crackle and skip like when there is too much CPU load. This was with no effects loaded. So, maybe you'd have to test it a lot or try to make it transparent, robust in the face of sound cards and connections, latency-free, side-effect free. Seems tough.
There are a few knobs you can turn in that situation, but as a plain passthru it really shouldn't be a problem. If you're interested in solving that, pipewire project is very responsive to bug reports and trying to make things "just work". But check https://wiki.archlinux.org/title/PipeWire/Troubleshooting as well.
TIL about EasyEffects. Just installed it on my Debian 13 Desktop. Love it! Had to install these effects https://github.com/JackHack96/EasyEffects-Presets. The Laptop effect worked very well with my cheap monitor speaker.