2013/3/27 Justin Chudgar <justin at justinzane.com>: > https://github.com/justinzane/pulseaudio/blob/master/src/modules/module-lfe-lp.c > > First, thanks to both of you for helping me get this far. I've got a mostly > correct (I think) filter setup based on Alexander's feedback. Now I'm trying to > get rewind buffering done. I've read the wiki page that Tanu sent and I've been > talking to ohsix on IRC. Sorry, this does not look like an LR-4 filter. For each channel, you need to make both a twice-lowpass-filtered and twice-highpass-filtered version, but you make only one of the filtered versions. Also, this is wrong: lp = biquad(&(u->lpdt[chan_idx]), *(u->lpfs), cur_sample); *dst_sample = biquad(&(u->lpdt[chan_idx]), *(u->lpfs), &lp); You are passing two samples through the same biquad, while you need to have two biquads and pass the output sample from the first one to the second one. I repeat: 1. Lowpass-filter each channel twice. 2. Highpass-filter each channel twice. 3. Combine the 2N outputs obtained at steps 1 and 2, as needed. Note that at no moment you need an explicitly-constructed allpass biquad filter. -- Alexander E. Patrakov