Skip to main content
Music recognition lets you hold your phone near any sound source and identify the song within seconds. Metrolist records 12 seconds of audio through your microphone, generates a Shazam-compatible fingerprint, and queries the Shazam API to find a match. When a song is found, you can tap the result to play it in Metrolist immediately.
Music recognition requires an internet connection. The Shazam API must be reachable to return a match — offline recognition is not supported.

How to start recognition

Open Metrolist and tap the microphone recognition button on the home screen. The app transitions through three states visible on screen:
  1. Listening — recording 12 seconds of audio from your microphone
  2. Processing — generating the audio fingerprint and querying Shazam
  3. Result — song title and artist are shown; tap to play
If no match is found, the screen shows a “No match” message. Try again with clearer audio or less background noise.

Recognition states

During recognition, both the in-app UI and any active notification reflect the current stage:

Listening

Metrolist is recording audio from your microphone. Hold your device near the sound source and keep background noise to a minimum.

Processing

The audio fingerprint has been generated and is being sent to the Shazam API. This typically takes one to two seconds.

Match found

A song was identified. The result shows the title, artist, and album art. Tap it to play the track in Metrolist.

No match

Shazam could not identify the audio. This can happen with very short clips, heavy distortion, or unusual recordings. Try again with a clearer sample.

Recognition history

Every successfully recognized song is saved to your local recognition history. Metrolist stores the title, artist, album, cover art URL, genre, release date, and the timestamp of recognition in a local database — no cloud sync required. To view past recognitions, open the recognition screen within the app. Each entry shows the song details and the time it was recognized. Tap any entry to play that track in Metrolist.

Permissions

Music recognition requires the Record Audio (RECORD_AUDIO) permission. Metrolist checks for this permission before starting recognition and prompts you to grant it if it has not been given. No audio data is stored on your device — only the Shazam fingerprint is transmitted to the API.

Technical details

Metrolist records mono audio at 44,100 Hz using the device microphone, then resamples it to the sample rate required by the VibraSignature algorithm. The resulting signature is sent to the Shazam API along with the sample duration. The entire implementation is pure Kotlin with no native code (NDK), rewritten in v13.2.0 to reduce APK size and improve compatibility.
When recognition is triggered from the Quick Settings tile, Metrolist starts a foreground service (RecognitionForegroundService) that shows a low-priority persistent notification during recording and processing. On completion, the notification becomes dismissible and shows the result — including cover art if one can be fetched — with a Listen on Metrolist action button. Added in v13.3.0, with notification-based result delivery refined in v13.4.0.
When recognition is started from the home screen widget, the widget service persists the result to the database. The recognition screen detects this and skips inserting a duplicate entry, so each recognition event appears exactly once in history.