Artifacts on IR update of dsp::Convolution in VST - JUCE 5.3.2 OSX 10.12

It does (again using the debug project with a small timer update value), although now I feel I missed something obvious everyone knows :). Here it is anyway:

When the processFifo() method in juce_Convolution.cpp calls requestsType.setUnchecked (numRequests, type) in its while loop with numRequests = 256, it fires the jassert (isPositiveAndBelow (indexToChange, values.size())); in juce_Array.h (l.524). Juce version 5.4.1.

1 Like

Ok I think I’ve found the issue. At line 490, it should be while (getNumRemainingEntries() > 0 && numRequests < fifoSize) instead of while (getNumRemainingEntries() > 0).

Thanks for spotted it !

Hi @IvanC,

I submitted a Pull Request to expose the IR switch ramp duration. I find it convenient for VST users to define a plugin ā€œImpulse Response update rateā€ to fit their current needs (zipper noise free, highly responsive, etc.). Let me know if it doesn’t make sense with what you had in mind for the Convolution class implementation.

1 Like

This would be really useful for me as well. It’d be great if it could be integrated into the main JUCE repo. Thanks for the work on this, @davidpq.

I think that would be a great addition, and your code seems good to me !

1 Like

Hi there,

I just wanted to ask, if there still is no viable solution for this convolution IR update artifacts problem yet?

My code uses a lot of IR updates and I recognized this ā€œzipper noiseā€ as well.

I also could not find a LogSmoothedValue class in JUCE 7 or an inclusion of the Pull Request from @davidpq.

I hope to hear from you!

Best regard
Marco