[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