Looking at https://www.juce.com/doc/classFFT ...

First create an order 10 forward FFT

That's going to be 2^10 = 1024 bins, or 2048 input samples

Now create float x[2048], give it a waveform -- maybe a sawtooth with only 1 tooth. So, a ramp from -1 to 1.

Throw it into performRealOnlyForwardTransform

Convert to complex: auto z = (Complex*)x;

Now you have your frequency bins.

If you want to make a crude lowpass filter for example, set z[512 onwards] to 0

Now convert back to the time domain with performRealOnlyInverseTransform

Try doing a basic loopback and check you get back out what you put in.

Once you have that working, you are ready to work on a big waveform: you will be stepping a size-2048 window through this big waveform in steps of 512. So 4x overlap.

For each frame, you want to envelope/window it (you could Google hanning window)

then fft, filter, ifft

and then add the result to your output waveform at that location.

If you get stuck, post code!

π