# Symphony Android Music Player for Offline Libraries

> Symphony is a Kotlin and Jetpack Compose music player for Android 9 and later, with a particular emphasis on filename and path based sorting. It is aimed at people who organize local music by file layout rather than relying only on metadata.

**zyrouge/symphony** — 🎵 Lightweight, elegant music player for Android 9+.

- Repository: https://github.com/zyrouge/symphony
- Website: https://zyrouge.github.io/symphony/
- Stars: 1,716 · Forks: 124
- Language: Kotlin
- License: AGPL-3.0
- Published: 2026-10-16 · Updated: 2026-10-16 · Language: en
- Canonical page: https://hysenlabs.com/projects/zyrouge-symphony

## Why Symphony Exists for Local Music Organization

Symphony addresses a specific gap identified by its author: several visually appealing offline music players did not support sorting by filename or path. That distinction matters when a person manages music using directory names or encoded filename conventions instead of expecting every track to carry suitable metadata tags. Symphony was created partly to fill that gap and partly to explore Kotlin and Compose through a complete Android application.

The intended audience is therefore narrower than the general audience for Android music players. Symphony targets people with an existing offline collection who want control over how tracks are ordered. Its stated platform support is Android 9 and later. The README describes it as a lightweight player for the offline music experience, but it does not document streaming services, online catalog searching, lyric providers, or account-based synchronization. Those features should not be inferred merely because other music players offer them.

The project also labels itself “partially stable.” That wording sets a reasonable expectation for an application that has a public download page, distribution listings, nightly tags, and an ongoing source repository, but has not presented every aspect of itself as fully mature. Symphony should consequently be judged against its particular organizing model and local-library scope, rather than against every capability of a commercial streaming player.

## Symphony's Kotlin and Compose Project Structure

The repository confirms that Symphony is written primarily in Kotlin and lists Compose among its topics. Its Android application code is located under `app/`, while the repository also contains `cli/`, `i18n/`, `metadata/`, and `metaphony/`. This layout indicates that the music player is not the only part of the project: separate areas exist for translations, release and version utilities, metadata, and a package named `metaphony`.

The README does not describe the playback data flow in enough detail to claim how media scanning, permission handling, queue state, persistent storage, or Compose state are implemented. It also does not identify the database, audio backend, background service, notification controls, or minimum Gradle configuration. Engineers reviewing those implementation choices would need to inspect the source files directly.

The repository layout does expose a TypeScript-based maintenance toolchain. The `package.json` file defines scripts for building translations, printing versions, checking tags, moving Android outputs, validating changelog lengths, and triggering a release workflow. The `prebuild` script runs `i18n:build`, while `postbuild` runs `android:move-outputs`. These are build and release mechanics rather than end-user playback commands, and the README does not provide a complete build tutorial for them.

## Installing Symphony on Android 9 or Newer

Symphony is distributed as an Android application rather than as a command-line utility for end users. The README links to the latest GitHub release, the complete release history, IzzyOnDroid, F-Droid, and Google Play. Users can choose the source that matches their distribution preferences. Before installing, the device must run Android 9 or later.

For a GitHub installation, open the latest release link and select an appropriate APK. The README does not state the exact APK filename, architecture restrictions, signing details, or whether the latest stable artifact is suitable for every device, so those points must be checked on the release page. F-Droid and IzzyOnDroid users can install the package `io.github.zyrouge.symphony` through their corresponding catalogs. The Google Play listing uses that same package identifier.

The repository also publishes nightly tags, including `v2024.12.115-nightly+8fc28a8` and `v2024.12.115-nightly+1a2d41e`, while the listed stable release is `v2024.12.115`. Nightly builds may expose unfinished changes and should not be treated as equivalent to the stable release. The README does not document an in-app update mechanism, downgrade procedure, backup process, or rollback command. There is therefore no justified upgrade command to provide here.

After installation, the first real use is to open Symphony on an Android 9 or newer device and allow it to access the local music collection. The README does not spell out the permission dialog sequence or the exact labels used in the interface. The first organization check should be whether the library view can be sorted according to the filename or path convention the user relies on.

## The Maintainer Scripts Behind Symphony Releases

Symphony includes maintainer tooling that is separate from the Android application itself. The `package.json` scripts show a workflow built around Phrasey translations, TypeScript execution through `tsx`, Git tag inspection, and GitHub Actions. This can reduce repeated manual release work, but it does not mean that the repository offers an end-user update command.

For contributors, the README points to the Developer Guide in the project Wiki. The repository also contains Gradle files such as `build.gradle.kts`, `settings.gradle.kts`, and `gradlew`, but the README does not give a verified sequence for installing Node.js dependencies, configuring secrets, building an APK, or signing a release. The `secrets/` entry also raises deployment and signing questions that cannot be answered from the README.

The available scripts are useful when evaluating upgrade cost for maintainers or forkers. Translation resources are generated through Phrasey, Android outputs are moved after a build, and release-related values can be inspected with dedicated scripts. However, the README does not state how often migrations occur, whether database upgrades are automatic, or whether a downgrade is supported. A fork should budget for inspecting those scripts and the Android release workflow rather than assuming that an app update is operationally trivial.

## Limits of Symphony for Streaming-First Listeners

The clearest limitation is scope. Symphony is described as an offline music player, and the README contains no evidence that it streams from services such as Spotify, Apple Music, YouTube Music, or a hosted radio directory. Users whose listening depends on online catalogs, account synchronization, cloud libraries, or service-based recommendations would need capabilities that the README does not claim.

Filename and path sorting is also a design choice, not a universal sorting strategy. A user who relies on album, artist, genre, or disc metadata may find it insufficient, even if the application also supports other organization methods. The README only identifies filename and path based sorting as the reason the author created Symphony. It does not document filters, tag editing, duplicate handling, unsupported formats, or how files without metadata appear.

Platform support is another boundary. Android 9 and later excludes older devices. The README does not specify whether audio files outside the device's local storage can be accessed, how external storage is handled, or what happens when permissions change. Symphony may fit a carefully arranged offline library, but it is not the right tool for a user whose first requirement is a documented online music catalog.

## AGPL-3.0 and Symphony Maintenance Considerations

Symphony is licensed under `AGPL-3.0`, as stated in both the repository description and the README. That license matters to organizations that modify, distribute, or host a modified version. The README does not provide legal guidance, so this article does not interpret the license's obligations or provide legal advice. Reviewers should read the repository's `LICENSE` file and obtain appropriate advice for their deployment model.

The repository is not archived, and its last push was on 2026-10-02. The listed recent releases include stable version `v2024.12.115`, dated 2024-12-14, plus two nightly builds dated 2024-12-07. This gives users a visible release history and shows that both stable and nightly artifacts have existed. It does not by itself establish compatibility with every current Android release or guarantee that every device issue is fixed.

For a team considering a fork, maintenance cost depends on the Android and Kotlin toolchain, translation pipeline, Gradle configuration, release signing, and the `metaphony/` and `cli/` components. The README gives no test coverage figures or documented migration policy. The practical upgrade review should start with the Developer Guide, `package.json`, Gradle files, and the release workflow.

## Conclusion

Symphony is a reasonable choice for Android users whose offline libraries depend on filename or path sorting and who can accept its partially stable status. It is less suitable for users seeking documented Android 8 support, online music features, or a fully documented rollback and upgrade process. Before adoption, verify that your Android version is covered, confirm the library organization you want to use, and inspect the release or store version you are about to install.

## FAQ

### What is Symphony used for?

Symphony is an Android music player for offline music, with filename and path based sorting as its distinguishing documented feature.

### What Android versions does Symphony support?

The README says that Symphony supports Android 9 and later.

### Where can I download Symphony?

The README links to the latest GitHub release, all GitHub releases, IzzyOnDroid, F-Droid, and Google Play. The package identifier listed for the catalog listings is `io.github.zyrouge.symphony`.

## Sources

- [License: AGPL-3.0](https://github.com/zyrouge/symphony/blob/main/LICENSE)
- [Project website](https://zyrouge.github.io/symphony/)
- [README](https://github.com/zyrouge/symphony/blob/main/README.md)
- [Releases](https://github.com/zyrouge/symphony/releases)
- [zyrouge/symphony on GitHub](https://github.com/zyrouge/symphony)

---

Hysen Labs editorial analysis, written from the project's own repository and release notes. Cite the canonical page: https://hysenlabs.com/projects/zyrouge-symphony
