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]
- 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
- ๐ผ๏ธ Custom backgrounds - Persistent background loading
- ๐๏ธ Audio device selection - Choose input source
- โ๏ธ Configurable settings - Adjust smoothing, sample rate, FFT size
- ๐ฅ๏ธ 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+,- Open settingsCtrl+Q- Quit applicationESC- Exit fullscreen
- Right-Click anywhere to open the Main Menu (Settings, Toggle Controls, Fullscreen, Exit).
# Install PyInstaller
pip install pyinstaller
# Build executable
pyinstaller build.spec
# Find executable in dist/EchoPy.exe# Install PyInstaller
pip install pyinstaller
# Build executable
pyinstaller build.spec
# Find executable in dist/EchoPyThe generated executable will be approximately 100-150MB due to bundled dependencies.
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
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
By default, EchoPy captures from microphone. To visualize music playing on your computer:
Windows:
- Install VB-Audio Virtual Cable
- Set it as default playback device
- Select "CABLE Output" in EchoPy settings
Linux:
- Use PulseAudio Monitor:
pavucontrol - Or JACK audio routing
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! ๐ถโจ



