Skip to content

BeSpec-Dev/BeSpec

Repository files navigation

BeSpec

License: MIT Release Build CI Platform

A high-performance, cross-platform, real-time audio spectrum visualizer written in Rust.

BeSpec captures system audio loopback and renders a customizable frequency spectrum overlay. It is architected for low latency, minimal resource footprint, and visual precision.

BeSpec Demo


Features

  • High Performance Engine: Built with egui (immediate mode GUI) and realfft for low-latency rendering and frequency processing.
  • Cross-Platform Audio Capture:
    • Native capture via cpal for Windows (WASAPI), Linux (ALSA/Pulse/Jack), and macOS (CoreAudio).
    • Hot-Swappable Devices: Switch input sources and refresh hardware lists in real-time without application restarts.
  • Visualization Modes:
    • Solid Bars: Smooth gradients with adjustable opacity.
    • Retro LED: Segmented bars with customizable height and gaps, including a "Fill to Peak" warning mode.
    • Line Spectrum: A continuous, glowing frequency contour.
    • Oscilloscope: Real-time raw waveform monitoring in the time domain.
  • Precision FFT: Uses a fixed 2048-point FFT for granular resolution (23.4 Hz/bin @ 48kHz) with configurable Attack/Release and Peak Hold dynamics.
  • Theming Engine: A revamped system handling 25+ presets (e.g., Winamp Classic, Gameboy, O-Scope) and custom user profiles independently.
  • Media & Wikipedia Integration: * Displays track metadata and full-color album art.
    • Clicking album art triggers an intelligent Wikipedia search for the artist or album.
    • Native transport controls (Play/Pause/Skip) for Windows and Linux.
  • Interactive Inspector: Hover over the spectrum to activate a precision crosshair displaying exact frequency (Hz) and amplitude (dB) metrics for individual bins.
  • Modern Desktop Integration:
    • BeOS / Haiku Mode: A distinct window style inspired by the classic BeOS interface.
    • Borderless Overlay: Transparent, chrome-less window with "Always on Top" and "Click-through" support.
Solid Bars Retro LED
Solid Mode LED Mode
Line Spectrum Oscilloscope
Line Mode Scope Mode

Case Studies

BeSpec is designed for audio analysis. See how it uncovers hidden artifacts in professional production:

Compatibility

Platform Support Status Media Capabilities
Windows ✅ Native Metadata, Album Art, & Transport Controls
Linux ✅ Native Metadata, Album Art, & Transport (MPRIS)
macOS ⚠️ Requires Setup Metadata & Album Art only*

Note: macOS requires BlackHole for audio capture. Media controls are not currently supported on macOS.

Installation & Usage

macOS

We provide a native .dmg installer and a Homebrew tap.

  • Option A (Homebrew):

    brew tap bespec-dev/tap
    brew install --cask bespec --no-quarantine
  • Option B (Manual): Download the .dmg (Intel or Silicon) from Releases.

Important: macOS requires audio routing setup (BlackHole) to hear system audio. 👉 Read the macOS Setup Guide

Linux

We provide a universal installer script that handles dependencies, icons, and menu shortcuts.

  1. Download the linux.tar.gz from Releases.
  2. Extract the archive.
  3. Run ./install.sh from the terminal.

Important: You must select the "Monitor" source in PulseAudio/PipeWire. 👉 Read the Linux Setup Guide

Windows

  1. Download the windows.zip from Releases.
  2. Extract and run bespec.exe.

Architecture

BeSpec utilizes a concurrent model to ensure the UI remains responsive at 60+ FPS:

  • Audio Thread: Stream capture and format normalization (I16/U16/F32).
  • FFT Thread: Signal processing via realfft with Hann windowing.
  • GUI Thread: Immediate-mode rendering via egui + wgpu.
  • Synchronization: crossbeam_channel for high-frequency data and Arc<Mutex<SharedState>> for configuration.

Configuration & Logs

BeSpec saves its settings, user-created presets, and diagnostic logs to the standard application data directories for your operating system.

OS Config File (config.json) Data & Logs Directory (presets/, logs/)
Windows %APPDATA%\BeSpec\config.json %APPDATA%\BeSpec\
Linux ~/.config/BeSpec/config.json ~/.local/share/BeSpec/
macOS ~/Library/Application Support/BeSpec/config.json ~/Library/Application Support/BeSpec/

How to Use These Files

  • config.json: This file contains all of your active settings. You can back this up to save your setup, or manually edit it if you need to fine-tune exact window coordinates.
  • presets/ folder: Whenever you save a custom Color or Visual profile in the app, it is stored here as a standard .json file. You can easily copy these files to share your custom themes with other users!
  • logs/ folder: Contains daily rolling log files (e.g., BeSpec.log). These are incredibly useful for troubleshooting audio device detection issues, reviewing FFT performance statistics, or attaching to bug reports.

Privacy & Network Activity

BeSpec is architected to be a privacy-first tool. All audio processing occurs locally in real-time. To support its feature set, the application performs the following minimal network requests:

  • Update Checker: Queries the GitHub API (api.github.com) once on startup to check for new releases.
  • Album Art Fetching: If your media player provides a web URL for artwork (typical for Spotify or streaming services), BeSpec downloads the image file to display it in the overlay.
  • Wikipedia Integration: When you click the album art, BeSpec sends the current Artist and Album metadata to the Wikipedia Search API (en.wikipedia.org) to locate the relevant article. This only occurs upon a user click.

Privacy Promise: No audio data, personal identifiers, or telemetry is ever recorded, stored, or transmitted to any third party. Media listening history is never logged unless explicitly enabled by the user in the app settings.

Why does my OS say the "Microphone" is on? Operating systems (Linux and MacOS) classify any audio input stream (including loopback) as "Microphone Usage." BeSpec processes all audio data locally in real-time. No audio is recorded, stored, or transmitted over the network.

Disclosure

LLM tools were utilized during the development of this project to accelerate learning Rust


Support

If you find this tool useful, consider Buying Me a Coffee to support continued development.

About

Real-time audio spectrum visualizer

Topics

Resources

Stars

Watchers

Forks

Packages

No packages published