Hello,
At first at all: does JUCE timerCallback provide separate thread?
That’s why I am asking:
I created own plugin which calculates FFT Radix-2. I coded it as that in processBlock I collect enough data to vector. When there is enough data collected, I block further collecting by bool flag like collectingData = false and set other bool flag - dataIsCollected. And in the mean time there is timer working and do nothing until dataIsCollected is true. If it’s true in timerCallback I calculate FFT. After FFT calculations I set collectingData = true to allow processBlock to collecting data again.
I separated it outside processBlock to be sure signal workflow in processBlock is not affected by FFT calculations for bigger buffer sizes like 32768. And it works, audio signal works without any lags.
But I found that twisting knobs or moving sliders in other plugins in the same process (for example Fabfilter Pro-Q2) are lagged. I wonder how to avoid that.
I found Voxengo SPAN analizer there is possible to set buffer size to 65536 (I am not sure but I suppose it’s buffer size for FFT), and it does not affect on performance in other plugins. Computer works as crazy, heating, and cooling fans roaring, but moving sliders or knobs work perfectly, with no lags. How to achieve that?
I thought my lags problem happens because I had to much points my Path which I draw on screen. So for debug I turned off drawing at all. And it didn’t help.
So I thought maybe my timer is too fast. So in timerCallback() I call stopTimer then make FFT calculations, and after that I startTimer again. To be sure, even if FFT is very slow (or very big buffer size) timerCallback will not overlap between each call. But it also didn’t help.
Any tips? Please?

