v2 — Lightweight local music player for Windows
Everything v1.5 had, plus YouTube, lyrics, history, equalizer, and 6 themes.
FluxPlayer Lite is a local-first music player for Windows. No accounts. No cloud. No ads. Works fully offline for playback. Optional internet features (YouTube download, lyrics) work when connected.
Built with Python, PySide6, and VLC. Runs on any Windows machine.
- YouTube search and MP3 download — no API key needed
- Synced lyrics from lrclib.net — no API key needed
- Recently played history with timestamps
- 10-band equalizer with 10 presets
- Sleep timer
- Playback speed control 0.5×–2.0×
- 6 visual themes switchable at runtime
- Volume up to 150% with soft-knee compressor to prevent clipping
- ReplayGain normalisation — consistent loudness across all tracks
- Album art extracted from embedded tags
- Animated waveform when no art is available
- Glow progress bar with hover preview
- Queue panel with drag reorder and M3U save/load
- Mini player — always-on-top, never raises main window
- Drag and drop audio files onto the window
- Media key support (keyboard Play/Pause/Next/Prev buttons)
- Fully modular codebase — frontend and backend separated
- MP3, FLAC, OGG, WAV, M4A, AAC, Opus, WMA
- Play, Pause, Stop, Previous, Next
- Shuffle and Repeat One
- Playback speed 0.5×–2.0×
- Volume 0–150% (amber tint above 100% warns of amplification)
- ReplayGain per-track loudness normalisation at −14 LUFS
- Media key support
- Album art from embedded tags (MP3, FLAC, M4A, OGG)
- Animated waveform with smooth bar animation when no art present
- Art-tinted card background using dominant colour from art
- Glow progress bar — gradient fill, playhead dot, hover seek preview
- Track counter (e.g. 3 / 47)
- Auto-scan
~/Musicand~/Downloads - Load folder or add individual files
- Drag and drop files onto the window
- Playlist with drag-to-reorder
- Tags and durations loaded in background thread
- Full queue panel
- Drag reorder, move up/down, remove individual tracks
- Save playlist as M3U
- Load playlist from M3U
- Search YouTube — no API key required
- Download result as MP3 at 192 kbps via yt-dlp
- Progress bar during download
- Configurable download folder
- Synced lyrics fetched from lrclib.net
- Active line highlighted and auto-scrolled during playback
- Distance-based font sizing — active line large, adjacent dimmed
- Plain text fallback when sync data unavailable
- Manual fetch button to retry
- Every played track logged with timestamp
- Shows relative time (e.g. "5m ago", "2h ago")
- Double-click any entry to replay
- Clear history button
- 10-band VLC equalizer — 10 presets (Flat, Bass Boost, Treble Boost, Rock, Pop, Jazz, Classical, Vocal, Night Mode, Loudness)
- Sleep timer — auto-stop after 1–240 minutes
- Playback speed dial with preset buttons
- 6 themes — Midnight, Pure Black, Arctic, Sunset, Forest, Discord
- Download folder setting
- Always-on-top floating overlay
- Draggable, never raises the main window
- Prev, Play/Pause, Stop, Next controls
| Tab | Contents |
|---|---|
| Player | Playback, playlist, transport controls |
| Lyrics | Synced lyrics with live highlighting |
| Search | YouTube search and MP3 download |
| Queue | Drag reorder, M3U save/load |
| History | Recently played with timestamps |
| Extras | EQ, sleep timer, speed, themes, settings |
| Dependency | Version | Purpose |
|---|---|---|
| Python | 3.11+ | Runtime |
| PySide6 | 6.6.0+ | UI |
| python-vlc | 3.0.20301+ | Audio playback |
| mutagen | 1.47+ | Tag reading |
| yt-dlp | 2024.1.1+ | YouTube download |
| VLC media player | 3.0+ | Required |
pip install PySide6 mutagen python-vlc yt-dlp
cd FluxPlayerLite_v2
python main.py
pip install nuitka
python build.py
Output: dist/main.dist/. Place vlc/ folder and icon.png inside before distributing.
Installer: open installer.iss in Inno Setup → Ctrl+F9.
| Key | Action |
|---|---|
| Space | Play / Pause |
| Right | Next track |
| Left | Previous / Restart |
| Up | Volume +5% |
| Down | Volume -5% |
| Double-click | Play selected track |
| Media keys | System Play/Pause/Next/Prev |
- SoX resampler when supported by the installed VLC build
- WASAPI output on Windows for bit-perfect playback
- Soft-knee compressor per track — prevents clipping at boosted volumes
- ReplayGain normalisation — same loudness target as Spotify and Apple Music
- VLC flags probed at startup — any unsupported flag is silently dropped; app always starts
FluxPlayerLite_v2/
├── main.py
├── build.py
├── installer.iss
├── requirements.txt
├── core/
│ ├── engine.py VLC backend
│ ├── metadata.py Tag reader (threaded)
│ ├── downloader.py yt-dlp wrapper
│ ├── lyrics.py lrclib.net + LRC parser
│ ├── history.py Play log
│ ├── audio_analysis.py ReplayGain + album art
│ ├── state.py JSON persistence
│ ├── constants.py Themes + app constants
│ └── utils.py Helpers
└── ui/
├── main_window.py
├── styles.py
├── icons.py QPainter icon set
├── now_playing_card.py
├── mini_player.py
├── widgets/
│ ├── __init__.py
│ └── speed_control.py
└── panels/
├── player_panel.py
├── search_panel.py
├── queue_panel.py
├── lyrics_panel.py
├── history_panel.py
└── extras_panel.py
- No tag editing (added in v2.5)
- No favourites system (added in v2.5)
- No statistics panel (added in v2.5)
- No library search filter (added in v2.5)
- Lyrics require internet; no offline cache
MIT License. See LICENSE for details.