Skip to content

StGrikus/Audio-Spectrum-Test-Build

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

True Audio Spectrum Analyzer

C# .NET WPF

EN: English · UK: Українська · RU: Русский


English

Unlike many “visualizers” that only fake a reaction to sound, this project is a real spectrum analyzer. It captures system audio via WASAPI loopback and runs an FFT on the signal in real time, showing levels per frequency band.

Author

Highlights

  • Real FFT math: band levels come from analysis, not decorative animation. FFT sizes up to 16384 for high frequency resolution (higher CPU use).
  • Native capture: WASAPI loopback listens to what plays on the selected output device on Windows.
  • Hi-res friendly: high sample rates and bit depths (e.g. 192000 Hz, 32-bit stereo) within device limits.
  • Tunable analysis: on-screen range (Fmin / Fmax, default 20 Hz–16500 Hz), Bands count (20–312 in code), separate EMA dB smoothing and bar height smoothing.
  • UI & multi-monitor: fullscreen (including over taskbar), two-monitor mode (L/R on different screens), column presets, gradients, RGB/hex color picker; UI languages English, Russian, Ukrainian.
  • Hotkey: Ctrl+Shift+P opens settings (physical P, works regardless of keyboard layout).

Screenshots

First run

Welcome, quick tips (fullscreen, colors, multi-monitor, Ctrl+Shift+P), and output device selection.

First run onboarding

Device selection

WASAPI loopback dialog: device, sample rate and bit depth when applicable, mix format hint.

WASAPI device picker

Main window

Stereo LEFT / RIGHT and dB scale after startup with chosen settings.

Main spectrum window

Settings (scrollable window)

Device, meter, appearance, fullscreen, frequency/dB mapping, language.

Settings — device and meter

Settings — appearance and fullscreen

Settings — frequency, dB, language

Band count

Sparse bands (~30) vs dense grid (~312) per channel.

Fewer bands

More bands

Single monitor

One spectrum window on a single display.

Single monitor mode

Two monitors

Left and right channels on separate screens.

Two monitors L/R

Settings reference (short)

  • Device (WASAPI loopback): current output and capture format; Select Device… for device and format.
  • Meter: update interval, FFT size, Bands count, Smoothing (EMA dB), Display smoothing (bar height).
  • Appearance: Column preset, gradient from / to, Pick… for colors.
  • Fullscreen: Single monitor or Two monitors (L/R) with monitor picks.
  • Frequency and dB: Fmin/Fmax, Min dB (bottom), Max dB (top).
  • Language: English / Russian / Ukrainian.
  • Buttons: Reset all settings, Cancel, OK.

Build from source

  1. Clone this repository:

    git clone git@github.com:StGrikus/Audio-Spectrum-Test-Build.git

    HTTPS (if you prefer): https://github.com/StGrikus/Audio-Spectrum-Test-Build.git

  2. Open the solution: System/AudioSpectrumWpf/AudioSpectrumWpf.sln or System/AudioSpectrumWpf/AudioSpectrumWpf.slnx.

  3. Install .NET 8 SDK and optionally Visual Studio 2022 / Rider with WPF.

  4. Build Release, x64, run AudioSpectrumWpf.

Requirements: Windows 10/11 x64.

Portable build (testers)

Self-contained single-folder output from the repo root.

CMD (double-click AudioSpectrum.cmd runs publish + launch, same as run):

AudioSpectrum.cmd run

Rebuild on file changes: AudioSpectrum.cmd watch. Clean bin/obj: AudioSpectrum.cmd clean. Help: AudioSpectrum.cmd help.

PowerShell:

.\AudioSpectrum.ps1 -Run

If execution policy blocks scripts:

powershell -ExecutionPolicy Bypass -File .\AudioSpectrum.ps1 -Run

Output: dist\AudioSpectrum-Portable\ with AudioSpectrumWpf.exe. On first run, settings.json is created next to the exe. Do not commit large zips to git—use Releases or an external link.

Tech stack

  • Language: C#
  • UI: WPF
  • Audio: WASAPI loopback via NAudio
  • Runtime: .NET 8 (Windows)

Project evolution

The first version of the analyzer was a Python + matplotlib prototype (FFT, log-spaced bands, dB). Real-time animation of hundreds of bands hit matplotlib limits; the app was moved to C# + WPF for native WASAPI, rendering, and fullscreen workflows.

Python + matplotlib prototype

Roadmap

  • Save user presets to file
  • Additional FFT window functions as needed

License

This software is proprietary. All rights reserved. See LICENSE.


Українська

На відміну від багатьох «візуалізаторів», які лише імітують реакцію на звук, цей проєкт — справжній спектральний аналізатор. Він захоплює системний звук через WASAPI loopback і в реальному часі виконує FFT над сигналом, показуючи рівні по частотних смугах.

Автор

Ключові особливості

  • Справжня математика FFT: рівні смуг з аналізу, не декоративна анімація. Розмір FFT до 16384 — висока частотна роздільна здатність (більше навантаження на CPU).
  • Нативний захват: WASAPI loopback — прослуховування того, що відтворюється на вибраному вихідному пристрої Windows.
  • Hi-res: високі частоти дискретизації та бітності (наприклад, 192000 Гц, 32-біт стерео) в межах можливостей пристрою.
  • Гнучкий аналіз: діапазон на екрані (Fmin / Fmax, за замовчуванням 20 Гц–16500 Гц), Bands count (20–312 у коді), окреме згладжування EMA dB і згладжування висоти стовпчиків.
  • Інтерфейс і кілька моніторів: повноекранний режим (у т.ч. поверх панелі завдань), режим два монітори (L/R на різних екранах), пресети стовпчиків, градієнти, вибір кольору RGB/hex; мови інтерфейсу English, Русский, Українська.
  • Гаряча клавіша: Ctrl+Shift+P відкриває налаштування (фізична клавіша P, працює незалежно від розкладки).

Скріншоти

Перший запуск

Вітання, короткі підказки (повноекранний режим, кольори, кілька моніторів, Ctrl+Shift+P) і вибір пристрою виводу.

Перший запуск

Вибір пристрою

Діалог WASAPI loopback: пристрій, за потреби частота дискретизації та бітність, підказка щодо формату mix.

Вибір пристрою WASAPI

Головне вікно

Стерео LEFT / RIGHT і шкала dB після запуску з обраними налаштуваннями.

Головне вікно спектра

Налаштування (вікно з прокруткою)

Пристрій, метр, зовнішній вигляд, повноекранний режим, відображення частот/dB, мова.

Налаштування — пристрій і метр

Налаштування — зовнішній вигляд і повноекранний режим

Налаштування — частоти, dB, мова

Кількість смуг

Рідкі смуги (~30) проти щільної сітки (~312) на канал.

Менше смуг

Більше смуг

Один монітор

Одне вікно спектра на одному дисплеї.

Режим одного монітора

Два монітори

Лівий і правий канали на різних екранах.

Два монітори L/R

Короткий довідник налаштувань

  • Device (WASAPI loopback): поточний вихід і формат захоплення; Select Device… — вибір пристрою та формату.
  • Meter: інтервал оновлення, FFT size, Bands count, Smoothing (EMA dB), Display smoothing (bar height).
  • Appearance: Column preset, градієнт from / to, Pick… для кольорів.
  • Fullscreen: Single monitor або Two monitors (L/R) з вибором моніторів.
  • Frequency and dB: Fmin/Fmax, Min dB (bottom), Max dB (top).
  • Language: English / Russian / Ukrainian.
  • Кнопки: Reset all settings, Cancel, OK.

Збірка з вихідного коду

  1. Клонуйте репозиторій:

    git clone git@github.com:StGrikus/Audio-Spectrum-Test-Build.git

    HTTPS (за бажанням): https://github.com/StGrikus/Audio-Spectrum-Test-Build.git

  2. Відкрийте рішення: System/AudioSpectrumWpf/AudioSpectrumWpf.sln або System/AudioSpectrumWpf/AudioSpectrumWpf.slnx.

  3. Установіть .NET 8 SDK і за потреби Visual Studio 2022 / Rider з підтримкою WPF.

  4. Зіберіть Release, x64, запустіть AudioSpectrumWpf.

Вимоги: Windows 10/11 x64.

Portable-збірка (для тестувальників)

Self-contained збірка в одну папку з кореня репозиторію.

CMD (подвійний клік на AudioSpectrum.cmd — publish і запуск, те саме що run):

AudioSpectrum.cmd run

Перезбірка після змін файлів: AudioSpectrum.cmd watch. Очистка bin/obj: AudioSpectrum.cmd clean. Довідка: AudioSpectrum.cmd help.

PowerShell:

.\AudioSpectrum.ps1 -Run

Якщо політика виконання блокує скрипти:

powershell -ExecutionPolicy Bypass -File .\AudioSpectrum.ps1 -Run

Результат: dist\AudioSpectrum-Portable\ з AudioSpectrumWpf.exe. Під час першого запуску поруч з exe створюється settings.json. Великі архіви в git не комітьте — використовуйте Releases або зовнішнє посилання.

Технологічний стек

  • Мова: C#
  • UI: WPF
  • Аудіо: WASAPI loopback через NAudio
  • Платформа: .NET 8 (Windows)

Еволюція проєкту

Перша версія аналізатора — прототип на Python і matplotlib (FFT, логарифмічні смуги, dB). Анімація сотень смуг у реальному часі вичерпувала можливості matplotlib; застосунок перенесено на C# + WPF для нативного WASAPI, рендерингу та повноекранних сценаріїв.

Прототип Python + matplotlib

Дорожня карта

  • Збереження користувацьких пресетів у файл
  • Додаткові віконні функції для FFT за потреби

Ліцензія

Програмне забезпечення є власницьким. Усі права захищено. Див. LICENSE.


Русский

В отличие от многих «визуализаторов», которые лишь имитируют реакцию на звук, этот проект — настоящий спектральный анализатор. Приложение захватывает системное аудио через WASAPI loopback и в реальном времени выполняет БПФ (FFT) по сигналу, отображая уровни по частотным полосам.

Автор

Ключевые особенности

  • Честная математика (FFT): реальные уровни по полосам, не декоративная анимация. Размер окна FFT до 16384 — высокое частотное разрешение (выше нагрузка на CPU).
  • Нативный захват: WASAPI loopback — прослушивание того, что играет на выбранном выходном устройстве Windows.
  • Hi-Res: высокие частоты дискретизации и разрядности (например, 192000 Hz, 32 bit, стерео) в пределах возможностей устройства.
  • Гибкая настройка: диапазон Fmin / Fmax (по умолчанию 20 Hz – 16500 Hz), Bands count (в коде 20–312), два сглаживания: EMA по dB и сглаживание высоты столбцов.
  • Интерфейс и мультимонитор: полноэкранный режим (в т.ч. с перекрытием панели задач), режим два монитора (L/R на разных экранах), пресеты столбцов, градиент, выбор цвета RGB/Hex; языки English, Русский, Українська.
  • Горячая клавиша: Ctrl+Shift+P открывает настройки (физическая клавиша P, удобно при любой раскладке).

Скриншоты

Первый запуск

Приветствие, краткие подсказки (полноэкранный режим, цвета, мультимонитор, Ctrl+Shift+P), выбор устройства вывода.

Первый запуск

Выбор устройства

Диалог WASAPI loopback: устройство, при необходимости частота и разрядность, подсказка по формату mix.

Выбор устройства WASAPI

Главное окно

Стерео LEFT / RIGHT и шкала dB после старта с выбранными настройками.

Главное окно спектра

Окно настроек (прокручиваемое)

Устройство, метр, внешний вид, полноэкранный режим, частоты/dB, язык.

Настройки — устройство и метр

Настройки — внешний вид и полноэкранный режим

Настройки — частоты, dB, язык

Число полос

Редкие полосы (~30) и плотная сетка (~312) на канал.

Меньше полос

Больше полос

Один монитор

Одно окно спектра на одном экране.

Режим одного монитора

Два монитора

Левый и правый каналы на разных экранах.

Два монитора L/R

Окно настроек: кратко

  • Device (WASAPI loopback): текущее устройство и формат захвата; Select Device… — выбор устройства и формата.
  • Meter: интервал обновления, FFT size, Bands count, Smoothing (EMA dB), Display smoothing (bar height).
  • Appearance: Column preset, градиент from / to, Pick… для цветов.
  • Fullscreen: Single monitor или Two monitors (L/R) с выбором мониторов.
  • Frequency and dB: Fmin/Fmax, Min dB (bottom), Max dB (top).
  • Language: English / Russian / Ukrainian.
  • Кнопки: Reset all settings, Cancel, OK.

Установка и запуск из исходников

  1. Клонируйте репозиторий:

    git clone git@github.com:StGrikus/Audio-Spectrum-Test-Build.git

    HTTPS (по желанию): https://github.com/StGrikus/Audio-Spectrum-Test-Build.git

  2. Откройте решение: System/AudioSpectrumWpf/AudioSpectrumWpf.sln или System/AudioSpectrumWpf/AudioSpectrumWpf.slnx.

  3. Установите .NET 8 SDK и при необходимости Visual Studio 2022 / Rider с WPF.

  4. Соберите Release, x64, запустите AudioSpectrumWpf.

Требования: Windows 10/11 x64.

Portable-сборка для тестеров

Self-contained сборка из корня репозитория.

CMD (двойной щелчок по AudioSpectrum.cmd — то же, что run):

AudioSpectrum.cmd run

Пересборка при изменениях: AudioSpectrum.cmd watch. Очистка: AudioSpectrum.cmd clean. Справка: AudioSpectrum.cmd help.

PowerShell:

.\AudioSpectrum.ps1 -Run

При ошибке политики выполнения:

powershell -ExecutionPolicy Bypass -File .\AudioSpectrum.ps1 -Run

Результат: dist\AudioSpectrum-Portable\ с AudioSpectrumWpf.exe. При первом запуске рядом с exe создаётся settings.json. Большие архивы в git не храните — выкладывайте в Releases или отдельной ссылкой.

Технологический стек

  • Язык: C#
  • UI: WPF
  • Аудио: WASAPI loopback через NAudio
  • Платформа: .NET 8 (Windows)

Эволюция проекта

Первая версия анализатора — прототип на Python и matplotlib (БПФ, логарифмическое распределение полос, децибелы). Анимация сотен полос в реальном времени упиралась в производительность matplotlib; основное приложение перенесено на C# + WPF.

Прототип Python + matplotlib

Roadmap

  • Сохранение пользовательских пресетов в файл
  • Дополнительные оконные функции для FFT (по мере необходимости)

Лицензия

Программа распространяется на условиях проприетарной лицензии. Все права защищены. См. файл LICENSE.

About

Audio Spectrum Analyzer — Portable Test Build A self-contained, portable build for testing the True Audio Spectrum Analyzer. Unlike standard decorative visualizers, this tool performs real-time FFT math on system audio captured via WASAPI loopback.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors