Component:FFT RealAnalyzer
More actions

Added: 2026.9.8.1049 (Discord)
FFT_RealAnalyzer accepts an audio source and provides the relative intensity of frequencies contained that audio in the form of an array. Called a Fast Fourier Transform, this is mostly used for audio visualizers, but the data can also be used for other things like pitch estimation through to even exotic things like building brainwave analyzers or decoding Frequency shift keying.
Fields
| Name | Type | Description |
|---|---|---|
persistent
|
Bool | Determines whether or not this item will be saved to the server. |
UpdateOrder
|
Int | Controls the order in which this component is updated. |
Enabled
|
Bool | Controls whether or not this component is enabled. Some components stop their functionality when this field is disabled, but some don't. |
Source
|
IAudioSource | The audio source to analyze. |
WindowSize
|
Enum | The number of samples in each audio slice the FFT operates on. Mainly affects the latency/resolution tradeoff. |
WindowFilter
|
Enum | Filter to adjust FFT artifacts and time/frequency resolution tradeoff. |
OutputFormat
|
Enum | Which unit(s) of the raw FFT data to output or postprocess. |
OutputLength
|
Enum | How much to reduce the output array's size. Reduces upper limit frequency when in quarter size or lower. |
FFT
|
[[Type:raw output of Float|raw output of Float]] | Output array. As a RawArray. Readable using a node such as GetAt |
NormalizeOutput
|
Bool | Whether to keep the amplitude of the FFT output consistent regardless of settings. This normalizes the FFT sensitivity itself, it does not normalize to audio peaks. |
Detailed options
WindowSize
- The length of audio in samples which the FFT operates on at a time. The FFT must wait for the entire window to be full, so large windows have higher latency. In other software this is often referred to as "FFT length", "FFT size", "Window length", etc.
WindowFilter - The window function used to reduce spectral leakage, which normally is noticeable as smooth lines covering up the expected roughness of real signals.
- Rectangular - Gives the sharpest peaks but has high spectral leakage especially when there are low frequencies.
- Hamming - Reduced leakage at the cost of broader peaks. Often a better choice when peak sharpness is not the main concern.
OutputFormat - Determines the part of the FFT data exposed and sometimes it's layout in the array. In visualizers there may not seem to be a meaningful difference between real, imaginary and magnitude formats, but in principle the magnitude format preserves more amplitude information while discarding phase information which is rarely used.
- Magnitude: Presents the RMS magnitude of the real and imaginary components combined.
- Interweaved: Exposes real and imaginary frequency components next to each other. Each frequency is 2 consecutive floats in the array, first real, then imaginary. This results in an array twice as large.
- RealOnly: Only the real components.
- ImaginaryOnly: Only the imaginary components.
NormalizeOutput - Keeps the amplitude consistent regardless of FFT length and settings.
- Normalized is good for music visualizers and monitors where the peaks should always have about the same height regardless of FFT settings.
- Not normalized: the output reflects the total input over the audio window, so longer windows will give higher amplitudes. This is useful in situations where the total energy over time is more important, such as in a monitor meant to estimate hearing damage.
OutputLength: How much to reduce the array's size. This is useful when you don't need all the frequencies the FFT provides but you need to keep it's settings.
- Full: Presents mirrored frequency layout except in Interweaved mode, mainly relevant for visualizers.
- Half, quarter, eighth: Not mirrored. Quarter and Eighth modes reduce the maximum frequency to 12KHz and 6KHz respectively.
Note that Interweaved layout at full size is the largest format because it gives the full FFT data set of real and imaginary components, from which we can extract both magnitude and phase as needed.