GPD Pocket 4 Speaker DSP: Configuring PipeWire so laptop speakers sound better

zdw | 258 points

Huh, I didn't realize pipewire had builtin support for this! I've been using a different piece of software called Easy Effects[1] on my framework laptop.

To equalize my laptop, I ended up buying a umik-1, and using REW to calculate all the filter coefficients (you can import REW's filter export right into Easy Effects). It's a subtle difference at first, but it's much cleaner (I also usually have a compressor and loudness effect enabled, as the framework speakers are pretty quiet).

[1] https://github.com/wwmm/easyeffects

smj-edison | 4 days ago

I couldn't find any mentions of what audio codec it uses in an initial search, but I see "HD Audio" and other sources online say it's a Realtek, so this seems to be a standard Intel HD Audio codec. What's lesser-known is that most if not all of them have a built-in EQ function which can be used to accomplish this (and perhaps the original vendor's Windows drivers already do), but it's not well-documented. Linux has some code for that too (search for EQ in here):

https://raw.githubusercontent.com/torvalds/linux/master/soun...

userbinator | 4 days ago

Ho wow, the sample video shows incredible results, I'd love to read more about how to configure it with my own laptop and microphone. Settings ought to be different for each laptop model, right ?

ahub | 4 days ago

FYI, when attempting to apply this to speakers, the anechoic frequency response is required. If you try to equalize for flat-in-room response, the results are terrible. See this video[1] for loads more information and context.

[1] https://www.youtube.com/watch?v=zrpUDuUtxPM

Humbly8967 | 4 days ago

On an old MBP I have a similar setup with these two tools:

- https://ju-x.com/hostingau.html

- https://existential.audio/blackhole/

Default output for applications is set to BlackHole's virtual sound device which the "Ext-In / Track D" channel can pick up in Hosting AU as an input. An "AUDynamicsProcessor" and "AUGraphicEQ" stage later (both built-in macOS units) it is sent back to the real output device.

rzzzt | 4 days ago

Impulse response is sort of overkill here. If you design a filter bank in the first place, you can just implement that filter bank much cheaper than doing even an FFT-based convolution. Convolution is useful when you don't know the underlying filter transfer function.

thrtythreeforty | 4 days ago

What kills me is that I'm going to have to learn half of the skills to do this sort of thing just to reverse one PC's stereo channels. (Though in all fairness maybe it only seems complicated because this is my first contact with Suse/Tumbleweed.)

Glyptodon | 4 days ago

Under windows https://sourceforge.net/projects/equalizerapo/

>Equalizer APO can be used in conjunction with Room EQ Wizard (http://www.roomeqwizard.com/), because it can read its filter text file format.

rasz | 4 days ago

Can you similarly process the laptop microphone input so it sounds better?

abdullahkhalids | 4 days ago

I've been in this endeavor with Surface Book 2. While the results where good, the CPU usage for software DSP killed the entire effort. Microsoft is using intel's DSP accelerator to do this. While linux technically can use intel's audio DSP I never had enough time to dig into it

grandrew | 4 days ago

One can do similar things with JamesDSP on Android. I believe there are ways to do it without root nowadays. Also you'd be able to find flattening eq curves for your headphone on GitHub and other places. I'll find the link if anybody is interested. This fixes artificially bass heavy headphones pretty well.

dizhn | 4 days ago

What a rollercoaster, not having heard of the GPD Pocket 4 before now, I went through:

- cool!

- oh but there's no way this isn't hard and somewhat manual, something to tune

- wait what, end of blog, that's it, just install a package?

- oh no this is the Asahi announcement, so it's Mac only? [follows link to GitHub]

- no! This is separate, it really is just install a package!

- oh, hang on, GPD Pocket 4 is the laptop shown in image, it's for that only

No slight against the author, nothing wrong with that, just a rollercoaster to follow!

Is there any technical reason it couldn't be generic though? Surely environment has almost as much impact as the hardware anyway, wouldn't you ideally have it sample and adjust every so often on a systemd timer or whatever?

OJFord | 4 days ago

What are the exact steps to repeat this on my own laptop?

Surely, I don't use the wav files for their laptop for mine.

abdullahkhalids | 4 days ago

Great to see people using GPD Pocket, it is a nifty little laptop, I am impressed with each new version of it. There are few options for very small and portable devices that have a keyboard, and I find it pretty cool.

a1o | 4 days ago

I wonder what the latency is. FIR needs quite some time in the lower frequencies.

MrBuddyCasino | 4 days ago

The title really needs to mention Linux, as this is a solved problem in the OSs used by the majority of people. (Including developers [0] before anyone comments that this is HN).

[0] https://www.statista.com/statistics/1482210/os-distribution-...

scoot | 4 days ago

I'm thorn between GPD P4 and a Macbook Air for a travel laptop. How good is its battery life?

adamfaliq42 | 4 days ago

FxSound made a huge difference in changing my GPD Win Max 2's speakers from unusably bad to average.

causality0 | 4 days ago

Any input on how to do similar speaker profiling inside Windows 11?

mycall | 4 days ago

I wonder if this is part of what System76 does with their computers

trelane | 4 days ago

Wim Taymans is the man!

throwaway1482 | 4 days ago

[dead]

machaodev | 4 days ago

MBV recorded Loveless w/ two tube amps, face to face to mimic Spector's wall of sound. No effect or pedals. When recording BT over DAW, like in Reverb,.wav/REW audio delay files correct external post-installation drivers.

unit149 | 4 days ago

[dead]

curtisszmania | 3 days ago