Skip to content

stuerp/foo_vis_spectrum_analyzer

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

671 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

foo_vis_spectrum_analyzer

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.

Screenshot

Spectrum analyzer Bars Mode with gradient colors

Screenshot

Spectrum analyzer LED Bars Mode with gradient colors

Screenshot

Spectrum analyzer Curve Mode with album art background, a peak meter and a level meter

Screenshot

Spectrum analyzer wit mirrored Curve Mode

Screenshot

Multiple Spectrum analyzer graphs for the separate channels

Screenshot

Horizontal scrolling spectrogram visualization

Screenshot

Spectrum analyzer Radial Bars Mode

Screenshot

Spectrum analyzer Radial Curve Mode

Screenshot

Oscilloscope

Screenshot

Oscilloscope with Y-axis in dBFS

Screenshot

Oscilloscope in X-Y mode

Screenshot

Bit Meter using varying bar heights

Screenshot

Bit Meter using varying bar opacity

Features

  • 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).

Requirements

  • Tested on foobar2000 v2.0 or later (32 or 64-bit). foobar2000
  • Tested on Microsoft Windows 10 and later.
  • Tested with Columns UI 2.1.0.

Getting started

  • Double-click foo_vis_spectrum_analyzer.fbk2-component.

or

  • Import foo_vis_spectrum_analyzer.fbk2-component into foobar2000 using the "File / Preferences / Components / Install..." menu item.

Usage

You can find the user guide here.

Developing

Requirements

To build the code you need:

The following library is included in the code:

To create the deployment package you need:

Setup

Create the following directory structure:

3rdParty
    columns_ui-sdk
    WTL10_10320
bin
bin.x86
foo_vis_spectrum_analyzer
out
sdk
  • 3rdParty/columns_ui-sdk contains the Columns UI SDK 7.0.0.
  • 3rdParty/WTL10_10320 contains WTL 10.0.10320.
  • bin contains a portable version of foobar2000 64-bit for debugging purposes.
  • bin.x86 contains a portable version of foobar2000 32-bit for debugging purposes.
  • foo_vis_spectrum_analyzer contains the Git repository.
  • out receives a deployable version of the component.
  • sdk contains the foobar2000 SDK.

Building

Open foo_vis_spectrum_analyzer.sln with Visual Studio and build the solution.

Packaging

To create the component first build the x86 configuration and next the x64 configuration.

Change Log

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 pause option. Enable to continue visualization when playback is paused. (Default: Enabled)
  • New: Scale lines option. Enable to draw scale lines on the bar area of a peak meter. (Default: Enabled)
  • New: Swap channels option to swap the channels of a channel pair during visualisation e.g. the X and Y axis of an X/Y oscilloscope.
  • New: Rotation option to rotate the X/Y oscilloscope.
  • New: Bit Meter vizualisation
    • New Sign Bits, Exponent Bits and Mantissa Bits styles
    • Opacity Mode renders the bit histogram by varying the bar opacity instead of the bar height.
  • 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.

Acknowledgements / Credits

Reference Material

Test Material

Links

License

License: MIT