{"id":34936863,"url":"https://github.com/stuerp/foo_vis_spectrum_analyzer","last_synced_at":"2026-05-30T12:00:47.585Z","repository":{"id":210729427,"uuid":"717378537","full_name":"stuerp/foo_vis_spectrum_analyzer","owner":"stuerp","description":"A foobar2000 component that displays a spectrum analyzer.","archived":false,"fork":false,"pushed_at":"2026-05-30T10:19:07.000Z","size":4980,"stargazers_count":52,"open_issues_count":6,"forks_count":6,"subscribers_count":5,"default_branch":"master","last_synced_at":"2026-05-30T11:14:23.654Z","etag":null,"topics":["audio","foobar2000","foobar2000-component","level-meter","peak-meter","spectogram","spectrum-analyzer","visualization"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/stuerp.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":"Support.cpp","governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2023-11-11T09:55:39.000Z","updated_at":"2026-05-10T13:22:14.000Z","dependencies_parsed_at":"2024-01-15T22:59:50.989Z","dependency_job_id":"7dc85d26-c162-47af-8bad-d2207d452cdf","html_url":"https://github.com/stuerp/foo_vis_spectrum_analyzer","commit_stats":null,"previous_names":["stuerp/foo_vis_spectrum_analyzer"],"tags_count":65,"template":false,"template_full_name":null,"purl":"pkg:github/stuerp/foo_vis_spectrum_analyzer","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stuerp%2Ffoo_vis_spectrum_analyzer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stuerp%2Ffoo_vis_spectrum_analyzer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stuerp%2Ffoo_vis_spectrum_analyzer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stuerp%2Ffoo_vis_spectrum_analyzer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/stuerp","download_url":"https://codeload.github.com/stuerp/foo_vis_spectrum_analyzer/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stuerp%2Ffoo_vis_spectrum_analyzer/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33691312,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-05-30T02:00:06.278Z","response_time":92,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["audio","foobar2000","foobar2000-component","level-meter","peak-meter","spectogram","spectrum-analyzer","visualization"],"created_at":"2025-12-26T18:16:04.262Z","updated_at":"2026-05-30T12:00:47.577Z","avatar_url":"https://github.com/stuerp.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"\n# foo_vis_spectrum_analyzer\n\n[foo_vis_spectrum_analyzer](https://github.com/stuerp/foo_vis_spectrum_analyzer/releases) is a [foobar2000](https://www.foobar2000.org/) component that implements a spectrum analyzer panel.\n\nIt is an attempt to recreate the [foo_musical_spectrum](https://wiki.hydrogenaud.io/index.php?title=Foobar2000:Components/Musical_Spectrum_(foo_musical_spectrum)) component by fismineur \nand the [Audio Spectrum project](https://codepen.io/TF3RDL/pen/poQJwRW) for foobar2000 64-bit.\n\n![Screenshot](assets/Spectrum-Analyzer-Bars.png?raw=true \"Screenshot\")\n\n\u003csup\u003eSpectrum analyzer Bars Mode with gradient colors\u003c/sup\u003e\n\n![Screenshot](assets/Spectrum-Analyzer-LED-Bars.png?raw=true \"Screenshot\")\n\n\u003csup\u003eSpectrum analyzer LED Bars Mode with gradient colors\u003c/sup\u003e\n\n![Screenshot](assets/Spectrum-Analyzer-Curve+Peak-Meter+Level-Meter.png?raw=true \"Screenshot\")\n\n\u003csup\u003eSpectrum analyzer Curve Mode with album art background, a peak meter and a level meter\u003c/sup\u003e\n\n![Screenshot](assets/Spectrum-Analyzer-Mirrored-Curves.png?raw=true \"Screenshot\")\n\n\u003csup\u003eSpectrum analyzer wit mirrored Curve Mode\u003c/sup\u003e\n\n![Screenshot](assets/MultipleGraphs.png?raw=true \"Screenshot\")\n\n\u003csup\u003eMultiple Spectrum analyzer graphs for the separate channels\u003c/sup\u003e\n\n![Screenshot](assets/Spectrogram.png?raw=true \"Screenshot\")\n\n\u003csup\u003eHorizontal scrolling spectrogram visualization\u003c/sup\u003e\n\n![Screenshot](assets/Radial-Bars.png?raw=true \"Screenshot\")\n\n\u003csup\u003eSpectrum analyzer Radial Bars Mode\u003c/sup\u003e\n\n![Screenshot](assets/Radial-Curve.png?raw=true \"Screenshot\")\n\n\u003csup\u003eSpectrum analyzer Radial Curve Mode\u003c/sup\u003e\n\n![Screenshot](assets/Oscilloscope.png?raw=true \"Screenshot\")\n\n\u003csup\u003eOscilloscope\u003c/sup\u003e\n\n![Screenshot](assets/Oscilloscope-dBFS.png?raw=true \"Screenshot\")\n\n\u003csup\u003eOscilloscope with Y-axis in dBFS\u003c/sup\u003e\n\n![Screenshot](assets/Oscilloscope-XY.png?raw=true \"Screenshot\")\n\n\u003csup\u003eOscilloscope in X-Y mode\u003c/sup\u003e\n\n![Screenshot](assets/Bit-Meter-1.png?raw=true \"Screenshot\")\n\n\u003csup\u003eBit Meter using varying bar heights\u003c/sup\u003e\n\n![Screenshot](assets/Bit-Meter-2.png?raw=true \"Screenshot\")\n\n\u003csup\u003eBit Meter using varying bar opacity\u003c/sup\u003e\n\n## Features\n\n- Spectrum Analyzer (Bars, Curve, Radial Bars, Radial Curve), Spectrogram, Peak Meter, Level Meter, Oscilloscope and Bit Meter visualizations.\n- Fast Fourier (FFT), Constant-Q (CQT), Sliding Windowed Infinite Fourier (SWIFT) and Analog-style transforms\n- Multiple frequency range and smoothing options\n- Multiple graphs\n- Styling of all visual elements\n- Artwork background and color extraction\n- Uses DirectX rendering.\n- Supports the Default User Interface (DUI) and the [Columns User Interface](https://yuo.be/columns-ui) (CUI).\n- Supports dark mode.\n- Supports foobar2000 2.0 and later (32 and 64-bit version).\n\n## Requirements\n\n- Tested on [foobar2000](https://www.foobar2000.org/download) v2.0 or later (32 or 64-bit). ![foobar2000](https://www.foobar2000.org/button-small.png)\n- Tested on Microsoft Windows 10 and later.\n- Tested with [Columns UI](https://yuo.be/columns-ui) 2.1.0.\n\n## Getting started\n\n- Double-click `foo_vis_spectrum_analyzer.fbk2-component`.\n\nor\n\n- Import `foo_vis_spectrum_analyzer.fbk2-component` into foobar2000 using the \"*File / Preferences / Components / Install...*\" menu item.\n\n## Usage\n\nYou can find the user guide [here](docs/README.md).\n\n## Developing\n\n### Requirements\n\nTo build the code you need:\n\n- [Microsoft Visual Studio 2022 Community Edition](https://visualstudio.microsoft.com/downloads/) or later\n- [foobar2000 SDK](https://www.foobar2000.org/SDK) 2025-03-07\n- [Windows Template Library (WTL)](https://github.com/Win32-WTL/WTL) 10.0.10320\n- [Columns UI SDK](https://yuo.be/columns-ui-sdk) 7.0.0\n\nThe following library is included in the code:\n\n- [Project Nayuki FFT](https://www.nayuki.io/page/free-small-fft-in-multiple-languages)\n\nTo create the deployment package you need:\n\n- [PowerShell 7.2](https://github.com/PowerShell/PowerShell) or later\n\n### Setup\n\nCreate the following directory structure:\n\n    3rdParty\n        columns_ui-sdk\n        WTL10_10320\n    bin\n    bin.x86\n    foo_vis_spectrum_analyzer\n    out\n    sdk\n\n- `3rdParty/columns_ui-sdk` contains the Columns UI SDK 7.0.0.\n- `3rdParty/WTL10_10320` contains WTL 10.0.10320.\n- `bin` contains a portable version of foobar2000 64-bit for debugging purposes.\n- `bin.x86` contains a portable version of foobar2000 32-bit for debugging purposes.\n- `foo_vis_spectrum_analyzer` contains the [Git](https://github.com/stuerp/foo_vis_spectrum_analyzer) repository.\n- `out` receives a deployable version of the component.\n- `sdk` contains the foobar2000 SDK.\n\n### Building\n\nOpen `foo_vis_spectrum_analyzer.sln` with Visual Studio and build the solution.\n\n### Packaging\n\nTo create the component first build the x86 configuration and next the x64 configuration.\n\n## Change Log\n\nv0.10.0.0, 2026-03-15\n\n- New: Implemented a high resolution timer.\n  - Refresh rates greater than 60Hz are now achievable if your machine can handle it.\n- New: All / None button in configuration dialog to quickly select all or no channels.\n- New: `Visualize during pause` option. Enable to continue visualization when playback is paused. (Default: Enabled)\n- New: `Scale lines` option. Enable to draw scale lines on the bar area of a peak meter. (Default: Enabled)\n- 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.\n- New: `Rotation` option to rotate the X/Y oscilloscope.\n- New: Bit Meter vizualisation\n  - New `Sign Bits`, `Exponent Bits` and `Mantissa Bits` styles\n  - `Opacity Mode` renders the bit histogram by varying the bar opacity instead of the bar height.\n- Improved: Complete rewrite of Peak meter visualization.\n  - Reduced CPU and GPU load.\n  - Fixed known graphical glitches and inconsistencies.\n  - New: *Center scale* setting to draw scales between the peak meter bars.\n  - New: *Max. bar size* setting to constrain the width/height of a meter bar. (Forum feature request)\n- Improved: Raised the max. number of frequency bins from 512 to 8192.\n- Improved: Completely refactored the configuration dialog.\n  - It became too complex to maintain.\n  - Faster interaction with the render thread.\n- Improved: The preset location supports `%fb2k_path%`, `%fb2k_component_path%` and `%fb2k_profile_path%`.\n- Fixed: Annoying tooltip appearing all over the place in the configuration dialog.\n- Fixed: SWIFT optimization bug.\n- Fixed: Lanczos interpolation bug.\n- Fixed: While editing the stops of a color gradient the component would appear to hang if the stops were not in ascending order.\n- Fixed: The Preset directory no longer resets to the foobar2000 profile directory when loading a preset.\n- Fixed: The gradient stops are no longer reset when editing a color of the gradient.\n- Fixed: Oscilloscope did not implement all of the Y-axis settings.\n- Fixed: Oscilloscope did not render the chunk duration on the X-axis correctly.\n- Fixed: Oscilloscope did not render the vertical grid lines correctly.\n- Fixed: Spectrum visualization did not render the peak top correctly when the peak area style was set to None. [Git Issue 78](https://github.com/stuerp/foo_vis_spectrum_analyzer/issues/78)\n\nYou can read the full history [here](docs/History.md).\n\n## Acknowledgements / Credits\n\n- Peter Pawlowski for the [foobar2000](https://www.foobar2000.org/) audio player. ![foobar2000](https://www.foobar2000.org/button-small.png)\n- [TF3RDL](https://codepen.io/TF3RDL/pens/) for the advice, the help and his:\n  - [Frequency bands spectrum analyzer using either FFT or CQT](https://codepen.io/TF3RDL/pen/poQJwRW)\n  - [SWIFT, Sliding Windowed Infinite Fourier Transform](https://codepen.io/TF3RDL/pen/JjBzjeY)\n  - [Analog-style spectrum analyzer and sliding DFT visualization using AudioWorklet](https://codepen.io/TF3RDL/pen/MWLzPoO)\n- [Project Nayuki](https://www.nayuki.io/page/free-small-fft-in-multiple-languages)\n- [Holger Stenger](https://github.com/stengerh) for [foo_vis_oscilloscope](https://github.com/stengerh/foo_vis_oscilloscope_d2d).\n- fismineur for [foo_musical_spectrum](https://wiki.hydrogenaud.io/index.php?title=Foobar2000:Components/Musical_Spectrum_(foo_musical_spectrum)) that inspired this component.\n- Oleg V. Polikarpotchkin and Peter Lee for their [Bezier Spline](https://www.codeproject.com/Articles/31859/Draw-a-Smooth-Curve-through-a-Set-of-2D-Points-wit) article.\n- [Bedapisl](https://github.com/bedapisl) for [Fast ColorThief](https://github.com/bedapisl/fast-colorthief).\n\n## Reference Material\n\n- [The Audio Frequency Spectrum Explained](https://www.headphonesty.com/2020/02/audio-frequency-spectrum-explained)\n- [Fast Fourier Transformation FFT - Basics](https://www.nti-audio.com/en/support/know-how/fast-fourier-transform-fft)\n- [Sine Tone Generator](https://www.audiocheck.net/audiofrequencysignalgenerator_sinetone.php)\n- [A440](https://en.wikipedia.org/wiki/A440_(pitch_standard))\n- [Constant-Q transform](https://en.wikipedia.org/wiki/Constant-Q_transform)\n- [Mel-frequency cepstrum](https://en.wikipedia.org/wiki/Mel-frequency_cepstrum)\n- [Mel scale](https://en.wikipedia.org/wiki/Mel_scale)\n- [Sliding windowed infinite Fourier transform](https://en.wikipedia.org/wiki/Sliding_DFT)\n\n## Test Material\n\n- [The SOS Audio Test Files](https://www.soundonsound.com/techniques/sos-audio-test-files)\n- [HTML5 AAC Audio Playback Tests - Multichannel](https://www2.iis.fraunhofer.de/AAC/multichannel.html)\n\n## Links\n\n- Home page: [https://github.com/stuerp/foo_vis_spectrum_analyzer](https://github.com/stuerp/foo_vis_spectrum_analyzer)\n- Repository: [https://github.com/stuerp/foo_vis_spectrum_analyzer.git](https://github.com/stuerp/foo_vis_spectrum_analyzer.git)\n- Issue tracker: [https://github.com/stuerp/foo_vis_spectrum_analyzer/issues](https://github.com/stuerp/foo_vis_spectrum_analyzer/issues)\n- Support: [https://hydrogenaudio.org/index.php/topic,125031.0.html](https://hydrogenaudio.org/index.php/topic,125031.0.html).\n\n## License\n\n![License: MIT](https://img.shields.io/badge/license-MIT-yellow.svg)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstuerp%2Ffoo_vis_spectrum_analyzer","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fstuerp%2Ffoo_vis_spectrum_analyzer","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstuerp%2Ffoo_vis_spectrum_analyzer/lists"}