On Sat, 29 Jan 2005 18:20:02 +0100 Florian Schmidt <[EMAIL PROTECTED]> 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/