MetroMusic

com.metromusic
by Zapstore _@zapstore.dev

A music player in the Windows Phone 8 idiom, for the music on your phone.

Republished from GitHub / F-Droid by the Zapstore main account.

MetroMusic looks and moves like the Music + Videos hub of Windows Phone 8, and it plays what is already on the phone. No account, no feed, no recommendations. The collection is the start screen. The panorama you land on is the library — artists, albums, songs, genres, playlists, history and settings, in whatever order you put them. It is circular, so settings sit one swipe to the left of where you start and nothing is more than a swipe away. Getting around a big library. Long lists group alphabetically and open the WP8 jump grid over both Latin and Cyrillic. Tapping a section header searches inside that section. A long press on an album, artist or genre plays it, queues it after what you queued before, or hides it — and hiding takes effect in every list at once. Album metadata is written into the tags inside the files, which is the only level where an edit sticks. Playlists, favourites, play counts and history stay on the device. Playing. Media3 in a media session: notification, lock screen, headset and Bluetooth, and playback that outlives the screen. The queue and the current track come back after the app is closed, paused and at the start of the track. Apple Lossless is decoded inside the app, because Android ships no ALAC decoder and such files otherwise play as silence with nothing on screen to say so. Equalizer over the device's own bands, sleep timer, and a WP8 volume banner in place of the system panel. Last.fm, if you want it. A play is written to disk with the second it started and sent when a validated network appears, so an hour underground turns up in the right order rather than as a burst on reconnection. Favourites can be kept the same as your loved tracks, in both directions. Albums whose files carry no artwork can be asked about once, and lyrics come from Genius. All of that is optional, switchable off, and none of it is needed to play the music on the device. Twenty accent colours, light and dark, gestures that can each be turned off, and every string in strings.xml so a translation is one folder. The whole interface is MangoTile, a Compose UI kit for building in the WP8 idiom: https://github.com/Diffechento/MangoTile Not affiliated with Microsoft, Last.fm or Genius. "Windows Phone" and "Metro" are Microsoft's; this is an homage to a design language, written from scratch.

First release: Aug 3, 2026, 6 total releases.

Most recent release: Oct 26, 2026.

Repo

Appears in 0 app stacks.

0 sats / 0 zaps received in the past year.

Sats Received

Underlying data available via MCP: app_zaps, app_releases.

Zap Count

Underlying data available via MCP: app_zaps, app_releases.

Releases

  • Oct 26, 2026 1.6
    USB drives and folders, and Last.fm in every build. Built on [MangoTile 1.0.5](https://github.com/Diffechento/MangoTile/releases/tag/v1.0.5). **Music on a USB drive, an SD card or any folder** ([#9](https://github.com/Diffechento/MetroMusic/issues/9)). Settings → library → folders: add a folder with the system picker, or a connected drive in one tap. The library follows a drive being plugged in and out. All Files Access is optional — with it folders are read directly, faster, and tag editing and `.lrc` files work there too. **Last.fm sign-in** ([#10](https://github.com/Diffechento/MetroMusic/issues/10)). A wrong shared secret is now reported up front instead of leaving the login page open for ever; with a right one the
    More…
    page closes as soon as access is allowed. **The F-Droid build has Last.fm built in**, so scrobbling and cover lookup work without a key of your own. **Fixed:** editing an album's artist no longer rewrites every track's artist; covers Android cannot decode are read by the app; a compilation no longer gets one of its singles' covers. --- The APK carries the same signing certificate as every release since 1.0 (`SHA-256 494018a9…2acf7c09`), so it installs over any of them as an update. The F-Droid build is signed by F-Droid and does not install over it. minSdk 26 · compileSdk 36 · GPLv3 · third-party notices are in the app, on settings → about.
  • Sep 27, 2026 1.5
    A release about playlists that leave the app, and words that take over the player. Built on [MangoTile 1.0.5](https://github.com/Diffechento/MangoTile/releases/tag/v1.0.5). **The player can show the words instead of the cover.** A button beside the star, the shuffle and the repeat swaps the artwork in the middle of the player for the song's words. The cover is already the player's whole backdrop, so nothing is lost. Timed words follow the music: the line being sung is nearly twice the size of the ones around it, the verse moves up under it as the song goes, and tapping a line jumps there. A song with no words anywhere keeps its cover, so the setting can stay on.
    More…
    **Playlists are `.m3u` files.** Each playlist is a plain file in `Music/Playlists`, the format every other player and every desktop program reads, naming files rather than database rows, so a rebuild of Android's media database can no longer scramble them. Playlists you had are converted on the first launch and the old file is kept. Any `.m3u` on the device can be imported, any playlist exported, and **songs go in in bulk**: a whole album, artist or genre from its long-press menu, or any number of songs from a searchable list on the playlist itself. **Shuffle shuffles the queue.** It used to leave the queue in album order and jump around it, and could stop the album halfway when its hidden order ran out. Now it rearranges the queue itself, so what you see is what plays, and turning it off puts the original order back. **"Play next" puts it next**, every time. **Long tracks come back where you left them.** Settings → playback → resuming takes a length; a track at least that long reopens at the exact moment the app was closed. Made for podcasts and audiobooks; off by default. **Years in FLAC, Ogg, Opus and ID3v2.4 files are read.** Android's media database ignores the tag those formats actually use, so a well-tagged FLAC library had no years at all. The app now reads the year from the file itself where the database left it empty, once per file. **Getting around.** Tap the artist or the album in the player to open its page; Back brings the player back up. Tap the next section's header on the start screen to go to that section. **Fixed: words that could not be fetched offline stayed missing** after the network came back. They are fetched again as soon as there is a connection, and songs wrongly written off as having no timed words are asked once more. Timed words from LRCLIB now win over flat words in a file's tags, and an artist filed under a different spelling there (*DenDerty* / *Den Derty*) is still found. **Fixed: a black block behind playlist rows**, and a cover square flashing up when the player was pulled open in the words mode. --- The APK carries the same signing certificate as every release since 1.0 (`SHA-256 494018a9…2acf7c09`), so it installs over any of them as an update and keeps your settings, favourites, play counts and queue. minSdk 26 · compileSdk 36 · GPLv3 · third-party notices are in the app, on settings → about.
  • Sep 14, 2026 1.4.1
    One addition, on top of [1.4](https://github.com/Diffechento/MetroMusic/releases/tag/v1.4). Built on the same [MangoTile 1.0.4](https://github.com/Diffechento/MangoTile/releases/tag/v1.0.4); nothing else in the app has changed. **An artist's albums can be read from the start as well as from the end.** The order on an artist's page — settings → interface — offered newest first or the alphabet. **Oldest first** is the third answer, for anyone who reads a discography forwards rather than backwards. An album whose tags carry no year still goes last under *both* directions. Undated is not "the year zero", and an ordinary ascending sort would have opened the page with exactly the records nobody
    More…
    dated, which is the one thing "oldest first" is not asking for. --- The APK carries the same signing certificate as every release since 1.0 (`SHA-256 494018a9…2acf7c09`), so it installs over any of them as an update and keeps your settings, favourites, play counts and queue. minSdk 26 · compileSdk 36 · GPLv3 · third-party notices are in the app, on settings → about.
  • Aug 31, 2026 1.3
    A release about the library reading what the files actually say — and about reaching things faster. Built on [MangoTile 1.0.3](https://github.com/Diffechento/MangoTile/releases/tag/v1.0.3). **An album is its tags, not its folder.** One record split across two folders — a CD1/CD2 rip, a track downloaded later into a different place — showed as two albums, because the id the library grouped by was Android's own, and Android bakes the file's folder into it whenever there is no album artist tag. Albums are now gathered by what the files say: the album title, plus the album artist where there is one, so two records that merely share a name ("Greatest Hits") still stay apart. The listening history follows its albums across the change, and files with no album tag at all keep the old per-folder behaviour — with no tag there is nothing better to go on.
    More…
    **A record is filed under its album artist.** A compilation used to live under whoever its first track happened to credit, and a record where every song reads "band feat. somebody" was by the band and said so nowhere. The album artist tag is read now — the album's row, its page and whose page it appears on all follow it, while the credit under each song stays exactly as the file spells it. "Various Artists" is somewhere to go rather than a name with nothing behind it. A switch on settings → library; needs Android 11, which is where the system started reporting the tag. **Drag the left edge of a long list to scroll it fast.** A band down the side of the artists, albums, songs and genres: put a finger on it and the list travels its whole length under the drag, with the letter you have reached carried in a tile beside your finger — the gallery movement, on a library. It appears on lists longer than about two screens; tapping a row inside the band still plays it, and swiping sideways there still changes section. On settings → gestures, like every other gesture. **Search the whole library at once**, from a row at the top of "more". Tapping a section header still filters that one section — this is the other question, where you do not know whether what you half-remember is a title, a band or a record. Results come grouped by what they are, with a count on each group. **Open an audio file from anywhere else on the phone.** Tapping a song in a file manager, a download or an attachment offers MetroMusic and plays it, with the player already up. A file the library knows is played as that track, counted and queued like any other; one from outside plays as itself, and does not pretend to be part of a library it is not in. **Even out the volume between tracks**, off by default, on settings → playback. It reads the ReplayGain tags files are given when they are ripped — ID3, Vorbis comments and MP4 atoms alike, and the R128 numbers Opus uses — out of the stream the player is already parsing, so it costs nothing and needs no second pass over the files. It can only turn a loud track down, never a quiet one up, which is the honest limit of a volume that is a fraction of the output. **Save the queue as a playlist.** A queue built out of four albums and then pruned is a playlist that does not exist yet, and the only way to keep it used to be building it again from memory. One button under the queue's title; the order it writes down is the order on screen. **Fixed: the banner at the top of the screen arrived in two jerks.** The volume strip, "added to queue" and "press back again" all drop in from the top edge, and all three did it by moving their own window — which the system applies on its own schedule, so almost the whole travel happened before anything was on screen and the last few pixels then crawled. Both halves are gone: the strip is placed once and its contents drop inside it, clear of the clock. That is framework work — MangoTile 1.0.3. **Fixed: the player did not open when the app was launched to play something.** Nothing had a track for the first moment of a launch, and that counted as the queue having been lost, which closes the player. It only counts as lost once something has actually played. --- Scrobbling, the lyrics, the online cover lookup and the equalizer are unchanged. The APK carries the same signing certificate as every release since 1.0 (`SHA-256 494018a9…2acf7c09`), so it installs over any of them as an update and keeps your settings, favourites, play counts and queue. minSdk 26 · compileSdk 36 · GPLv3 · third-party notices are in the app, on settings → about.
  • Aug 10, 2026 1.2
  • Aug 3, 2026 1.1