EchoPy is a stunning real-time audio visualizer built with Python, featuring 10+ unique visualization styles, 10 beautiful color themes, and support for custom backgrounds.
- Spectrum Bars - Classic frequency analyzer with gradient bars
- Waveform - Time-domain wave with glow effects
- Circular Spectrum - Radial frequency display
- Particles - Physics-based particle system
- Radial Bars - Rotating sunray effect
- Fire Effect - Heat map simulation
- Matrix Rain - Cyberpunk falling characters
- Oscilloscope - Lissajous curves with CRT effects
- Frequency Rings - Expanding ripple patterns
- Audio Lines - Flowing Bezier curves
- Modern - Indigo to Cyan gradients (Premium default)
- Cyberpunk - High-contrast Neon Pink & Blue
- Aurora - Northern Lights inspired (Green/Blue) [NEW]
- Spectre - Ultra-violet to Cyan neon [NEW]
- Aesthetic - Soft pastel colors
- Classic - Retro green monochrome
- Fire - intense Red to yellow flame colors
- Ocean - Deep blue to cyan waves
- Sunset - Warm Orange and Purple hues
- Neon - Bright multi-color spectrum
- Rainbow - Full ROYGBIV spectrum
- ๐ช Frameless & Translucent - True "Glass" transparent backgrounds overlapping your desktop
- ๐ผ๏ธ Custom backgrounds - Persistent background loading
- ๐๏ธ Audio device selection - Choose input source
- โ๏ธ Configurable settings - Adjust smoothing, sample rate, FFT size, and Gain in real-time
- ๐ฅ๏ธ Fullscreen mode - Immersive experience (F11)
- ๐พ Settings persistence - Robust saving to AppData
- ๐ Real-time performance - 60 FPS smooth rendering
- ๐ Premium UI - Glassmorphism, SVG icons, and modern controls
EchoPy follows a decoupled architecture inspired by Clean Architecture and SOLID principles.
graph TD
subgraph Presentation_Layer [Presentation Layer]
MW[MainWindow]
VW[VisualizerWidget]
CP[ControlPanel]
end
subgraph Core_Logic [Core Logic]
AP[AudioProcessor]
VF[VisualizerFactory]
SB[SmoothingBuffer]
end
subgraph Plugin_Layer [Plugin Layer - Styles]
BaseV[BaseVisualizer]
Styles[SpectrumBars, Waveform, etc.]
end
MW --> VF
MW --> AP
VF --> BaseV
BaseV -.-> Styles
AP --> SB
AP -- Audio Data --> VW
VW -- delegate render --> BaseV
- Python 3.8 or higher
- Audio input device (microphone or line-in)
pip install -r requirements.txtpython src/main.pyF11- Toggle fullscreenCtrl+H- Show/hide control panelCtrl+V- Cycle Visualization StyleCtrl+T- Cycle Color ThemeCtrl+,- Open settingsS- Take ScreenshotCtrl+M- Minimize applicationCtrl+X- Quit applicationESC- Exit fullscreen
- Left-Click & Drag anywhere on the visualizer to move the frameless window freely.
- Hover Edges to dynamically resize the application window.
- (Note: Right-click context menu is intentionally disabled in this version. Please rely on the keyboard shortcuts above to access settings and controls).
The project includes a fully cross-platform build.spec file.
- Windows: Running
pyinstaller build.specon Windows will automatically generate a high-qualityresources/favicon.icofromresources/favicon.pngusing thePillowlibrary and embed it into the generated.exeexecutable. - Linux: Running
pyinstaller build.specon Linux packages the binary into a single-file executable, and the application's runtime code loads the PNG icon for the window.
# Ensure dependencies are installed (including Pillow for icon generation on Windows)
pip install -r requirements.txt
# Run the build
pyinstaller build.specThe compiled binary will be placed inside the dist/ directory (dist/EchoPy.exe on Windows, or dist/EchoPy on Linux).
Access via Ctrl+H or Right-Click > Toggle Controls.
- Visualization Style - Dropdown to select visualization mode
- Color Theme - Grid of theme buttons for quick switching
- Background - Load custom images or clear background
EchoPy is designed to capture system sound playing on your computer:
Windows:
- EchoPy natively supports WASAPI Loopback (via
PyAudioWPatch). - It automatically detects your default output device (even digital/HDMI outputs like NVIDIA SyncMaster) and captures system audio directly, without needing virtual audio cables or extra drivers.
Linux:
- EchoPy captures from the default audio system. You can redirect output to the visualizer using PulseAudio Volume Control (
pavucontrol), Pipewire routing, or ALSA loopback channels.
Access via Ctrl+, or Right-Click > Preferences.
- Input Device - Select audio source
- Sample Rate - 22050, 44100, or 48000 Hz
- FFT Size - Trade-off between frequency/time resolution
- Smoothing - Adjust visual stability (0.0 to 1.0)
- BG Opacity - Background image transparency
- FPS Limit - Set maximum frame rate
Settings are automatically saved to config.json in the user's data directory (ensuring persistence even after updates):
- Windows:
%LOCALAPPDATA%\EchoPy\config.json - Linux/Mac:
~/.local/share/EchoPy/config.json
{
"theme": "modern",
"style": "spectrum_bars",
"sample_rate": 44100,
"fft_size": 2048,
"smoothing": 0.8,
"background_image": null,
"fps_limit": 60
}EchoPy/
โโโ src/
โ โโโ main.py # Application entry point
โ โโโ audio_processor.py # Audio capture and FFT
โ โโโ visualizer.py # Base visualizer classes
โ โโโ themes.py # Color theme definitions
โ โโโ utils.py # Utility functions
โ โโโ styles/ # Visualization implementations
โ โโโ ui/ # User interface components
โโโ resources/ # Icons and assets
โโโ requirements.txt
โโโ build.spec # PyInstaller configuration
โโโ README.md
- Lower FFT Size - Faster processing, less frequency detail
- Reduce Smoothing - More responsive but jittery
- Limit FPS - Lower values reduce CPU usage
- Simpler Styles - Spectrum Bars and Waveform are fastest
- Check that your microphone is connected and enabled
- Select the correct input device in Settings
- Grant microphone permissions if prompted
- Close other applications to free up CPU
- Reduce FPS limit in settings
- Try simpler visualization styles
- Lower FFT size
MIT License - See LICENSE file for details
Contributions are welcome! Feel free to:
- Report bugs
- Suggest new visualization styles
- Add new color themes
- Improve performance
- Enhance documentation
Built with:
- PySide6 - Qt for Python GUI framework
- NumPy - Numerical computing
- sounddevice - Audio I/O
Enjoy visualizing your music! ๐ถโจ



