Levyra — a modern open-source music player for Android & Windows

Levyra

A modern open-source music player for Android and Windows.

Hi everyone,

I’m Luca, the developer behind Levyra.

I’ve been working on it for the last few months and I thought this was a good place to finally share it properly.

Levyra started as a pretty simple idea: I wanted a music player that felt modern and complete, but without needing an account, tracking everything you listen to, or locking your library inside the app.

It has grown quite a lot since then.


What it does

Levyra is built around music discovery, playback and keeping your library usable outside the app too.

You can search for tracks, artists and albums, browse recommendations, charts, genres, moods and editorial collections, use personal radio, explore artist pages and manage playlists and favourites.

The Android version is written in Kotlin with Jetpack Compose and uses Media3 / ExoPlayer for playback.

There’s also a Windows version using its own libVLC playback backend.

The player supports things like:

  • synchronized lyrics with tap-to-seek
  • gapless playback
  • crossfade
  • loudness normalization
  • equalizer
  • AutoEQ headphone profiles
  • queue management
  • Android Auto and system media controls
  • live radio
  • listening history and statistics
  • offline playback

I’ve spent a lot of time trying to make the app feel fast and clean rather than just adding features everywhere.


Audio

One part I’ve been working on quite heavily is the playback side.

Levyra can use loudness information to keep volume more consistent between tracks, handle continuous album playback properly, and apply headphone correction through a large AutoEQ profile catalogue.

It can also resolve alternative audio sources when a better-quality version is available, but only after checking that the recording actually matches the requested track.

If it isn’t confident about the match, it falls back to the normal playback route.

I wanted this stuff to happen in the background rather than turn the player into a settings screen.


Offline library

This is probably one of the most important parts of the project for me.

Downloaded tracks can be stored as normal M4A files instead of being hidden inside a proprietary app database.

Metadata such as the artist, album, artwork and lyrics can remain with the file.

By default they can be stored in Music/Levyra, but the user can choose another supported location as well.

So the library isn’t tied to Levyra.

You can move the files to another player, a PC, a car system or another device later.


Privacy

Levyra doesn’t require a Levyra account.

Listening history, play counts, listening time, playlists and statistics are handled locally.

There isn’t an advertising profile or tracking SDK sitting behind the player.

I still wanted to have proper listening statistics, though, so Levyra keeps things like recent activity, listening trends, most played artists and total listening time locally.


Discovery

I didn’t want the app to feel like a player with a search box attached to it.

The home screen includes recommendations, personal radio, charts, genres, moods and a section called Your Orbit, which changes based on your listening.

There are also proper artist and album pages, related music, live radio stations and different ways to find music without already knowing exactly what you want to play.

Search has been another big focus. I’m trying to keep it extremely quick and avoid the usual feeling of waiting around for every screen to load.


Languages and platforms

The Android app currently supports 36 languages.

The main stack is:

Kotlin
Jetpack Compose
Compose Multiplatform
AndroidX Media3
ExoPlayer
SQLite
libVLC

The project is licensed under GPL-3.0.


Links

GitHub

F-Droid

You can also get the latest builds directly from GitHub Releases.


Levyra is still being developed very actively.

I’m not posting it here just to drop a download link and disappear. I’d genuinely like feedback from people who use or build open-source software.

If something feels badly designed, too complicated, slow, unnecessary or simply broken, tell me.

A lot of the project has already changed because of feedback from people using it, and I’m still changing things constantly.

Thanks for taking a look.

Luca

2 Likes