On Sat, 29 Jan 2005 18:20:02 +0100
Florian Schmidt <mista.tapas(a)gmx.net> wrote:
Btw: All help appreciated. So if anyone wants to join
in, feel free
Hi,
Ok, i reworked the code as library (reimplemented in C, too, instead of
C++). It _should_ support several response files each providing one
input channel (only tested with a single repsonse file yet). Each
response file must have the same number of channels. The number of
channels determines how many output channels you get. These outputs
carry the output of each convolution mixed together (that's the reason
why each response file must have the same channel count). If you need to
convolve response files with different channel counts or need each the
channels of each convoluted output seperatly, just use multiple
different convolutions (the library should allow that, not yet tested).
I decided to incorporate the special (though rather common) case of all
response files having the same channel count and their output mixed
since it saves some cycles.
I decided against implementing a decoupling of the process size from the
partition size in the library, as there exist various approaches and it
is better left to the user to choose one that suites him. I don't know
yet if i'll add it to the jack cli client. we'll see.
The jack_convolve command line client in the current tarball is heavily
broken, but the convolvetest program kinda took its place.. It has even
less error checking than the original jack_convolve client (segfaults if
no filename is specified for example ;).. It seems though it has become
a little bit more cpu friendly (0.8s stereo response file at 10 - 12%
dsp load on my 1.2ghz athlon box with 2048 buffer size. around 33% with
512 frames), so it actually starts to get quite usable.
So if anyone wants to wrap it in DSSI, go ahead :) I'll keep on
improving the jack cli client (loading multiple responses, libsamplerate
support).
http://www.affenbande.org/~tapas/jack_convolve/jack_convolve-0.0.3.tgz
The interface consists of 3 api calls :)
convolution_init(...) // initialize, pass repsonses to it, etc..
convolution_process // process one chunk of audio
convolution_destroy // clean up (not implemented yet)
I will have to do some cleaning up, etc.. but if you want to try it with
some of your response files, go ahead and let me know how it works for
you..
Flo
--
Palimm Palimm!
http://affenbande.org/~tapas/