[pulseaudio-discuss] New Module: module-lfe-lp

Alexander E. Patrakov patrakov at gmail.com
Tue Mar 19 10:19:10 PDT 2013

[I still have not verified the filter, sorry]

2013/3/19 Justin Chudgar <justin at justinzane.com>:
> I've created a module to ensure that only low frequencies are sent to devices
> at the end of an "lfe"/"subwoofer" channel. This module allows the user to
> select the master channel, the low pass cutoff frequency (aka corner freq, -3dB
> freq) and the number of filter poles.

There is a problem with rewinds. You seem to completely reset the
filter on any rewind. The expected idea is that PulseAudio tells your
module this: "please forget that I just sent you X milliseconds of
audio", with the intention to send different audio in order to account
for a (failed e.g. due to a new event sound) speculative mix-ahead. X
milliseconds ago, your filter had non-zeros in monopole_data and
biquad_data, and you are completely zeroing that out. "Click!"

I'm afraid that, with any IIR filter, you either have to say "rewinds
are not supported at all", or store the full history of monopole_data
and biquad_data for the duration of the maximum possible rewind.

Also I don't think that bqdt initialization is correct. You are
declaring the structure on-stack in pa__init() and then assigning the
address of that on-stack structure to the fields of a long-living
userdata object.

Alexander E. Patrakov

More information about the pulseaudio-discuss mailing list