Hey everyone! A while ago, I introduced AuraPlayer, an offline desktop music player built with Python and PyQt6 designed to fix traditional UX frustrations—like messy multi-artist parsing and rigid navigation.
If you missed the first post detailing the core architecture and how it handles large libraries smoothly using background threads, you can check it out here:
I’m back with a major update! The project is moving forward exactly as promised, and several core roadmap features are now fully implemented and live.
Here is what’s new in AuraPlayer:
1. The Lyrics System (3 Different Formats Supported)
The highly anticipated lyrics panel is officially here! AuraPlayer now dynamically reads, parses, and displays lyrics in three distinct formats depending on your audio tags and local files:
- Enhanced Lyrics: Supports word-by-world or advanced precise syncing for a truly immersive, karaoke-like scrolling experience.
-
Sync Lyrics: Standard time-stamped scrolling (
.lrcformat) that perfectly follows the track second by second. - Plain Lyrics: Traditional, static text blocks for tracks without precise time-stamps, ensuring you can still read along smoothly.
2. Context-Aware Dynamic Queue Engine
The playback queue has been completely overhauled to adapt directly to how you browse your music. Instead of a static list, the queue now auto-populates based on your current view, tab, or active sort criteria:
- If you sort your main library by Track Title, Artist, Album, or Genre, the queue respects that exact order when playing the next track.
- Opening and playing songs from a specific Album Page or Artist Profile automatically confines and queues the appropriate context.
3. UI Refinements & Better Grid Control
Based on initial usability tweaks, I’ve streamlined the desktop interface to make it feel even more like a native app:
- Main Screen Controls: I brought the primary control buttons directly onto the main interface layout. No more shuffling between separate screens just to trigger core playback actions—everything is accessible right away.
- Grid & Table Enhancements: Added clean grid separation lines to the main library track tables for better scannability.
- Resizable Columns: Track list columns (Title, Artist, Album, Duration) can now be fully resized by dragging, and the player caches your preferred column widths.
🚀 Pre-Release Binaries & Cross-Platform Testing Help Needed!
I have officially published a Pre-Release version with compiled binaries for Windows, macOS, and Linux.
-
Windows: Fully packaged and verified using Inno Setup (
installer.iss). It works perfectly. -
macOS & Linux: The build pipelines are configured via GitHub Actions (
release.yml), but since I do not have physical access to a Mac or Linux machine to properly test the environment hooks, I need your help!
If you are on macOS or Linux, I would deeply appreciate it if you could download the pre-release, run it, and let me know how it handles native audio output, fonts, and window framing.
🤝 How to Contribute, Bug Reports, and Pull Requests
Just like before, AuraPlayer is fully open-source and community-driven. Whether you are a user or a Python developer, you can help shape the player:
Found a Bug? Open an Issue on GitHub with your OS specs and the steps to reproduce it.
Have an Idea / Fix? Pull Requests are more than welcome! Whether it's optimizing the PyQt6 event loop, helping fix platform-specific bugs on Mac/Linux, or adding UI polish, feel free to contribute.
🔮 What’s Next (Roadmap)
- Global Search: Global filtering directly from the top bar to jump straight to tracks, albums, or artists.
- Complete Playlist System: Expanding the playlist sidebar to support full manual playlist creation/track injection, alongside smart automated playlists (like Liked Songs).
🔗 Check out the Repo & Download the Pre-Release: https://github.com/parsaalavi1382/AuraPlayer
If you like the project or the progress so far, leaving a ⭐ on the repository helps a ton!
Top comments (0)