Fanon Wiki

Read the Wiki Policy before editing!

Welcome to the Fanon Wiki! Before you create any articles, you MUST read the Wiki Policy. You MUST be sure to always add Categories to your articles, and properly name all images you upload, or they will be deleted with consequences. If you have any questions, contact Chris6d or another Staff Member. Happy editing!

READ MORE

Fanon Wiki
Advertisement

This article contains both fanon and canon content. It is fanon, but features canon content.

Note: The feature sets of this upcoming update is pure speculation so not all features described below are going to be included in the actual upcoming v2.x.x.x of foo_enhanced_spectrum_analyzer component. Please lower your expectations or else you'll get disappointed when the update actually comes out.

Enhanced Spectrum analyzer (foo_enhanced_spectrum_analyzer) is a foobar2000 spectrum analyzer component dedicated for audio spectral analysis, developed by Crossover.

This page covers the version 2.x.x.x and above of this foobar2000 component.

Options[]

Note: This section only shows anything new to version 2.0.0.0 and newer, though it also shows existing settings options that got changed in foo_enhanced_spectrum_analyzer 2.x.x.x

Display[]

Note: Some correlogram-related settings are derived from foo_loudness_peakmeter 2.x.x.x and thus is not shown on this page.

Display mode

Whether the spectrum, spectrogram, or both be displayed. Defaults to Spectrum.
Available values are:
  • Spectrum: Displays the frequency vs. amplitude graph.
  • Spectrogram: Displays the spectrogram, scrolling from right to left.
  • Static spectrogram: Displays the static spectrogram.
  • Static spectrogram 2: Displays the static spectrogram but in a slightly different way, similar to how graphs scroll in older Loudness Peakmeter 1.0.0.0 component.
  • Both: Combined spectrum/spectrogram visualization where spectrum graph is displayed at top and the spectrogram is at bottom; latest frames at the top and the oldest frames are at bottom of the spectrogram part.

Draw mode

Which style of spectrum visualization should be using. Defaults to Line/area graph.
Available values are:
  • Line/area graph: Displays linearly-interpolated linegraph and area graphs.
  • Bars: Displays frequency bars.
  • LEDs: Displays LED bars. Note that it also works with non-frequency band modes (e.g. when Frequency scale is set to anything other than Octave bands and Use frequency bands is set to disabled)

Channel configuration

Which channels are analyzed in particular way. Defaults to Sum.
Available channels are:
  • Sum: Sums all channels into one PCM data (or in other words, downmixing to mono) before FFT.
  • Stereo: Display left and right channels even if a surround sound is played (which in this case, downmixes surround into stereo).
  • Mid/Side: Display mid and side representations of audio after downmixing to stereo.
  • Stereo and Mid/Side: Display four FFTs after stereo downmix; first and second are left and right channels respectively and third and fourth are sum and difference channels respectively.
  • All channels: Displays all channels.
  • All Mid/Side: Display sum and difference channels for each stereo pair(s).
  • All channels with Mid/Side: Displays all channels and also display Mid/Side representations of each channel pair(s).
  • Pairs: Displays a mono downmix of each channel pair(s).

Channel representation

Which multiple channels are visualized in a particular way. Defaults to Combined. Note that when two or more graphs are superimposed into one, each graph has its own colors (which are also fully-customizable) and the same applies for spectrogram display.
Available values are:
  • Combined: All channels are superimposed into one graph.
  • Separate: Each channel has its own graph.
  • Combined and separate: Mid/Side part has its own graph, separating from main L/R one.
  • Pairs: Each channel pair have its own graph and every channel in this pair are superimposed into one graph.

Display which

Whether it either display a spectrum analyzer or a pan spectrum or correlation by frequency. Defaults to Amplitude spectrum.
Available values are:
  • Amplitude spectrum: All channels are superimposed into one graph.
  • Correlogram: Displays stereo spectrum analyzer and correlation by frequency visualization.
  • Both: Both amplitude spectrum and correlation/stereo pan spectrum are displayed at the same time.

Note: When either Correlogram or Both are selected and no suitable channel pairs are present, it will display Amplitude spectrum instead.

Correlogram display mode

Same as Display mode but for stereo balance and phase correlation spectrum. Defaults to Automatic.
Available values are the same as Display mode except with addition of Automatic option, which is the same as main Display mode parameter.

Refresh time[]

Decouple FFT timing from FPS (doesn't apply to IIR filter bank mode)

Should the timing of the FFT visualization be decoupled from FPS calculation, allowing fixed overlap amounts as opposed to variable and making the spectrogram scrolling speed constant. Defaults to False.
Note: On IIR filter bank modes, it is always-on as IIR filter bank are calculated sample-by-sample.

Calculation interval (only when FFT calculation is decoupled from FPS, though it also always applies to IIR filter bank modes to the certain extent)

Time interval/overlap amount for FFT calculation. Lower interval makes averaging more accurate (doesn't apply to IIR filter banks) and spectrogram scrolls faster. Defaults to 10ms.

Frequency range[]

Min frequency

The minimum frequency range of the analyzer. Note that setting it to 0Hz is not actually 0Hz when using logarithmic frequency scale (on detailed FFT spectrum, the min range is the second FFT bin's center frequency and on octave bands, approximately 1Hz). Defaults to 20Hz.

Max frequency

The maximum frequency range of the analyzer. It can also be set to Nyquist which shows all FFT bins if the Minimum frequency parameter is also set to 0Hz. Defaults to 20kHz.

Frequency scale

Which frequency scale to use. Defaults to Logarithmic.
Available values are:
  • Linear: Useful for analyzing high-frequency content.
  • Logarithmic: Generally useful for audio analysis.
  • Mel: Perceptually-meaningful scale based on perceived pitch.
  • Bark: Another psychoacoustic scale in which equal distances in this scale corresponds to perceptually-equal distances in terms of frequency.
  • Equivalent rectangular bandwidth: Based on approximate bandwidth of the human hearing through an unrealistically-ideal bandpass filter.
  • Octave bands: 1/nth fractional octave bands. Replaces the detailed FFT with frequency band-based FFT bandpower spectrum.

Use frequency bands

Instead of visualizing every individual FFT bins, the analyzer use frequency bands for coarser display (though sinc-interpolated on low frequencies) and enables use of IIR filter bank mode. Defaults to Disabled.
Note: This does not apply if Frequency scale is set to octave bands.

Number of bands (Frequency bands mode only)

The number of bands to display and in case of IIR filter bank mode, the frequency resolution. Defaults to 160 bands.
Note: Again, this doesn't apply to octave bands mode.

Bands per octave (octave bands mode only)

The number of bands per-octave. Defaults to 1/24th (240 bands on 20Hz-20kHz range).

Base-10 preferred frequencies

Whether or not the octave bands should be based on base-10 preferred frequencies as in ANSI S1.11-2004 standard. When enabled, it changes the way how frequency bands placed where frequency bands on each decade is an exact integer multiple of that tuning frequency. Defaults to Disabled.

dB range[]

Note: These options are set separately for spectrum and for spectrogram displays and parameters specific to stereo pan spectrum and correlation by frequency graphs are the same as ones on Loudness Peakmeter 2.0.0.0

Minimum dB

The lower dB range of the graph. Note that when using linear/nth root amplitude scale, the minimum range is -Infinity dB. Defaults to -100dB.

Maximum dB

The upper dB range of the graph. Defaults to 0dB.

Linear amplitude scale

Whether or not it should have linear amplitude scale instead to emphasize peaks. Defaults to Disabled.

Nth root index

On linear amplitude mode, higher values emphasizes the lower amplitude parts. Defaults to 1.

Auto-offset

Which mode is used for automatically applying an offset to spectrum visualization. Defaults to None.
Available values are:
  • None: Does not apply automatic offset
  • Max: Offsets the whole spectrum visualization by max of magnitude spectral coefficients
  • Arithmetic mean: The value for offset is a linear average of all spectral coefficients
  • Root mean square: Automatically offsets the whole spectrum by an RMS of all FFT bins/filter bank coefficients
  • Geometric mean: Offsets the spectrum by logarithmic average of all FFT/filter bank bins/coefficients

Auto-offset source

Which data is used for calculating the auto-offset value. Defaults to Average.
Available values are:
  • Peak
  • Average
  • Peak max
  • Independent: each spectrum measurement type has its own auto-offset value for centering the spectrum visualization magnitude-wise when Auto-offset mode is set to anything other than None

Decouple amplitude scaling

Allow spectrogram display to have its own amplitude scale. Defaults to Disabled.

Window function[]

Parameter (adjustable window functions only)

Some window functions like Gaussian and Kaiser have an adjustable parameter, which determines the shape of the window function; trading off mainlobe width for deeper sidelobe attenuation. Defaults to 2.4.

Transform algorithm (frequency bands mode only)

On frequency bands (and octave bands) mode, which transform algorithm is used to calculate spectrum visualization. Defaults to IIR filter bank.
Available values are:
  • FFT: Sinc-interpolated FFT spectrum.
  • Reassigned FFT: Precise time/frequency resolution; sharper spectrogram response even on lower frequencies.
  • IIR filter bank: Butterworth filter bank with flat-top response, implemented using cascaded second-order/biquads.
  • Complex resonator: Complex-valued IIR filter bank, better suited for variable-Q spectral analysis.
Note: Window functions commonly associated with FFT analyzers are only relevant on both FFT modes (normal and reassigned). Also, setting Transform algorithm to Reassigned FFT while not in frequency bands mode will only apply reassignment method to the spectrogram part and the number of "bands" on this reassigned spectrogram is equal to width or height of the analyzer window so that it is neither blurry nor pixelated and in-addition, certain spectral descriptors are affected by reassignment method as some of it depends on FFT bin's center frequency, which can constantly change when reassigned.

Use constant-Q

Enhances the low-frequency resolution by disabling bandwidth offset. Defaults to Enabled.
Note: When enabled, time/frequency resolution is no longer determined by FFT size and instead a constant-Q resolution (high resolution on lower frequencies and sharper time resolution on higher frequencies).

IIR filter order

How steep the bandpass filter rolloff is; higher values attenuates leakage but it comes with a cost that it has a response delay on low frequencies and smearing in time resolution. Defaults to 4.

FFT size[]

FFT size (changed from version 1.9.2.0)

The window length in either samples or milliseconds. Defaults to 300ms (14400 samples at 48kHz sample rate or 13230 samples at 44.1kHz sampling rate).
Note: When using milliseconds unit for FFT size, the actual size in samples is rounded to an integer (not just power-of-two since this component now accept non-power of two FFT sizes) and it depends on the sample rate of a currently-playing audio (fftSize = round(specifiedWindowLengthInSeconds*sampleRate)).

Averaging[]

Average time

Integration time for the RMS spectrum. Defaults to 500ms (50 frames on 10ms refresh rate) or 20 dB/s (for exponential averaging mode).
Note: This setting doesn't apply if infinite averaging mode is used.

Domain

The domain is used for calculating the average spectrum. Defaults to Linear average domain.
Available values are:
  • Linear: Simpler linear averaging domain, same as summation of multiple FFT frames but divided by number of frames to average.
  • Squared: True root mean square (RMS) averaging; takes place on squared domain and the sqrt the result back to linear amplitude scale.
  • Logarithmic: Legacy averaging domain as in older versions of Enhanced Spectrum analyzer component.

Mode

Mode for calculating the average. Defaults to FIFO.
Available values are:
  • FIFO: Averages the visualization using simple moving average.
  • Exponential: Previous values decays exponentially. Note that averaging time parameter uses dB/seconds unit instead of milliseconds or frames unit.
  • Infinite: Cumulative moving average in which the RMS spectrum converges to a particular curve by the time the song reaches the end.

Graphs[]

Decay mode

Which mode is used. Defaults to None on "RMS" and "Crest" spectrum, otherwise Standard.
Available modes are:
  • None: Disable the peak decay smoothing entirely, aka. infinite decay rate.
  • Standard: Exponentially falls off in dB/s.
  • Smoothed: Smoothed version of Standard decay mode.

Peak max[]

Fading peaks

Enable the fading peaks effect, replacing falling peaks. Defaults to Disabled.

Fade out time (only with Fading peaks mode enabled)

Fade out time after peak hold time elapsed. Defaults to 1000ms.

Further adjustment[]

Calibration line calculation domain

Domain used for calculating the calibration line based on RMS spectrum. Defaults to Linear.
Available values are the same as Domain option on averaging section.

Monitoring fields[]

Note: This monitoring fields are introduced in Enhanced Spectrum analyzer (foo_enhanced_spectrum_analyzer) 2.x.x.x and were first introduced in foo_loudness_peakmeter. These displays spectral descriptors.
Available spectral descriptors are:
  • Spectral centroid: A center of mass within the frequency spectrum.
  • Spectral flatness: A ratio of geometric and arithmetic mean indicating how flat the frequency spectrum is.
  • Spectral slope: A linear regression done on FFT magnitude data.
  • Spectral rolloff: Approximation of minimum and/or maximum frequency range. Comes in three of them, which is exactly the same as each other aside the different rolloff percentage parameter for each instance.
  • Spectral spread: How far the frequency spread across the spectrum.
  • Spectral skewness: How skewed the frequency-domain data is toward particular direction.
  • Spectral kurtosis: How pointy the frequency-domain spectrum is.
  • Spectral crest: A difference between max of and hypotenuse of the entire FFT data.

Show monitoring field (for each spectral descriptor)

Show the spectral descriptor value textually on top of the screen. Defaults to Disabled.

Show horizontal line indicator (spectral centroid, spread, and rolloff only)

Show the spectral descriptor(s) as horizontal Hz line indicating its current value in Hz, scaled to graph's frequency scale and range accordingly. Defaults to Disabled.

Show vertical line indicator (spectral crest only)

Show the spectral descriptor(s) as vertical dB line indicating its current value in dB, scaled to graph's amplitude scale and range accordingly. Defaults to Disabled.

Rolloff percentage (for each spectral rolloff instance)

Lower values indicate highpass filters and higher ones indicates lowpass ones. Defaults to 90% for first, 50% for second, and 10% for third.

Show spread deviation (spectral spread only)

Shows the area describing top (spectral centroid + spread) and bottom (spectral centroid - spread) areas similar to Bollinger Bands indicator. Defaults to Disabled.

Changes from the version 1.9.2.0[]

  • NEW: Added back crest factor spectrum with various changes to be consistent; it now have same details and FPS for the crest spectrum as the rest
  • NEW: Frequency weighting functions (A, B, C, D, and ITU-R 468/M-weighting supported)
    • Can be adjusted by "Weighting amount" parameter in percentages and it can also be set to negative values to do the exact opposite
    • Equal-loudness contour and K-weighting are also supported
  • NEW: Mel, Bark, ERB (equivalent rectangular bandwidth), and linear frequency scales
  • NEW: Octave bands mode in which details of the visualization are controlled by bands per octave option
    • Can be set to use either an ANSI S1.11-2004 standard (preferred base-10) or equal-tempered scale with arbitrary frequency tuning (not limited to 440Hz or 432Hz) for octave band center frequencies
  • NEW: Frequency bands mode (not to be confused with frequency bars display mode) which instead of displaying every FFT bins within the specific range, visualizes frequency bands using either sinc-interpolated FFT bandpower, reassigned STFT, or infinite impulse response (IIR) filter bank
  • NEW: IIR filter bank mode for frequency bands (or octave bands) mode for optimal time/frequency resolution tradeoff on logarithmic frequency scale
    • It uses either cascaded Butterworth second-order sections or complex resonators for IIR filter design for the filter bank
    • The filter order can be set to higher values to improve rolloff but at the expense of poorer time resolution on bass frequencies
    • Both filter types can also be made variable-Q to compensate for poor time resolution on lower frequencies at the expense of blurriness in bass regions
  • NEW: Reassigned FFT mode to sharpen both the spectrum and spectrogram display in terms of frequency resolution
    • For the spectrum part, this only apply to frequency/octave bands modes
  • NEW: An option to smooth out the spectrum.
    • Note that it is a postprocessing step for FFT mode (which doesn't affect spectrogram display) and when used on IIR filter bank modes, it is just a decrease in Q values (which affects spectrogram view too)
  • NEW: Bars drawing mode for both detailed FFT and frequency bands mode
  • NEW: An option to decouple FFT calculation from FPS, which is useful for spectrogram displays and better behaved average spectrum and it allows setting the FFT hop size to a set amount in milliseconds to adjust "accuracy" of average spectrum
    • This doesn't apply to IIR filter bank modes, and in this case, it is always on and the hop size parameter only affects spectrogram scrolling speed
  • NEW: Spectrogram display, works best with new "Decouple FFT calculation from FPS"
    • Can either be static or scrolling spectrogram
    • Can display both spectrum and spectrogram at the same time
    • Can also be set to display multiple channels by having different colors
    • Scrolling speed is adjustable via "Hop size" parameter, similar to "Resolution X-axis" in Loudness Peakmeter component
  • NEW: Multiple channels display
    • Can either have separate graphs for each channel or have multiple spectrum of each channel superimposed into a one graph with different colors for each channels
    • Supports Mid/Side representations not just individual channels
  • NEW: Stereo spectrum analyzer (Left/Right pairs) and correlation by frequency (Mid/Side) display
    • Displays phase correlation and stereo balance spectrum showing phase correlation and L/R differences for each frequency
  • NEW: Non-power of two FFT sizes and FFT size can be set in milliseconds rather than samples (decoupling the time/frequency resolution from sample rate; 100ms is 4800 samples on 48kHz sampling rate), and also 65536 samples FFT
  • NEW: Peak decay modes, including infinite decay rate mode (-inf dB per second falloff) for any graphs including the restored crest spectrum
    • On "IIR filter bank" mode, the Peak graph is a maximum of latest 576 samples (and below if FPS is high enough) of an absolute value of the output to avoid photosensitive epilepsy in most cases
  • NEW: More averaging options
    • There are now three averaging modes; "FIFO" (first-in, first-out) is the simple moving average, "Exponential" is the exponential moving average, and "Infinite" is a cumulative average that converges to a particular curve when analyzed for long enough
    • Three averaging domains; "Squared" is true RMS, "Linear" is simply average before log amplitude transform, and "Logarithmic" is the legacy one calculated after log amplitude transformation
  • NEW: Piano display
    • Detected peaks can also be displayed on the piano keyboard display
    • Piano center frequency (alongside equal-temperament octave bands) at the closest note to certain frequency can be set via "Pitch Std." parameter in Hz
  • NEW: Piano, octaves, and Bark scale critical band grids and note labels
  • NEW: The Y-axis dB labels can be displayed on the right side and both sides
  • NEW: Fonts and the size of the labels can now be changed
  • NEW: Frequency range and dB range are now adjustable
    • When selecting "0Hz" on minimum frequency range while the spectrum frequency scale is logarithmic, the actual minimum range is the center frequency of the second FFT bin and in the case of octave bands, ~1Hz min range
  • NEW: Linear amplitude scale
    • The amplitude scale can also be nth root while not in logarithmic (dB) amplitude scale, adjusted by "Nth root index" parameter
    • Minimum dB range is -Inf dB while in linear/nth root amplitude scale
  • NEW: Auto-offset option to make spectrum visualization independent of the overall amplitude
    • This also applies to spectrograms optionally
  • NEW: DC and Nyquist frequency markers
    • DC frequency marker is only visible if the selected frequency scale is anything other than logarithmic and octave bands
  • NEW: An option to use color gradient (consistent with Loudness Peakmeter and built-in visualizations) rather than solid color for UI color integration
  • NEW: Gaussian and Kaiser window functions
  • NEW: Anti-aliasing options to make the graph look nicer at the cost of slightly reduced performance
  • NEW: An option to display more details on higher frequencies (especially on larger FFT sizes and smaller visualization windows) by turning off "Low detail mode" switch
    • This does not apply to octave bands mode and spectrogram display isn't affected by this
  • NEW: Monitoring fields for displaying spectral features (e.g. centroid, rolloff, flatness, kurtosis, etc.)
    • This also show bars (separate bars on multi-channel display) on top of each field describing spectral feature's current value
    • Can also display spectral descriptors as moving horizontal (frequency) line and vertical (dB) line
    • Spectral descriptors that return a value in Hz can also be displayed on spectrogram display
  • IMPROVEMENT: Overall performance has been improved; it now utilizes AVX2 and even AVX512 instructions when your CPU support these instruction sets, especially the new IIR filter bank mode as well as other optimizations to "fix" performance on fullscreen mode by ditching the GDI+ in favor of OpenGL rendering
  • IMPROVEMENT: Fullscreen mode and UI color integration for Columns UI panel version
  • IMPROVEMENT: Average spectrum is no longer capped at 0dB
  • IMPROVEMENT: Expanded and enhanced color gradient editing
    • Number of colorstops are no longer limited to six
    • Colorstop positions now can be changed individually
    • The colorstop position can also be set to be tied to certain dB values, which scales the color gradient accordingly to the current dB range
    • Graph color and even background color can be made reactive; brighter (or darker) parts of the resulting strip indicates higher amplitude at certain frequency
  • IMPROVEMENT: Display options (asides color gradient) for graphs no longer reset during a UI color change while UI color integration is enabled
  • IMPROVEMENT: Configuration window now gets a dark mode
  • FIX: Setting the different window function now actually works, e.g. setting it to NONE now applies a rectangular window instead

Gallery[]

Videos[]

Interactive mockups[]

Trivia[]

  • If the real version 2.0.0.0 were to be actually released, it would be different from what described in this page, much like how Dash Destroyer on GDPS 2.2 (at the time before the official Geometry Dash 2.2 were came out) being different from official Dash level in Geometry Dash.
  • If this component doesn't have fallbacks to implementations using older SIMD instructions in the case of a CPU without AVX2 or AVX512 support, it would easily get listed into online troubleshooter with the line that says something like this:

foo_enhanced_spectrum_analyzer.dll : Enhanced Spectrum analyzer 2.0.0.0
Reason: This component is incompatible with CPUs without AVX2.

Advertisement