This maybe comes a little late, but i guess it matters not.
I have started the pitchshift by making a copy of the BitCrusher DSP and BitCrusher Source Effect classes straight into a project, because i found it is straightforward, and easy to modify.
However, you are indeed better to be going with the implementation of Envelope Follower and it will show the example of the use of a multicast delegate which the solution is based on.
You will find the component used to access the delegate in a convinient way stuffed in the Listener Source Effect. I believe it would be better to separate it out to file and use the delegate by including it but it’s up to your decision i guess
One thing regarding the FFT, the DSP’s are running as instanced classes (parallel), so you have to make sure don’t run into issues with static variables and the kind of that. Check for cpu and ram usage as well. The incoming audio you get in dsp is in -1.f to 1.f range, and you will receive the data on a per sample basis, that you may want to accumulate first into a buffer. But again it is up to your implementation.
Also, there are a few FFT implementations floating around the webs, but you have to make sure the licenses are compatible with the epic eula, otherwise it may not gonna work out well in the end.