[pulseaudio-discuss] native digital equalizer for pulseaudio submission

Jason Newton nevion at gmail.com
Thu Jul 16 23:08:51 PDT 2009


...Is what I'd like to say.  I've attached it in it's current form.
It's based of the LADSPA sink though it would seem that following a
working state, it will move to a filtering api in someone elses work.

Equalization frequencies and coefficients are specified in two arrays
and hardcoded in (the coefficients are linear,not in dB). at the moment.

But I'm having a bit of a problem.  I need a fixed amount of data before
I can process a block and pulseaudio doesn't usually like to give me
that block without dropouts and other problems as the cost.  The trouble
routine is module-equalizer-sink.c:270 sink_input_pop_cb.  The amount of
data requested each processing iteration is chosen indirectly by the
window_size parameter (hardcoded in pa__init).  The actual amount of
data is R, this is calculated right below.  This value works for my
laptop w/ mplayer and ao=pulse for some reason but not my desktop.  I
found it completely by accident and have no idea how to find others.
Suggestions are very welcomed as I'm out of ideas.

And finally, if you have hawk-eyes, I believe I have some type of
uninitialized memory read in here somewhere as there is an audible pop
from time to time, even with no frequency modification.  Seemingly random.

As for motivation:
Why do an equalizer when there's mbeq from the LADSPA?  Well, it turns
out that 1)the frequency bands  (hz) used/defined there!=frequencies we
speak of naturally.  They are proportional, however.  Also, frequencies
beyond 1024 (in mbeq's proportion hz domain) are simply not modified.  I
also believe there is an error with some of the dsp logic aside from
that but it doesn't manifest very well (in particular, the data is
windowed twice, pre-fft and post-ifft). 2)Aliasing occurs in processing
because the DFT is not sampling at a sufficient rate (should be 32khz or
44.1khz or 48khz for most of you, who has 1024hz audio??)

I also don't think it should be such a hassle to change the frequency
band coefficients and instead will be opting towards a gui so users can
see frequency modification in realtime, the only real way things like
this are tunable.

--Jason
-------------- next part --------------
A non-text attachment was scrubbed...
Name: equalizer.patch
Type: text/x-patch
Size: 31672 bytes
Desc: not available
URL: <http://lists.freedesktop.org/archives/pulseaudio-discuss/attachments/20090716/1120e8c7/attachment.bin>


More information about the pulseaudio-discuss mailing list