<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<?xml-stylesheet href="./_c74_ref.xsl" type="text/xsl"?>
<!--This is an automatically generated file. DO NOT EDIT THIS FILE DIRECTLY.-->
<c74object module="rnbo" kind="rnboobject" name="fftstream~" category="Analysis">
<!--METADATA-->
<metadatalist>
<metadata name="author">Cycling '74</metadata>
<metadata name="tag">RNBO</metadata>
<metadata name="tag">RNBO FFT</metadata>
<metadata name="tag">RNBO Analysis</metadata>
<metadata name="alias">fft</metadata>
</metadatalist>
<digest>Fast Fourier Transform</digest>
<description><p>
fft~ performs a Fast Fourier transform on any incoming signal and outputs the real and imaginary parts
of that transform as well as a synchronization signal.
</p></description>
<!--ARGUMENTS-->
<objarglist>
<objarg name="fftsize" optional="1" type="enum">
<digest>Number of FFT Samples</digest>
<description><p>
The first argument specifies the number of points (samples) in the FFT.
It must be a power of two. The default number of points is 512.
</p></description>
</objarg>
<objarg name="framesize" optional="1" type="int">
<digest>Spectral Frame Size</digest>
<description><p>
The second argument specifies the number of samples between successive FFTs.
This must be at least the number of points, and must also be a power of two. The default
interval is 512.
</p></description>
</objarg>
<objarg name="phase" optional="1" type="int">
<digest>Phase</digest>
<description><p>
The third argument specifies the offset into the interval where the
FFT will start. This must either be 0 or a multiple of the signal vector size.
fft~ will correct bad arguments, but if you change the signal vector size after
creating an fft~ and the offset is no longer a multiple of the vector size, the
fft~ will not operate when signal processing is turned on.
</p></description>
</objarg>
</objarglist>
<!--OPTIONS-->
<rnbooptionlist>
<option name="fftsize" size="1" type="enum">
<digest>Number of FFT Samples</digest>
<attributelist>
<attribute name="enumvals">
<enumlist get="1" set="1" type="atom">
<enum name="64"></enum>
<enum name="128"></enum>
<enum name="256"></enum>
<enum name="512"></enum>
<enum name="1024"></enum>
<enum name="2048"></enum>
<enum name="4096"></enum>
</enumlist>
</attribute>
<attribute name="default" type="enum" value="512"></attribute>
</attributelist>
<description><p>
The first argument specifies the number of points (samples) in the FFT.
It must be a power of two. The default number of points is 512.
</p></description>
</option>
<option name="framesize" size="1" type="int">
<digest>Spectral Frame Size</digest>
<attributelist>
<attribute name="default" type="int" value="512"></attribute>
</attributelist>
<description><p>
The second argument specifies the number of samples between successive FFTs.
This must be at least the number of points, and must also be a power of two. The default
interval is 512.
</p></description>
</option>
<option name="phase" size="1" type="int">
<digest>Phase</digest>
<attributelist>
<attribute name="default" type="int" value="0"></attribute>
</attributelist>
<description><p>
The third argument specifies the offset into the interval where the
FFT will start. This must either be 0 or a multiple of the signal vector size.
fft~ will correct bad arguments, but if you change the signal vector size after
creating an fft~ and the offset is no longer a multiple of the vector size, the
fft~ will not operate when signal processing is turned on.
</p></description>
</option>
<option name="win_bufname" size="1" type="symbol">
<digest>Buffer containing window lookup table</digest>
<attributelist>
<attribute name="default" type="symbol" value="RNBODefaultFftWindow"></attribute>
</attributelist>
<description><p>
A 
<o objname="rnbo_buffer~">buffer~</o>
 object can be used as an alternative lookup table for
the FFT window if a custom windowing function is necessary.
</p></description>
</option>
<option name="window" size="1" type="enum">
<digest>Windowing function</digest>
<attributelist>
<attribute name="enumvals">
<enumlist get="1" set="1" type="atom">
<enum name="rectangular"></enum>
<enum name="hann"></enum>
<enum name="hamming"></enum>
<enum name="blackman"></enum>
</enumlist>
</attribute>
<attribute name="default" type="enum" value="rectangular"></attribute>
</attributelist>
<description><p>
Specify which windowing function for the FFT to use (none, the "rectangular" window,
is the default).
</p></description>
</option>
</rnbooptionlist>
<!--ATTRIBUTES-->
<rnboattributelist>
<attribute name="imagIn" size="1" type="auto">
<digest>Imaginary input</digest>
<description><p>
The imaginary part of a complex signal that will be transformed.
If signals are connected only to the left inlet and left outlet, a real FFT
will be performed. Otherwise, a complex FFT will be performed.
</p></description>
</attribute>
<attribute name="realIn" size="1" type="auto">
<digest>Real input</digest>
<description><p>
The real part of a complex signal that will be transformed.
If signals are connected only to the left inlet and left outlet, a real FFT
will be performed. Otherwise, a complex FFT will be performed.
</p></description>
</attribute>
<attribute name="reset" size="1" type="bang">
<digest>Banging this attribute will reset the object to its default state.</digest>
<attributelist>
<attribute name="default" type="bang" value="0"></attribute>
</attributelist>

</attribute>
<attribute name="win_buf" size="1" type="number">
<digest>If multiple buffer names are declared to be used, this sets the currently active buffer using an index [0 based].</digest>
<attributelist>
<attribute name="default" type="number" value="0"></attribute>
</attributelist>

</attribute>
</rnboattributelist>
<!--INLETS-->
<rnboinletlist>
<inlet id="inlet_realIn" name="realIn" type="auto">
<digest>Real input</digest>
<description><p>
The real part of a complex signal that will be transformed.
If signals are connected only to the left inlet and left outlet, a real FFT
will be performed. Otherwise, a complex FFT will be performed.
</p></description>
</inlet>
<inlet id="inlet_imagIn" name="imagIn" type="auto">
<digest>Imaginary input</digest>
<description><p>
The imaginary part of a complex signal that will be transformed.
If signals are connected only to the left inlet and left outlet, a real FFT
will be performed. Otherwise, a complex FFT will be performed.
</p></description>
</inlet>
</rnboinletlist>
<!--OUTLETS-->
<rnbooutletlist>
<outlet id="outlet_out1" name="out1" type="signal">
<digest>Real output</digest>
<description><p>
The real part of the Fourier transform of the input.
The output begins after all the points of the input have been received.
</p></description>
</outlet>
<outlet id="outlet_out2" name="out2" type="signal">
<digest>Imaginary output</digest>
<description><p>
The imaginary part of the Fourier transform of the input.
The output begins after all the points of the input have been received.
</p></description>
</outlet>
<outlet id="outlet_out3" name="out3" type="signal">
<digest>Ramp from 0 to (number of points - 1)</digest>
<description><p>
A sync signal that ramps from 0 to the number of points minus 1
over the period in which the FFT output occurs. You can use this signal as an
input to the index~ object to perform calculations in the frequency domain.
When the FFT is not being sent out (in the case where the interval is larger
than the number of points), the sync signal is 0.
</p></description>
</outlet>
</rnbooutletlist>
<!--SEE ALSO-->
<seealsolist>
<seealso name="rnbo_ifftstream~" type="rnborefpage" module="RNBO" display="ifftstream~"></seealso>
<seealso name="rnbo_cartopol" type="rnborefpage" module="RNBO" display="cartopol"></seealso>
<seealso name="rnbo_cartopol~" type="rnborefpage" module="RNBO" display="cartopol~"></seealso>
<seealso name="rnbo_poltocar~" type="rnborefpage" module="RNBO" display="poltocar~"></seealso>
<seealso name="rnbo_poltocar" type="rnborefpage" module="RNBO" display="poltocar"></seealso>
<seealso name="rnbo_buffer~" type="rnborefpage" module="RNBO" display="buffer~"></seealso>
<seealso name="fft~" type="refpage" module="MSP"></seealso>
<seealso name="pfft~" type="refpage" module="MSP"></seealso>
</seealsolist>
</c74object>