On Mon, 27 Jun 2005 14:24:36 +0000 GMT "Chris Cannam" <[EMAIL PROTECTED]> wrote:
> Florian Schmidt: > > P.S.: I am also currently working on a qt app which > > uses libconvolve > > Any interest in making a DSSI plugin? There are some problems with wrapping partitioned convolution into a ladspa/dssi. One of them is that ladspa/dssi do not garantee a chunk size in which the processing needs to be done. Partitioned convolution, like many other fft based algos operates with a fixed chunk size. It basically looks like this: 0] initialization phase ("loading a response file"): split the response file into chunks. zero pad them and fft them. store the fft'ed chunks somewhere.. then for every chunk of audio: 1] zero pad and fft the input chunk 2] store the fft'ed chunk in a ringbuffer (which has space for as many chunks as the response has, too) 3] multiply the fft'ed input chunks from the input ringbuffer to the corresponding fft'ed response chunks and add all these. 4] ifft the result from step 3] 5] save overlap, add previous overlap So, the partition/chunk size is determined in the initialization phase and all processing later on happens in chunks of this size. Now ladspa/dssi make no garantees about the buffer size with which the processing is done. Thus there would need to be done some extra buffering. But to distribute the load (assuming partition size is bigger than ladspa/dssi processing size) it would be nessecary to either a] split the above algorithm into pieces (which is rather difficult due to the different phases each depending on the result of the previous phase) b] use threading Both methods are kinda ugly or work intensive. Another reason is that it is impossible to dynamically change the number of input/output ports of a ladspa/dssi which would restrict the loadable responses to stereo files if the ladspa/dssi has i.e. two outputs. this would then require seperate versions for different channel counts. All in all and as i am an energy saver (mostly my own though) i will refrain from implementing a ladspa/dssi plugin. libconvolve isn't soo hard to use though, so someone else might give it a shot. Contact me though. The api might still change abit in the future (as i'm adding/removing experimental features like for example looped responses). After a discussion with Mario Lang i think i will OSC'ify jack_convolve though and make the qt gui only an OSC controller for jack_convolve. Flo -- Palimm Palimm! http://affenbande.org/~tapas/