foo_vis_spectrum_analyzer is a foobar2000 component that started as a spectrum analyzer panel.
It is an attempt to recreate the foo_musical_spectrum component by fismineur and the Audio Spectrum project for foobar2000 64-bit.
Over time other visualisations were added.
Click the image above to view the gallery.
- Spectrum Analyzer (Bars, Curve, Radial Bars, Radial Curve), Spectrogram, Peak / RMS, Balance / Correlation, Oscilloscope, Goniometer and Bit Meter visualizations.
- Fast Fourier (FFT), Constant-Q (CQT), Sliding Windowed Infinite Fourier (SWIFT) and Analog-style transforms
- Multiple frequency range and smoothing options
- Multiple stacked or overlapping graphs
- Styling of all visual elements
- Artwork background and color extraction
- DirectX rendering.
- Supports the Default User Interface (DUI) and the Columns User Interface (CUI).
- Supports dark mode.
- Supports foobar2000 2.0 and later (32 and 64-bit version).
- Tested on foobar2000 v2.0 or later (32 or 64-bit).
- Tested on Microsoft Windows 10 and later.
- Tested with Columns UI 2.1.0.
- Double-click
foo_vis_spectrum_analyzer.fbk2-component.
or
- Import
foo_vis_spectrum_analyzer.fbk2-componentinto foobar2000 using the "File / Preferences / Components / Install..." menu item.
You can find the user guide here.
To build the code you need:
- Microsoft Visual Studio 2026 Community Edition or later
- foobar2000 SDK 2026-09-17
- Windows Template Library (WTL) 10.0.10320
- Columns UI SDK 8.0.0
The following libraries are included in the repository:
To create the deployment package you need:
- PowerShell 7.2 or later
Create the following directory structure:
3rdParty
columns_ui-sdk
WTL10_10320
bin
bin.x86
foo_vis_spectrum_analyzer
int
out
sdk
3rdParty\columns_ui-sdkcontains the Columns UI SDK 7.0.0.3rdParty\WTL10_10320contains WTL 10.0.10320.bincontains a portable version of foobar2000 64-bit for debugging purposes.bin.x86contains a portable version of foobar2000 32-bit for debugging purposes.foo_vis_spectrum_analyzercontains the Git repository.
intreceives the intermedidiate files of the build.
outreceives a deployable version of the component.sdkcontains the foobar2000 SDK.
Open foo_vis_spectrum_analyzer.sln with Visual Studio and build the solution.
To create the component first build the x86 configuration and next the x64 configuration.
v0.13.0.0, 2026-10-11
- New: Goniometer with a 1st order or 4-th order Linkwitz-Riley crossover filter.
- Has a mono, RGB and Triband mode.
- The crossover filter can be configured on the
Filtersconfiguration page.
- New: Gold and Triband gradient.
- New:
Reset on track changesetting to reset the FFT peaks when a track starts or stops. Useful when you set the fall rate to 0 dB/s. Forum request - New: Compiled with foobar2000 SDK 2026-09-17.
- New: Gradient stops can have color source
Solid,Dominant Color,WindowsandUser Interface. Forum Request - New: The channels in the configuration dialog can be reordered. Forum request
- New: You can modify the position of a gradient stop by clicking and dragging on the gradient control. The value will be constrained between the previous and next gradient stop position.
- Changed:
Decay Factoris nowAfterglow, expressed in ms, and independent of the refresh rate. Use values between 80 and 150 ms to imitate the afterglow of an analog oscilloscope. - Breaking change
- Artwork Fit Modes are now
Free,Fit largest,Fit smallest,Fit width,Fit heightandCover.Fillhas been dropped. - Extra setting
Allow upscalingwill upscale the bitmap while respecting any Fit Mode exceptFree. Forum request
- Artwork Fit Modes are now
- Improved: Optimized the render path of the oscilloscope and goniometer.
- Improved: The file path of the fixed artwork path can contain Windows environment variables.
- Improved: Curve visualization is 4 times faster.
- Improved: Optimized the spectrum LED rendering.
- Improved: Peak Meter, Bit Meter and Oscilloscope honor the channel order specified in the configuration dialog.
- Fixed: Controls on the Graphs page were not always enabled or disabled correctly when the visualization changed.
- Fixed: A 3-year old bug in the non-radix 2 FFT.
- Fixed: 32-bit Bit Meter interpreted the audio sample as 64-bit.
- Fixed: Enabling and disabling Bit Meter opacity mode did not reset the opacity of the bit styles.
- Fixed: Axis settings were disabled for the peak meter.
- Fixed: Some visualizations did not pick up changes to the user interface colors. (Regression)
- Fixed: Vertical Grid style of the Oscilloscope visualization did not react to changes. (Regression)
- Fixed: Spectrum LED rendering when using two or more graphs.
- Fixed: Color sorting did not work completely correct due to a bug in the HSL to RGB conversion code.
- Fixed: Peak Meter did not handle mono tracks correctly.
You can read the full history here.
- Peter Pawlowski for the foobar2000 audio player.
- TF3RDL for the advice, the help and his:
- Project Nayuki
- Holger Stenger for foo_vis_oscilloscope.
- fismineur for foo_musical_spectrum that inspired this component.
- Oleg V. Polikarpotchkin and Peter Lee for their Bezier Spline article.
- Bedapisl for Fast ColorThief.
- Niels Lohmann for JSON for Modern C++.
- Anton Mikhailov for the Turbo color map.
- Matplotlib for the Perceptually Uniform Sequential color maps.
- PosixAlchemist for cli-visualizer
- The Audio Frequency Spectrum Explained
- Fast Fourier Transformation FFT - Basics
- Sine Tone Generator
- A440
- Constant-Q transform
- Mel-frequency cepstrum
- Mel scale
- Sliding windowed infinite Fourier transform
- Lorenz system

