foo_vis_spectrum_analyzer is a foobar2000 component that implements 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.
Spectrum analyzer Bars Mode with gradient colors
Spectrum analyzer LED Bars Mode with gradient colors
Spectrum analyzer Curve Mode with album art background, a peak meter and a level meter
Spectrum analyzer wit mirrored Curve Mode
Multiple Spectrum analyzer graphs for the separate channels
Horizontal scrolling spectrogram visualization
Spectrum analyzer Radial Bars Mode
Spectrum analyzer Radial Curve Mode
Oscilloscope
Oscilloscope with Y-axis in dBFS
Oscilloscope in X-Y mode
Bit Meter using varying bar heights
Bit Meter using varying bar opacity
- Spectrum Analyzer (Bars, Curve, Radial Bars, Radial Curve), Spectrogram, Peak Meter, Level Meter, Oscilloscope 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 graphs
- Styling of all visual elements
- Artwork background and color extraction
- Uses 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 2022 Community Edition or later
- foobar2000 SDK 2025-03-07
- Windows Template Library (WTL) 10.0.10320
- Columns UI SDK 7.0.0
The following library is included in the code:
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
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.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.10.0.0, 2026-03-15
- New: Implemented a high resolution timer.
- Refresh rates greater than 60Hz are now achievable if your machine can handle it.
- New: All / None button in configuration dialog to quickly select all or no channels.
- New:
Visualize during pauseoption. Enable to continue visualization when playback is paused. (Default: Enabled) - New:
Scale linesoption. Enable to draw scale lines on the bar area of a peak meter. (Default: Enabled) - New:
Swap channelsoption to swap the channels of a channel pair during visualisation e.g. the X and Y axis of an X/Y oscilloscope. - New:
Rotationoption to rotate the X/Y oscilloscope. - New: Bit Meter vizualisation
- New
Sign Bits,Exponent BitsandMantissa Bitsstyles Opacity Moderenders the bit histogram by varying the bar opacity instead of the bar height.
- New
- Improved: Complete rewrite of Peak meter visualization.
- Reduced CPU and GPU load.
- Fixed known graphical glitches and inconsistencies.
- New: Center scale setting to draw scales between the peak meter bars.
- New: Max. bar size setting to constrain the width/height of a meter bar. (Forum feature request)
- Improved: Raised the max. number of frequency bins from 512 to 8192.
- Improved: Completely refactored the configuration dialog.
- It became too complex to maintain.
- Faster interaction with the render thread.
- Improved: The preset location supports
%fb2k_path%,%fb2k_component_path%and%fb2k_profile_path%. - Fixed: Annoying tooltip appearing all over the place in the configuration dialog.
- Fixed: SWIFT optimization bug.
- Fixed: Lanczos interpolation bug.
- Fixed: While editing the stops of a color gradient the component would appear to hang if the stops were not in ascending order.
- Fixed: The Preset directory no longer resets to the foobar2000 profile directory when loading a preset.
- Fixed: The gradient stops are no longer reset when editing a color of the gradient.
- Fixed: Oscilloscope did not implement all of the Y-axis settings.
- Fixed: Oscilloscope did not render the chunk duration on the X-axis correctly.
- Fixed: Oscilloscope did not render the vertical grid lines correctly.
- Fixed: Spectrum visualization did not render the peak top correctly when the peak area style was set to None. Git Issue 78
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.
- 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













