Hi, I'm trying to implement a phase vocoder in SC, I made this attempt a couple of years ago and hit a wall, asked for help in this list with the patch and made no progress. Now it's time to try again and I think I know why things were not working, time to try a new approach.
The key process is:
- get two FFT frames from a buffer, a hop appart (lets call them: "front" & "back")
- get phase difference (front - back); this is possible with PV_Div(front, back), I believe.
- Accumulate the phase values from "PV_Div", that is, sum the phase values with the last input, this is where I need help
- Finally, get the frame with mags from the front window and the accumulated phase output - we could do that with "PV_CopyPhase"
In Pd/Max, the phase accumulation process can be done with the [frameaccum~] object. I didn't find any related object in SC.
But the accumulation is simply a sum with the last output (out = in + last_out)
So, how to do that with the fft frames?
To sum the phases of the input with the last output you could use "PV_Mul", the problem I'm having is really just the feedback loop.
The feedback is actually the same problem I believe I was having earlier, and the thing is that it seems hard to make that happen when the fft frame is at a different block size than the control/block rate SC is running. Anyway, one way or another it all comes down to how to deal with this feedback loop or the "accumulation" process.
So I also take this opportunity to ask about accumulating objects.
cheers