TITLE:: FluidSTFTPass
SUMMARY:: Real-Time FFT/IFFT return trip.
CATEGORIES:: UGens>Algebraic, Libraries>FluidDecomposition, UGens>Buffer
RELATED:: Guides/FluCoMa, Guides/FluidDecomposition,Classes/UnaryOpFunction


DESCRIPTION::
This class implements a sanity test for the FluCoMa Real-Time Client FFT/IFFT Wrapper. It is part of the LINK:: Guides/FluidDecomposition:: of LINK:: Guides/FluCoMa::. For more explanations, learning material, and discussions on its musicianly uses, visit http://www.flucoma.org/


CLASSMETHODS::

METHOD:: ar
	The audio rate version of the object.

ARGUMENT:: in
	The input to be passed-through

ARGUMENT:: windowSize
	The size of the buffered window to be analysed, in samples. It will add that much latency to the signal.

ARGUMENT:: hopSize
	How much the buffered window moves forward, in samples. The -1 default value will default to half of windowSize (overlap of 2).

ARGUMENT:: fftSize
	How large will the FFT be, zero-padding the buffer to the right size, which should be bigger than the windowSize argument, bigger than 4 samples, and should be a power of 2. This is a way to oversample the FFT for extra precision. The -1 default value will use the next power of 2 equal or above the windowSize.

ARGUMENT:: maxFFTSize
	How large can the FFT be, by allocating memory at instantiation time. This cannot be modulated.


RETURNS::
	Same as input, delayed by the windowSize.


EXAMPLES::

Summing with the inverse (gain of -1) with a delay of the latency gives us CPU-expensive silence.
CODE::
{ var source = PinkNoise.ar(0.1); DelayN.ar(source, delaytime:1024/s.sampleRate, mul: -1) + FluidSTFTPass.ar(source, 1024); }.play
::
Larger, oversampled, FFT
CODE::
{ FluidSTFTPass.ar(PinkNoise.ar(0.1), 2048, 128, 8192) }.play
::
Stereo Input Tests.
CODE::
{ FluidSTFTPass.ar([SinOsc.ar(222,mul: 0.1), PinkNoise.ar(Decay.ar(Impulse.ar(0.666,mul: 0.2), 0.5))], fftSize:1024)}.play
::
Stereo Parameter Tests.
CODE::
{ FluidSTFTPass.ar(SinOsc.ar(222,mul: 0.1), [1024,8192],256,8192)}.play
::
Modulating Window Param Tests.
CODE::
{ var source = SinOsc.ar(222,mul: 0.1);  [source, FluidSTFTPass.ar(source,LFNoise0.kr(1).range(10,10000))] }.play
::
Very Short FFT test.
CODE::
{ var source = SinOsc.ar(222,mul: 0.1);  [source, FluidSTFTPass.ar(source,10)] }.play
::
