Hi everyone,
I’m the developer behind Levyra, a free and open-source music player for Android and Windows that I’ve been building independently.
I started the project because I wanted an app that could handle both streaming and local music in one place, without user accounts, telemetry, or ads. It’s grown quite a bit since the initial prototype.
Here is an overview of what the app currently covers:
- Streaming and local files: search tracks, albums, and artists, stream online, or play your local audio collection within the same library.
- Offline downloads: downloads songs as standard audio files with metadata and artwork included.
- Audio and tuning: gapless playback, crossfade, source matching with automatic fallbacks, a 10-band equalizer, AutoEQ headphone correction profiles, and custom EQ preset import.
- Synchronized lyrics: real-time lyrics with manual timing offset, line-by-line seeking, and romanization.
- Music discovery and video: charts, new releases, recommendations, radio stations, and a toggle between audio-only and video playback with SponsorBlock support.
- Practical tools: multiple playback queues, listening statistics, ambient and internal song recognition, and full backup/restore for your library, playlists, and settings.
- Customization: motion artwork, customizable player interfaces, dark themes, and translations in 37 languages.
- Platform integration: Android Auto, Bluetooth controls, lock screen playback, and system media controls.
On the technical side, the Android app is written in Kotlin with Jetpack Compose and Media3. The Windows desktop version is built with Compose Multiplatform and libVLC.
The whole project is licensed under GPL-3.0 on GitHub. There are no subscriptions, paywalls, donations, or trackers. Levyra queries external endpoints to resolve streams, but it does not host or distribute media itself.
I recently put out version 2.6.5 for Android, which updates the interface to Material 3 Expressive, expands AutoEQ compatibility, and includes several playback bug fixes.
Since I’m maintaining this solo, honest feedback and bug reports are very welcome.
GitHub repository: https://github.com/LUC4N3X/Levyra-deepsound
Latest Android release: https://github.com/LUC4N3X/Levyra-deepsound/releases/latest


I see what you mean now. My app already supports multiple queues, though they work a bit differently from Musicolet’s. Remembering the playback position for each queue is a good idea, and I’ll see what I can do about it. I’m not trying to convince anyone to leave an app they’re happy with, I just want to keep improving my own. Anyway, thanks for taking the time to share your thoughts, I appreciate it
The remembering part is the fundamental part . I have big playlists from multiple context so I switch between them, it is annoying to write in a note where I stopped