Open-source project
RetroMusicPlayer/RetroMusicPlayer avatar
RetroMusicPlayer/RetroMusicPlayer

Retro Music Player: a Material You Android player you can build from source

Best Material You Design music player for Android

5,332 stars927 forksKotlinGPL-3.0

At a glance

What is it?
Retro Music Player is a GPL-3.0 Android music player built with Kotlin, Material You theming and a Koin/MVVM structure. It is aimed at Android users who want local playback with synced lyrics, tag editing and Android Auto, and at developers who want a readable open source player codebase.
Who is it for?
Retro Music Player suits Android users who keep local audio files and want synced lyrics, a tag editor and Android Auto in one GPL-3.0 app, plus developers who want a Kotlin, Koin and MVVM player to read or fork. It is the wrong choice if you need iOS, a desktop client or a headless server, because the repository is Android only.
Can I use it commercially?
Yes, with conditions. GPL-3.0 is a copyleft licence: if you distribute software that includes it, you must release that software's source code under the same licence. Running it internally without distributing it does not trigger that obligation.
Is it still maintained?
Yes. The repository last received commits 2 days ago.
What is it written in?
Mainly Kotlin, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on September 30, 2026, and from our analysis. They are not legal advice.

Editorial analysis

What Retro Music Player solves, and who it is for

Android ships no first-party music player that covers local files well, and most third-party players either push a streaming subscription or wrap playback in a dense interface. Retro Music Player targets the other case: a library of audio files already on the device or on a card, played by song, album, artist, playlist, genre or folder. The README lists folder playback, gapless playback, a tag editor, playlist import and export, a sleep timer, a playing queue with reordering, and a lyrics screen that can download and sync lyrics with the music. There is a Home screen that surfaces recently played and most played artists, albums and favourite songs, and the README describes those smart auto playlists as recently played, most played and history.

The audience splits in two. On one side are Android users who want Material You theming on Android 12 and above, a Monet themed icon on Android 13 and above, and a wallpaper accent picker on Android 8.1 and above, without paying for playback of their own files. On the other side are developers. The repository is Kotlin, uses Koin for dependency injection and MVVM architecture, and carries an appthemehelper module alongside the app module, so someone who wants to read a real Android player or fork one has a codebase to open rather than a binary. The README also states the project is looking for contributors and maintainers, which tells you the maintainer pool is thin by the project's own admission.

How playback, theming and the module split fit together

The repository layout shows two Gradle modules at the top level: app and appthemehelper, wired through settings.gradle.kts. Everything user-facing sits in app. The theming helper is separate, which is consistent with the README's emphasis on themes: three base themes (Clearly White, Kinda Dark, Just Black for AMOLED) and more than ten now playing themes including Normal, Fit, Flat, Color, Material, Classic, Adaptive, Blur, Tiny and Peek. Pulling that out of the main module keeps the theme surface from bleeding into playback code.

Inside app, the architecture is MVVM with Koin supplying dependencies. That combination matters for anyone extending the player: view models hold screen state, Koin resolves repositories and players, and the UI layer stays free of construction logic. The Kotlin source is the only primary language listed, so there is no mixed Java and Kotlin split to reason about.

Feature integration is broad rather than deep. Chromecast, Android Auto, headset and Bluetooth controls, lock screen playback controls, home screen widgets and a Driving Mode all hook into the same playback layer. Synced lyrics appear in two modes, over the cover and replacing the cover, each with light, dark and black variants. That is a lot of surface area for a project that is asking for more maintainers, and it is the main reason to read the issue tracker before relying on any single integration.

Installing Retro Music Player and playing a first folder

You do not need to build anything to use the app. The README gives three distribution channels plus a fourth: Google Play, F-Droid, Obtainium, or the GitHub Releases page. The package name is code.name.monkey.retromusic, which is what you search for on F-Droid or Play. If you prefer Obtainium, the README supplies a redirect link that points Obtainium at the GitHub repository so it can track releases directly.

For a source build, the repository is a Gradle Android project with two modules, app and appthemehelper, declared in settings.gradle.kts. The wrapper script gradlew is checked in at the repository root, and ci_signing_setup.sh is present for CI signing rather than local builds. The README does not spell out build commands, so treat settings.gradle.kts as the authority for what modules exist before you run anything.

Once installed, the first useful step is to point the player at a folder. The README lists folder support as playing songs by folder, and the library also browses by songs, albums, artists, playlists and genre. Open the folder view, pick the directory holding your audio, and playback starts from there. If your files carry poor metadata, the tag editor is the next stop; if you want lyrics, the lyrics screen can download and sync them with the music. The minimum API level is 21, so older devices are supported, but Material You theming only appears on Android 12 and above and the Monet themed icon only on Android 13 and above.

Where Retro Music Player falls short

The README's feature list is long, and the project is candid that it wants more maintainers. That combination is the honest limitation: a wide integration surface (Chromecast, Android Auto, widgets, Bluetooth, Driving Mode, lyrics syncing, tag editing) maintained by a small group means any single integration can lag. If your workflow depends on one of them, for example Android Auto in a car, verify that specific path on your device before making the app your daily player.

The platform boundary is hard. The repository is Android, the badge says Platform: Android, and there is no desktop build described in the README. If you need the same library on a laptop, Retro Music Player will not cover it.

Licensing is the third constraint. The project is GPL-3.0. That is fine for personal use and for forks that stay open, but it is a real consideration if you plan to ship a modified version inside a closed product. The README does not discuss commercial licensing or exceptions, so a closed redistribution is not something the documentation addresses.

Finally, minSdkVersion 21 is a floor, not a guarantee of a good experience. The theming features that make the app distinctive are gated behind Android 12 and 13, so on older hardware you get the playback and library features without the Material You layer.

How it compares with a minimal local player

The obvious alternative for an Android user who only wants to play files is a minimal local player that does one thing: scan the library and play it. The difference in approach is scope. A minimal player keeps a small surface, which makes it easier to keep working across Android versions, and it typically skips lyrics syncing, Chromecast, widgets and a tag editor entirely. Retro Music Player takes the opposite position: it bundles all of those, plus more than ten now playing themes, three base themes, a wallpaper accent picker and 30+ languages via Crowdin.

That trade is not free. Every integration is code that has to keep up with Android releases, and the README's request for maintainers suggests the project feels that weight. If your requirement is a player that survives an OS upgrade untouched, the smaller tool is the safer bet. If your requirement is a player that already has the lyrics screen, the tag editor and the car integration, Retro Music Player is the one that ships them together.

For developers, the alternative is writing your own player. Koin plus MVVM plus a separate appthemehelper module is a structure you would otherwise have to design yourself, and the GPL-3.0 licence means you can read and reuse it as long as your derivative stays under the same terms.

Maintenance, releases and upgrade cost

The last push to the repository was on 2026-09-17, five days before this article, so the codebase is being touched. That is not the same as a stable release cadence. The recent releases are v7.0.3 on 2026-08-13, v6.6.1 on 2026-08-13, and v6.6.0 on 2025-10-28. Two releases landed on the same day in August 2026, and before that the previous tag was roughly nine and a half months earlier. If you track releases through F-Droid, Obtainium or the GitHub releases page, expect bursts rather than a steady monthly rhythm, and expect the dev branch to move ahead of the tagged builds.

Upgrade cost depends on how you install. Play Store and F-Droid handle updates for you. Obtainium tracks the GitHub repository, which is the channel the README points at with its redirect link. A self-built APK is yours to rebuild, and because the project uses Kotlin with Koin and MVVM, a fork that diverges will need to keep pace with upstream refactors in both the app and appthemehelper modules.

On licensing: GPL-3.0 governs the source. Redistributing a modified build means carrying the same licence and making the source available. The repository does not describe any dual-licensing or commercial exception, so anyone planning to embed the player in a proprietary product should read LICENSE.md themselves rather than assume an option exists.

Editorial conclusion

Retro Music Player suits Android users who keep local audio files and want synced lyrics, a tag editor and Android Auto in one GPL-3.0 app, plus developers who want a Kotlin, Koin and MVVM player to read or fork. It is the wrong choice if you need iOS, a desktop client or a headless server, because the repository is Android only. Before adopting it, check whether the release you want is an APK on the GitHub releases page or the Play Store build, and confirm the minSdkVersion 21 floor against your own devices.

Frequently asked questions

What is Retro Music Player?

It is an open source Android music player written in Kotlin, described in its README as a Material You design music player for Android music lovers. It plays local music by song, album, artist, playlist, genre and folder, and adds synced lyrics, a tag editor, widgets and Android Auto.

How do I use Retro Music Player?

Install it from Google Play, F-Droid, Obtainium or the GitHub releases page, then open the folder or library view and pick the directory that holds your audio. The README lists browsing by songs, albums, artists, playlists and genre, plus a folder view for playing songs by folder.

What is a Retro Music Player alternative?

The realistic alternative is a minimal local Android player that only scans and plays your library. It drops the extras Retro Music Player bundles, such as synced lyrics, Chromecast, widgets, a tag editor and more than ten now playing themes, in exchange for a smaller surface that is easier to keep working across Android versions.

Is there a Retro Music Player for Windows?

No. The repository is Android only, the README carries a Platform: Android badge, and it documents no desktop build. The distribution channels it lists are Google Play, F-Droid, Obtainium and the GitHub releases page.

What is the best retro music player?

There is no single answer, but Retro Music Player is the one this repository covers: a GPL-3.0 Android player with Material You theming, synced lyrics, a tag editor and Android Auto. Its README positions it for Android music lovers who keep local files.

Is there a good retro song player?

If you are on Android and want local playback, Retro Music Player fits that description: it browses songs, albums, artists, playlists, genres and folders, and includes gapless playback, a sleep timer and a playing queue with reorder. It does not cover desktop platforms.

Official sources

  1. License: GPL-3.0
  2. Project website
  3. README
  4. Releases
  5. RetroMusicPlayer/RetroMusicPlayer on GitHub
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/retromusicplayer-retromusicplayer.svg)](https://hysenlabs.com/projects/retromusicplayer-retromusicplayer)