MultiChannel Convolution for long IRs

Hi there,
We are searching for someone to code a Multichannel Convolution Engine. Alternatively, if someone can point me to a good library it could work as well. The IRs are up to 4 s long and recorded in 5.0.
Thanks!

Edit: The engine should run in a plugin in real-time

To get a delay free convolution you’ll need to run at least 2 FFTs in different threads plus a standard time domain convolution to prevent the delay. For multiple channels you’ll be using up a lot of CPU. I don’t think there’s an off the shelf solution, it’s been a while since I looked TBH.

You don’t necessarily need several threads, also you don’t need standard time domain convolution. See JUCE’s implementation of the uniformly-partitioned convolution.

However, for such long IRs, a non-uniformly partitioned convolution is necessary, which makes use of different partition-sizes (gardener scheme) and several threads to become efficient.
See also: Convolution Reverb - #2 by danielrudrich

I‘m aware of all that. Interesting that no one has done this yet and that there is no library around. That Gardener paper has been around for ages.

I think the patent makes people a little nervous(!). Even though it’s quite specific.
I’ve heard the patent was dropped, but I can’t be sure without looking further into it, sorry.

For long IRs I found that I needed a small 128 or 256 size time domain section just to fill the gap before the first FFT came back. It was the conclusion of a long struggle with generic CPU a few years ago.

I could live with a latency of FFTSize samp actually.

I’m aware that Overloud does something similar with their REmatrix, check if that may be what you are looking for:

I did started to work on partioned convolution back in 2015 during a univerity project. But never really finished the library.


So far I rememeber it correctly it would be possible to support uniform partioned convolution with minor adaptions. :slight_smile:

HIRT

and WDL convoengine might be interesting.

although not sure either offers more than JUCE’s own convolution engine