Python desktop audio studio for download, analysis, editing, stem separation, playlist transfer, and batch processing
Download • Analyze • Edit • Separate • Transfer • Batch Process
Quick Start • Feature Highlights • Docs • Application Overview • Roadmap
LimeWire is a Windows-friendly Python audio application that brings downloading, playback, analysis, editing, stem separation, playlist transfer, and batch processing into one desktop workspace. It is designed to feel like a practical production tool rather than a collection of disconnected utilities.
- keeping common audio tasks in one desktop application instead of sending users between specialist tools
- supporting both quick utility workflows and deeper production workflows, from grabbing a track to editing stems
- pairing broad feature coverage with security controls, documentation, and release hygiene
| Workflow | What it supports |
|---|---|
| Download and library intake | Capture audio from major platforms, queue jobs, convert formats, and organize metadata |
| Analysis and identification | Review BPM, key, loudness, waveform, spectrogram, and identification results in one place |
| Editing and remixing | Trim, fade, merge, record, separate stems, apply effects, and export updated audio |
| Cross-platform music management | Move playlists, liked tracks, artists, and albums between supported services |
| Batch processing | Normalize, convert, trim silence, apply fades, and clean metadata at scale |
# Prerequisites: Python 3.10+ and FFmpeg on PATH
winget install ffmpeg
# Core install (download + playback)
pip install yt-dlp pillow requests mutagen pyglet
# Launch
python LimeWire.py
# or: python -m limewireOptional modules - install only what you need
pip install librosa soundfile pyloudnorm # BPM/key/loudness analysis
pip install musicbrainzngs pyacoustid # Track identification
pip install shazamio # Shazam (Python <=3.12)
pip install demucs # AI stem separation (needs PyTorch)
pip install pydub sounddevice pyrubberband # Editing & recording
pip install openai-whisper # Whisper transcription
pip install pedalboard # Audio effects (Spotify)
pip install pyflp # FL Studio integration
pip install tkinterdnd2 # Drag & dropAll-in-one:
pip install yt-dlp pillow requests mutagen pyglet librosa soundfile pyloudnorm musicbrainzngs pyacoustid demucs pydub sounddevice pyrubberband openai-whisper pedalboardThe status bar shows module count (e.g.,
12/14). Click it to see what's missing.
# Run the automated installer
setup.bat# 1. Install FFmpeg via Homebrew
brew install ffmpeg
# 2. Install core Python dependencies
pip3 install yt-dlp pillow requests mutagen pyglet
# 3. Launch
python3 LimeWire.pyNote:
sounddevicerequires PortAudio on macOS:brew install portaudio && pip install sounddevicepedalboardis fully supported on macOS (Apple Silicon and Intel).tkinterdnd2requires:brew install python-tk
# 1. Install FFmpeg (Debian/Ubuntu)
sudo apt install ffmpeg python3-tk
# Fedora/RHEL:
# sudo dnf install ffmpeg python3-tkinter
# 2. Install core Python dependencies
pip3 install yt-dlp pillow requests mutagen pyglet
# 3. Launch
python3 LimeWire.pyNote: Audio playback uses
sounddevicewhich requireslibportaudio2:sudo apt install libportaudio2 && pip install sounddevicetkinterdnd2on Linux:pip install tkinterdnd2(no extra system packages needed on most distros)
Screenshots (20 of 25 tabs — Lyrics, Visualizer, Library, DJ, and Image Scraper tabs pending screenshots)
Search & Grab![]() |
Batch Download![]() |
Playlist![]() |
Converter![]() |
Player![]() |
Analyze![]() |
Stems (AI)![]() |
Effects![]() |
Discovery![]() |
Samples![]() |
Editor![]() |
Recorder![]() |
Spectrogram![]() |
Pitch/Time![]() |
Remixer![]() |
Batch Process![]() |
Scheduler![]() |
History![]() |
Cover Art![]() |
Settings![]() |
| Tab | Capabilities |
|---|---|
| Search & Grab | Paste any URL, auto-detect source, choose format (MP3/WAV/FLAC/OGG/M4A/AAC/OPUS), quality selector |
| Batch Download | Queue multiple URLs, persistent queue, retry failed, progress tracking |
| Playlist | YouTube playlist fetch, cross-service transfer (Spotify, YouTube, TIDAL, Deezer, SoundCloud, Apple Music, Amazon Music), sync liked songs, artists, albums |
| Converter | Format conversion via ffmpeg, metadata preservation |
| History | Searchable download log with replay and management |
| Scheduler | Schedule downloads for specific times with background polling |
| Cover Art | View, add, fetch (iTunes/MusicBrainz), batch-apply album artwork |
| Tab | Capabilities |
|---|---|
| Player | Waveform display, EQ spectrum, album art, speed control, A-B loop, crossfade, M3U playlists |
| Analyze | BPM, key, Camelot, LUFS, true peak. Shazam/MusicBrainz/Chromaprint/Apple Music identification |
| Discovery | Library scanner, BPM/key caching, harmonic mixing suggestions, smart playlists, CSV export |
| Spectrogram | Linear/Mel/CQT with viridis/magma/plasma/inferno colormaps, PNG export |
| Tab | Capabilities |
|---|---|
| Stems | AI separation via Demucs (htdemucs, htdemucs_ft, mdx_extra) — vocals, drums, bass, other, piano, guitar |
| Remixer | Mix stems: per-stem volume (0-150%), pan (L-R), mute/solo, preview, export |
| Editor | Non-destructive trim/cut/fade/merge, undo/redo, waveform selection, 32x zoom |
| Recorder | Mic recording, VU meter, live waveform, Whisper AI transcription, SRT export |
| Pitch/Time | Pitch shift (semitones), time stretch, BPM auto-detect, vocal isolation |
| Effects | Pedalboard chain: gain, compressor, limiter, reverb, delay, chorus, filters. Save/load presets |
| Batch Process | Bulk normalize loudness (dBFS), convert format, fade in/out, trim silence, strip metadata |
| Samples | Freesound.org browser with preview and download |
| Lyrics | Fetch and display synced lyrics, search by title/artist |
| Visualizer | Real-time audio visualizations with multiple modes |
| Library | Local music library management with smart folders |
| DJ | Dual-deck mixing with crossfader and BPM sync |
| Image Scraper | Web image extraction, SoundCloud artwork, MP3+art download |
- 25 built-in themes with instant live switching (no restart)
- Community theme loader — load custom JSON themes via Tools menu
- Skin Customizer (
skin_customizer.py) — visual theme editor with live preview - 6 languages — English, Spanish, French, German, Japanese, Portuguese
- Plugin system — SHA-256 hash-trusted custom audio processors
- VST3/AU hosting — load VST3 plugins in the effects chain
- MIDI Learn — map hardware controllers in the Remixer
- Discord Rich Presence — show currently playing track
- Cloud sync — export/import settings to Dropbox/OneDrive/Google Drive
| Shortcut | Action |
|---|---|
Ctrl+K |
Command Palette — fuzzy search pages, history, library |
Ctrl+D |
Download / Grab URL |
Ctrl+O |
Open downloads folder |
Space |
Play / Pause |
Ctrl+Right/Left |
Next / Previous track |
Ctrl+Up/Down |
Volume up / down |
Shift+Escape |
Quick close |
Ctrl+? |
Show shortcuts dialog |
25 built-in themes with instant live switching — no restart required:
| Theme | Preview |
|---|---|
| LiveWire (default) | Electric cyan on dark navy |
| Light | Clean white, green accents |
| Dark | Rich dark, green accents |
| Modern | GitHub-inspired, high contrast |
| Synthwave | Neon pink/purple retro |
| Dracula | Purple/pink, dev favorite |
| Catppuccin | Soft pastels, easy on the eyes |
| Tokyo Night | Blue-tinted calm palette |
| Spotify | Green on black |
| Classic | OG lime green nostalgia |
| Nord | Arctic blue-grey |
| Gruvbox | Warm retro earth tones |
| High Contrast | Maximum accessibility |
| Solarized Dark | Precision colors, reduced eye strain |
| Monokai Pro | Vibrant developer classic |
| Midnight Rose | Deep plum with rose gold accents |
| Ocean Depths | Deep sea blue with bioluminescent teal |
| Sunset Boulevard | Warm amber/coral gradients on charcoal |
| Emerald Forest | Rich greens with gold highlights |
| Lavender Haze | Soft purple pastels on dark base |
| Cherry Blossom | Soft pink/white Japanese spring aesthetic |
| Cyberpunk | Neon yellow/magenta with glitch energy |
| Arctic | Icy white/blue Scandinavian minimal |
Each theme defines 37 semantic color tokens (backgrounds, text, accents, borders, cards, states, surfaces, focus rings) for pixel-perfect consistency across all 25 tabs.
Create your own: Run python skin_customizer.py to visually design custom themes and export them as JSON files loadable via Tools > Load Community Theme.
LimeWire ships as both a modular package (limewire/) and a backward-compatible single-file launcher (LimeWire.py):
LimeWire/
LimeWire.py # Thin launcher (backward compat)
skin_customizer.py # Visual theme editor
limewire/
__init__.py # __version__ = "4.0.0"
__main__.py # python -m limewire
app.py # App(tk.Tk) main class
core/
theme.py # T namespace, 25 themes, apply_theme()
constants.py # Timing, dimension, format constants
config.py # JSON persistence, file paths
platform.py # OS detection
deps.py # Optional dependency flags & lazy loaders
audio_backend.py # Playback engine
i18n/ # 6-language localization
utils/ # Helpers, sanitization
services/
analysis.py # BPM/key, loudness, harmonics, Camelot
metadata.py # Shazam, MusicBrainz, AcoustID, lyrics
cover_art.py # Extract/embed/fetch album artwork
audio_processing.py # Waveform, demucs, pydub, spectrogram
connectors/ # Music service connectors (7 services)
base.py # ConnectorBase ABC, TrackResult, PlaylistResult
oauth.py # OAuth 2.0 with PKCE + CSRF state
storage.py # DPAPI-encrypted token storage
spotify.py # Spotify connector
youtube.py # YouTube Music connector
tidal.py # TIDAL connector
soundcloud.py # SoundCloud connector
deezer.py # Deezer connector
transfer.py # Cross-service playlist/library transfer engine
security/ # Path confinement, subprocess allowlist, JSON validation
ui/ # Widgets, styles, tooltips, toasts, command palette
pages/ # 25 page classes (one per tab)
tests/ # 195 tests (pytest)
core/ <-- utils/ <-- services/ <-- ui/ <-- pages/ <-- app.py
^ ^
security/ __main__.py
Pages receive app as a constructor arg — they never import app.py directly. No circular imports.
| Module | Purpose |
|---|---|
safe_paths.py |
Path traversal prevention, atomic writes, symlink checks |
safe_subprocess.py |
Binary allowlist (ffmpeg, ffprobe, yt-dlp only) |
safe_json.py |
Size limits (5 MB), depth checks (10), key allowlists |
plugin_policy.py |
SHA-256 hash trust — scan without execute |
connectors/oauth.py |
OAuth 2.0 PKCE + CSRF state validation for all services |
connectors/storage.py |
Windows DPAPI token encryption at rest |
network.py |
SSRF prevention — DNS resolution checks, public IP validation |
All 7 music service connectors are hardened with:
- OAuth 2.0 PKCE — Proof Key for Code Exchange prevents authorization code interception
- CSRF Protection — Cryptographic state parameter validates OAuth callbacks
- Encrypted Storage — Tokens encrypted at rest via Windows DPAPI (
CryptProtectData) - Input Validation — Regex-based ID validation on all service-specific identifiers
- SSRF Prevention — URL domain allowlists block server-side request forgery
- Error Sanitization — Tokens and secrets stripped from error messages before display
All stored in ~/.limewire_*.json: history, settings, schedule, queue, analysis cache, session state, recent files.
pip install pytest
python -m pytest tests/ -v195 tests covering security modules, core systems, utilities, and services. CI runs on Python 3.10 through 3.14.
| Component | Technology | |
|---|---|---|
| 🐍 | Language | Python 3.10+ (tested through 3.14) |
| 🖥️ | GUI | tkinter / ttk |
| ⬇️ | Downloads | yt-dlp |
| 🔈 | Playback | pyglet |
| 🏷️ | Metadata | mutagen |
| ⚙️ | Processing | pydub, ffmpeg |
| 📊 | Analysis | librosa, pyloudnorm |
| 🧠 | AI Stems | Demucs (Meta AI) |
| 🎵 | Pitch/Time | pyrubberband |
| 🎤 | Recording | sounddevice |
| 💬 | Transcription | openai-whisper |
| 🎛️ | Effects | pedalboard (Spotify) |
| 🔍 | Track ID | shazamio, pyacoustid, musicbrainzngs |
| Document | Description |
|---|---|
| docs/README.md | Documentation index and recommended reading order |
| docs/application-overview.md | Product-level overview of workflows, architecture, strengths, and current limits |
| Wiki | Complete documentation for every module and page (34 pages) |
| CONTRIBUTING.md | Developer guide, project structure, how to contribute |
| SECURITY.md | Security policy, vulnerability scan report |
| CHANGELOG.md | Version history |
| ROADMAP.md | Feature roadmap |
- Fork & clone
pip install -r requirements.txt- Create a branch, make changes
- Run tests:
python -m pytest tests/ -v - Submit a PR
See CONTRIBUTING.md for full details.
LimeWire is the most productized repository in the current set. The application already covers the full path from audio intake to analysis, editing, transfer, and batch processing, and it has the strongest release and desktop-tooling baseline.
Current documentation work is focused on making the repo easier to understand as an application: which workflows are strongest today, how the modular package is organized, and where optional dependencies or third-party services change the feature surface.
MIT License for the code in this repository.


















