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

https://news.ycombinator.com/rss Hits: 23
Summary

GPD Pocket 4 Speaker DSPConfiguring PipeWire to make laptop speakers sound better (Bankstown, Convolution/FIR, etc.)ResultMotivationModern speakers require a lot of DSP magic to sound as good as they do.Speakers traditionally needed to be built very carefully to achieve a very flat frequency response and as few artifacts as possible.These days, many mobile devices like phones, laptops, etc. do a lot of digital signal processing in software in order to make tiny speakers output a lot of sound.Many different tricks are used, such as psycho-acoustic bass enhancement, limiters (allowing for higher power peaks) and volume-dependent equalization (frequency response of human hearing is very volume-dependent).The Asahi Linux project (Linux on Apple Silicon MacBooks) has done a lot of work to make MacBooks sound as good as possible on Linux:AsahiLinux/asahi-audio: Userspace audio for Asahi LinuxHow?Using Room EQ Wizard the frequency/impulse response of the built-in speakers was measured.Even with very suboptimal measurement equipment (cheap microphone, questionable audio interface), we can clearly see the sloped bass response (expected with speakers of this size) and then also a very noticeable peak/resonance at ~4kHz.This peak is very audible and leads to a harsh, distorted sound when listening to music.REW can do arithmetic operations on the curves, so after generating a filter curve for a 300Hz slope, both channels were divided (A/B) against that curve and then inverted (1/A) and exported as a .wav impulse response.That impulse response .wav file can then be used in a convolution DSP filter.The DSP configuration/pipeline of a 14" MacBook Pro was then used as a template, the multi-speaker setup (modern MacBooks have 6 speakers!) was stripped-down to just a single stereo pair and the parameters were changed a bit.The impulse response .wav was (of course) replaced with our newly generated REW output.Links

First seen: 2025-04-09 18:38

Last seen: 2025-04-10 16:45