On Sat, Oct 09, 2004 at 12:57:37PM -0700, Robert Hamilton wrote:
Folks,
I'm trying to find an application that will allow me to break up a
single-input audio signal into eight to ten separately bandpass-filtered
outputs. I need to do this in real-time (low latency). It would also be
nice to be able to perform other processes on each output, such as
limiting, clipping or compressing. Preferably the application would also
work with the "Jack Audio Connection Kit." I know it's a tall order.
I'm running the RedHat 9, Planet CCRMA distribution.
I've been searching for something for some time, but haven't found
anything yet that quite fills the bill. So, I've come to the experts! Any
suggestions?
As Dave already suggested, ecasound can do this quite well. A
commandline might look something like this:
ecasound -a:1,2,3,4,5,6,7,8 -i:jack_alsa \
-a:1 -o:band1.wav \
-a:2 -o:band2.wav \
-a:3 -o:band3.wav \
-a:4 -o:band4.wav \
-a:5 -o:band5.wav \
-a:6 -o:band6.wav \
-a:7 -o:band7.wav \
-a:8 -o:band8.wav \
-a:1 -efl:<cutoff-freq> \
-a:2 -efb:<center>,<width> \
-a:3 -efb:<center>,<width> \
-a:4 -efb:<center>,<width> \
-a:5 -efb:<center>,<width> \
-a:6 -efb:<center>,<width> \
-a:7 -efb:<center>,<width> \
-a:8 -efh:<cutoff-freq>
-create 8 chains, 1-8, with jack used as input for each.
-assign output individually for each of the eight chains to its own
file. These could be output to jack instead if desired.
-add a filter to each chain: -efl is a lowpass filer, -efb a bandpass
and -efh a high pass.
Any additional effects per chain would be tacked on to the end of the
line for each filter band. If you so desire the parameters of the
effects can be controlled via midi CC, arbitrary envelopes or
oscillators. If you are not pleased with ecasound's builtin filters you
can easily use any LADSPA filter instead. If the commandline becomes too
cumbersome the settup can be stored and edited in a .ecs (ecasound chain
settup) file. There is also an interactive ncurses console interface
based on the ECI (ecasound control interface). ECI itself can be
scripted from C, C++, python, perl, ruby, php and emacs-lisp.
The ecasound documentation is included with the package and available
online here:
http://www.wakkanet.fi/~kaiv/ecasound/Documentation/
Hope that helps,
Eric Rz.