Skip to content

userlg/EchoPy

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

29 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

๐ŸŽต EchoPy - Modern Music Visualizer

Version Python License

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.

โœจ Features

๐ŸŽจ 10+ Visualization Styles

  • 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

๐ŸŒˆ Premium Color Themes

  1. Modern - Indigo to Cyan gradients (Premium default)
  2. Cyberpunk - High-contrast Neon Pink & Blue
  3. Aurora - Northern Lights inspired (Green/Blue) [NEW]
  4. Spectre - Ultra-violet to Cyan neon [NEW]
  5. Aesthetic - Soft pastel colors
  6. Classic - Retro green monochrome
  7. Fire - intense Red to yellow flame colors
  8. Ocean - Deep blue to cyan waves
  9. Sunset - Warm Orange and Purple hues
  10. Neon - Bright multi-color spectrum
  11. Rainbow - Full ROYGBIV spectrum

๐ŸŽ›๏ธ Advanced Features

  • ๐ŸชŸ 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

Architecture

EchoPy follows a decoupled architecture inspired by Clean Architecture and SOLID principles.

EchoPy Architecture

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
Loading

๐Ÿ“ธ Gallery

๐Ÿš€ Installation

Prerequisites

  • Python 3.8 or higher
  • Audio input device (microphone or line-in)

Install Dependencies

pip install -r requirements.txt

๐Ÿ’ป Usage

Running from Source

python src/main.py

Keyboard Shortcuts

  • F11 - Toggle fullscreen
  • Ctrl+H - Show/hide control panel
  • Ctrl+V - Cycle Visualization Style
  • Ctrl+T - Cycle Color Theme
  • Ctrl+, - Open settings
  • S - Take Screenshot
  • Ctrl+M - Minimize application
  • Ctrl+X - Quit application
  • ESC - Exit fullscreen

๐Ÿ–ฑ๏ธ Mouse Controls

  • 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).

๐Ÿ“ฆ Building Executables

The project includes a fully cross-platform build.spec file.

  • Windows: Running pyinstaller build.spec on Windows will automatically generate a high-quality resources/favicon.ico from resources/favicon.png using the Pillow library and embed it into the generated .exe executable.
  • Linux: Running pyinstaller build.spec on Linux packages the binary into a single-file executable, and the application's runtime code loads the PNG icon for the window.

Build commands:

# Ensure dependencies are installed (including Pillow for icon generation on Windows)
pip install -r requirements.txt

# Run the build
pyinstaller build.spec

The compiled binary will be placed inside the dist/ directory (dist/EchoPy.exe on Windows, or dist/EchoPy on Linux).

๐ŸŽฎ Controls

Control Panel

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

Capturing System Audio

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.

Settings Dialog

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

๐Ÿ”ง Configuration

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
}

๐Ÿ“ Project Structure

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

๐ŸŽฏ Performance Tips

  1. Lower FFT Size - Faster processing, less frequency detail
  2. Reduce Smoothing - More responsive but jittery
  3. Limit FPS - Lower values reduce CPU usage
  4. Simpler Styles - Spectrum Bars and Waveform are fastest

๐Ÿ› Troubleshooting

No Audio Input

  • Check that your microphone is connected and enabled
  • Select the correct input device in Settings
  • Grant microphone permissions if prompted

Low Frame Rate

  • Close other applications to free up CPU
  • Reduce FPS limit in settings
  • Try simpler visualization styles
  • Lower FFT size

๐Ÿ“„ License

MIT License - See LICENSE file for details

๐Ÿค Contributing

Contributions are welcome! Feel free to:

  • Report bugs
  • Suggest new visualization styles
  • Add new color themes
  • Improve performance
  • Enhance documentation

๐Ÿ™ Credits

Built with:


Enjoy visualizing your music! ๐ŸŽถโœจ

About

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.

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors