Library / SDK
FoedusProgramme/Gramophone avatar
FoedusProgramme/Gramophone

Gramophone: A Strict Material 3 Music Player That Hides Songs Under 60 Seconds by Default

A sane music player built with media3 and material design library that is following android's standard strictly.

2,290 stars130 forksKotlinGPL-3.0

At a glance

What is it?
Gramophone is an open-source Android music player built on media3 and Material Design that enforces Android standards, including a controversial default that hides short tracks. It supports ReplayGain 2.0, synced lyrics, and folder browsing, but its strict codec reliance and build setup demand attention.
Who is it for?
Adopt Gramophone if you value strict Material 3 design, ReplayGain 2.0 support, and a minimalistic player that relies on system codecs to stay small. Avoid it if you need to play 32-bit FLAC on Android 13 or earlier, or if you cannot tolerate a default that hides songs shorter than 60 seconds.
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 14, 2026, and from our analysis. They are not legal advice.

DEEP OPEN-SOURCE ANALYSIS

What Gramophone Solves and Who It Is For

Gramophone addresses a specific pain point: Android music players often drift from platform conventions, adding custom themes or ignoring system media APIs. This project promises a "sane" player that follows Android's standards strictly, using media3 for playback and the Material Design library for UI. The target user is someone who wants a lightweight, stable, and minimalistic app that feels native to Android, especially on devices with Android 12 or later where Monet dynamic theming works. It is not for power users who demand every file format under the sun; instead, it is for those who accept the platform's built-in codec support and want a clean, standard-compliant experience.

The Mechanism: MediaStore, media3, and System Codecs

Gramophone's architecture is visible from the README. It uses MediaStore to quickly access on-device music, which means it scans the system-wide media database rather than maintaining its own index. Playback is handled by media3, Google's modern media library, and the app deliberately relies on system media codecs to keep the APK small. That choice has direct consequences: 32-bit FLAC files only work on Android 14 or later, xHE-AAC requires Android 9 or newer, and Dolby formats need licensed decoders on the device. The one exception is ALAC, which includes an extremely lightweight Java decoder. This design trade-off is clear: you trade format compatibility for a smaller app size and stricter adherence to platform behavior.

Getting It Running: Build Steps and Configuration

The README provides explicit build instructions. You need the latest beta version of Android Studio and a fast network. First, clone the repository and initialize submodules with `git submodule update --init --recursive`, because media3 is included as a git submodule. Second, create a file named `package.properties` in the root folder and write `releaseType=SelfBuilt` into it. This file defines the package type, which indicates the source of the application package. Third, import your own app signing signature in Android Studio. After that, you should be able to build. For end users, the README points to GitHub releases, F-Droid, and IzzyOnDroid for stable versions. Beta versions are distributed via a Telegram channel, which is an unusual but functional distribution path.

A Genuine Limitation: The 60-Second Song Default

Gramophone hides songs shorter than 60 seconds by default. This is a user-facing behavior that can confuse new users, as the FAQ acknowledges. You can change it in Settings > Behaviour, setting the minimum song length to 0 to show all tracks. But the default is a deliberate product decision, likely to filter out notification sounds and other short audio files that clutter a music library. That is reasonable for a music player, but it becomes a problem if you have short interludes or podcast-style content. The README also warns that even after changing the setting, some songs may still be missing if the folder is blacklisted in Behaviour > Folder blacklist, or if the system doesn't scan the file extension. For example, .opus files are only scanned since Android 10, so on older devices they won't appear at all unless you rename them to .ogg. This is a real failure mode: the app depends entirely on the system media database, so anything the system doesn't index is invisible to Gramophone.

Where Gramophone Is the Wrong Tool

If your music collection contains high-resolution FLAC files recorded at 32-bit depth, Gramophone will not play them on any Android version before 14. That is a hard constraint from the README. Similarly, if you rely on Dolby Digital or AC-4 audio, you need a device with licensed decoders, which many Android phones do not have. The app's reliance on system codecs means it is not a universal player; it is a player for the formats your system already supports. For users who need broad format support, a player like VLC or Foobar2000, which bundle their own decoders, would be a better fit. The difference is fundamental: Gramophone chooses to stay small and standard-compliant, while those alternatives trade size for compatibility. If you need to play obscure formats on old hardware, Gramophone will frustrate you.

Feature Set: ReplayGain, Lyrics, and Equalizer Support

Gramophone includes features that matter to serious listeners. It has full support for ReplayGain 2.0, which normalizes playback volume across tracks, a feature often missing in stock players. Synced lyrics are supported in LRC, TTML, and SRT formats, including word or syllable level karaoke synchronization. The app also supports system and third-party equalizer apps, which means it does not have its own built-in equalizer but delegates to the platform's audio effects. The library interface offers list and grid views, folder and filesystem browsing, and natural sorting plus other sorting options. Playlist support is present. The UI uses Material 3 with dynamic Monet colors on Android 12+, and there is a Monet themed icon. These features are concrete and verifiable from the README, and they position Gramophone as a player that respects both audio quality and modern design.

Maintenance, Licensing, and Upgrade Costs

The project is licensed under GPL-3.0, which means any derivative work must also be open source under the same license. That is a consideration if you plan to fork or embed the code. The repository is not archived, and the last push was on 2026-08-20, with version 1.1.2 released the same day. The default branch is named `beta`, which suggests that the main development line is considered beta-quality, even though stable releases are tagged. The README lists certificate SHA-256 digests for GitHub, F-Droid, and IzzyOnDroid, which is a good practice for verifying APK authenticity. For upgrades, the app is distributed through F-Droid and IzzyOnDroid, which handle updates automatically. If you build from source, you will need to keep up with submodule updates and potential changes to the `package.properties` requirement. The reliance on media3 as a submodule means the build process is tied to a specific version, and updating that submodule could introduce breaking changes, so maintainers should track upstream changes carefully.

Editorial conclusion

Adopt Gramophone if you value strict Material 3 design, ReplayGain 2.0 support, and a minimalistic player that relies on system codecs to stay small. Avoid it if you need to play 32-bit FLAC on Android 13 or earlier, or if you cannot tolerate a default that hides songs shorter than 60 seconds. Before committing, verify that your device's Android version and codec support match the formats in your library, and check the certificate SHA-256 digests listed in the README if you download from third-party stores. The project is actively maintained with recent releases, but its build requires the beta version of Android Studio and a manual `package.properties` file, so plan for that if you build from source.

Official sources

  1. Official README
  2. Project repository
  3. Release notes
Community notes

Community notes