Revision Difference
IGModAudioChannel:FFT#511619
<function name="FFT" parent="IGModAudioChannel" type="classfunc">⤶
<description>⤶
Computes the [DFT (discrete Fourier transform)](https://en.wikipedia.org/wiki/Discrete_Fourier_transform) of the sound channel.⤶
⤶
The size parameter specifies the number of consecutive audio samples to use as the input to the DFT and is restricted to a power of two. A [Hann window](https://en.wikipedia.org/wiki/Hann_function) is applied to the input data.⤶
⤶
The computed DFT has the same number of frequency bins as the number of samples. Only half of this DFT is returned, since [the DFT magnitudes are symmetric for real input data](https://en.wikipedia.org/wiki/Discrete_Fourier_transform#The_real-input_DFT). The magnitudes of the DFT (values from 0 to 1) are used to fill the output table, starting at index 1.⤶
⤶
**Visualization protip:** For a size N DFT, bin k (1-indexed) corresponds to a frequency of (k - 1) / N * sampleRate.⤶
⤶
**Visualization protip:** Sound energy is proportional to the square of the magnitudes. Adding magnitudes together makes no sense physically, but adding energies does.⤶
⤶
**Visualization protip:** The human ear works on a logarithmic amplitude scale. You can convert to [decibels](https://en.wikipedia.org/wiki/Decibel) by taking 20 log&lt;sub&gt;10&lt;/sub&gt; of frequency magnitudes, or 10 log&lt;sub&gt;10&lt;/sub&gt; of energy. The decibel values will range from -infinity to 0.⤶
</description>⤶
<realm>Client</realm>⤶
<args>⤶
<arg name="tbl" type="table">The table to output the DFT magnitudes (numbers between 0 and 1) into. Indices start from 1.</arg>⤶
<arg name="size" type="number">The number of samples to use. See <page>FFT</page></arg>⤶
</args>⤶
<rets>⤶
<ret name="" type="number">The number of frequency bins that have been filled in the output table.</ret>⤶
</rets>⤶
</function>⤶
⤶