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