Garry's Mod Wiki

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&amp;lt;sub&amp;gt;10&amp;lt;/sub&amp;gt; of frequency magnitudes, or 10 log&amp;lt;sub&amp;gt;10&amp;lt;/sub&amp;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 &lt;page&gt;FFT&lt;/page&gt;</arg>⤶ </args>⤶ <rets>⤶ <ret name="" type="number">The number of frequency bins that have been filled in the output table.</ret>⤶ </rets>⤶ </function>⤶ ⤶