Skip to main content

Real-time audio equalizer and spectrum analyzer

Project description

Real-time Audio Equalizer & Spectrum Analyzer

A professional-grade, high-fidelity audio analysis and equalization tool built with Python. This application captures real-time audio input, processes it through a 10-band peaking equalizer, and provides live visualizations of both the waveform and frequency spectrum.

App Preview

✨ Features

  • Professional 10-Band EQ: Standardized bands (31Hz to 16kHz) with ±12dB gain control.
  • Accurate Spectrum Analysis: Real-time FFT with proper dBFS normalization.
  • Visual Overlays:
    • Live EQ Curve: See exactly how your filters are shaping the audio.
    • Peak Hold: Tracks and decays from maximum peaks for better level monitoring.
  • Audio Presets: Quick-access profiles like Bass Boost, Treble Boost, V-Shape, and Vocal.
  • Modern Dark UI: Sleek, high-contrast interface designed for professional environments.
  • Thread-Safe Core: Robust audio capturing using PyAudio and threading to ensure zero-flicker performance.

🛠️ Tech Stack

  • Language: Python 3.10+
  • Audio Engine: PyAudio (PortAudio wrapper)
  • DSP: NumPy & SciPy (Signal processing)
  • GUI: Tkinter (Themed with ttk)
  • Graphics: Matplotlib (High-performance plotting)

🚀 Getting Started

Prerequisites

You'll need Python installed. It is recommended to use a virtual environment.

Installation

  1. Clone the repository:

    git clone https://github.com/Iyeba-Kallon/realtime-audio-equalizer-spectrum-analyzer.git
    cd realtime-audio-equalizer-spectrum-analyzer
    
  2. Install dependencies:

    pip install -r requirements.txt
    

    Note: On some systems, you may need to install portaudio development headers separately (e.g., sudo apt install libportaudio2 on Linux).

Running the App

Simply run the main script:

python main.py

📖 How it Works

  1. Capture: The AudioEngine opens a stream via PyAudio to capture system or microphone input.
  2. DSP Pipeline:
    • Audio is converted to normalized float32.
    • Each EQ band is a second-order IIR peaking filter (RBJ design).
    • Filters are applied in series to the incoming chunks.
  3. Analysis: An FFT (Fast Fourier Transform) is computed with a Hanning window to generate the magnitude spectrum.
  4. Visualization: The GUI thread pulls the processed data through a thread-safe lock and updates the Matplotlib plots at ~30 FPS.

🤝 Contributing

Contributions are welcome! Feel free to open an issue or submit a pull request for new features (like recording, output playback, or more visualizer types).

📄 License

This project is licensed under the MIT License.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

speqtr-0.1.0.tar.gz (8.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

speqtr-0.1.0-py3-none-any.whl (10.4 kB view details)

Uploaded Python 3

File details

Details for the file speqtr-0.1.0.tar.gz.

File metadata

  • Download URL: speqtr-0.1.0.tar.gz
  • Upload date:
  • Size: 8.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.2 {"installer":{"name":"uv","version":"0.11.2","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for speqtr-0.1.0.tar.gz
Algorithm Hash digest
SHA256 c9af3143ac759c2ffeeebc1d8c53796ae9a3083e8620a5ef2bd7f86cd668afd9
MD5 979fea9fb9628395977412d656b30389
BLAKE2b-256 5ab6d158b0fda8f8c540862a63e8dce9aaeccdd1eab8d807391ee885bbfda4cc

See more details on using hashes here.

File details

Details for the file speqtr-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: speqtr-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 10.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.2 {"installer":{"name":"uv","version":"0.11.2","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for speqtr-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 b3cadb49f89ef9160caf62badfa5502d7a9139be4cc1ecce35fa188290735fb8
MD5 7b6da29484a6d1d9904203bcd485972b
BLAKE2b-256 5379bbf1ba2ccdd7cd5a1c087322ac35d432e433c36aa122e5b2e59860fd13b5

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page