Hi, I'd like to try my hand at implementing a good equalizer at either
the alsalib or alsadriver level, so that all my programs (not just xmms)
are properly equalized.  By 'good' I mean: 16+ bands, ~10hz transition
widths, 32-bit internal precision or better, like shibatch's equalizer
(http://shibatch.sourceforge.net/) which is used to good effect in
foobar2000 on windows.

There are several ways to go about this, and I'm not really sure of the
best one. I hope some of you have some thoughts you could contribute on
the matter.

1) Implement the equ as an as10k1 dsp program and reload it whenever
I want to tweak the equalizer. This is probably the only way to
implement the equalizer so that it utilizes my sblive's hardware mixing
capabilities. However it obviously won't work once I get a better
sound card, the filter size I can implement is quite limited
(1k data size so 200 taps at most is feasible - that's far, far
too little for transition widths on the order of 10hz), there's 
not enough internal precision to reasonably attempt an IIR filter,
and no released method for actually LOADING an as10k1-compiled .bin
file currently exists.

2) Implement the equ as a LADSPA plugin, and use a 'ladspa' plugin type
in .asoundrc to load it.  This is by far the most flexible of these
solutions. As I understand the alsalib architecture though, the plugin
would be applied to the data in userspace, so I'm concerned about
latency issues.  Additionally I've spend a few hours getting the
.asoundrc ladspa plugin to work at all, with no success; it appears to
be unmaintained since 2001. I'm not sure how to get this working with
OSS programs.

3) Implement the equ in kernel mode right before the sound data is
passed to the card. This is, of course, an ungodly hack, as I don't
see an existing interface to do this sort of thing. The equalizer
would need to either be linked in statically to snd-pcm, or an
infrastructure would be created to allow other modules to insert
themselves into the processing chain (thus making it less of a hack). 
I'm leaning towards the former. :)


Ideally I could write this so that only the post-mixed sound is
equalized, but if the hardware mixer output isn't exposed to us then
that's not really possible (unless I use dmix, which I don't want to
do). If I keep the CPU usage down then I don't think this is an issue.

Any comments gladly welcome.

-- 
Rich Tollerton <[EMAIL PROTECTED]>


-------------------------------------------------------
This SF.net email is sponsored by: eBay
Get office equipment for less on eBay!
http://adfarm.mediaplex.com/ad/ck/711-11697-6916-5
_______________________________________________
Alsa-devel mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/alsa-devel

Reply via email to