Why is fft~ not constant with a constant input signal?

Eric_Singer's icon

If I put a simple periodic signal into fft~, I should get an unchanging FFT out - correct? Why then does the output of fft~ jitter like crazy (including in the help patch, which uses a constant phasor~ as an input)?

Christopher Dobrian's icon

An FFT "does its best" to analyze each (windowed) segment of audio as if it were an infinite periodic wave. However, unless the segment truly is one cycle of a periodic wave, there will be artifacts of the FFT process, showing energy in frequencies that are not present in the original signal. (Different windows have different traits in terms of how they suppress those artifacts, but none is perfect.) So, even if the sound being analyzed is periodic, unless the sound going in has the exact same period as the FFT itself, each segment will be somewhat different from the preceding one, and thus the analysis of each segment will be (subtly) different, and the artifacts of each will be different. I think that's the cause of what you're seeing.