Guitar Impulse Response loader plugin

Hi, I’m looking for a freelance developer for a fairly simple JUCE project - an IR loader. 0 latency, AAX, AU, VST Win/OSX.

Shoot me a private message with examples of past work for more details and basic requirements. Thanks!

Hey @JaSn - the latest Juce includes a convolution engine to load IRs, so you can probably just use that for you project.

Also, zero latency is not technically possible with convolution, as the latency is based on the IR (although maybe negligible is what you meant).

It actually is! Even JUCE’s implementation.

1 Like

I should clarify, that what I meant was no added latency. DAW buffer and sample length is understandable overhead. When you load the plugin into Pro Tools, it should show the value of ‘0’ for ‘dly’.

My programming background is not with C++, nor DSP processing, sadly. I do see the available methods but it would take me too long to make a viable product and I need to focus on business side of things instead.

@JaSn - gotcha re: no added latency and your priorities. I’m sure a number of people here can whip up that implementation with a tad bit of time.

@danielrudrich - I’m not sure I understand how this is possible (very well may just be me :smile: ) but in a partitioned, real time convolution system you still are at the mercy of the time it takes to do an fft, complex multiplication and an ifft on the chunk which is buffer size dependent. I guess what I’m saying is that I don’t believe there is a way to do it with zero-latency but I’d love to know if I’m wrong!

I think he means the duration to process the IR is shorter than the amount of time between calls to processBlock() by the host. So the latency is determined by that buffer size, which determines the time between those processBlock() calls. But I could be mistaken.

As far as I know, it’s possible with a non-uniform partitioned convolution approach to quickly compute the first part of the impulse response in the time domain which immediately gives the result and the later parts in the frequency domain, leading to a real (close to) zero latency if processing block sizes are small enough. Always wanted to find some time to dig deeper into this topic

I think I have to clarify:
With zero-delay convolution I simply meant: the convolution itself can be implemented in a way without introducing any additional delay to the signal processing. So if we only get 1 sample of new input data, we can calculate the convolution with only that sample, and we can output the result of that.
There’s sill the latency due to hardware-buffers, …

And this also works with uniformly partitioned convolution, you don’t even need to do this in time domain (which under circumstances can be more efficient). The trick is simply zero-padding the “missing” samples.

Edit: and I should add that further discussion should be moved to another thread, as this is the JUCE Jobs section :wink:

1 Like