Skip to content

A track only knows what song it is when its file happens to be tagged, and most imports are not #706

Closed

Description

@thcp

The problem

A track knows what song it is only when the file happens to carry tags. Most imports do not.

A local MP3 from a well-kept library usually has artist, title and album. A YouTube link usually has none of that. A cast recording uploaded by "WickedVEVO", or the same song on a fan channel, arrives with empty artist, track and album fields. Everything that depends on knowing the song (the artist, the lyrics, the release it came from) has nothing to start from, so for most tracks it simply does not appear.

Why it is not just parsing the title

The title is the obvious fallback, and it does not follow one pattern. All of these are common:

  • "Artist - Song"
  • "Song - Artist"
  • 'Song (From "Work" Original Broadway Cast Recording/2003)'
  • "Song | Work"

Splitting on a dash gets the order wrong about as often as it gets it right. And the audio itself is often not the released recording: fan edits, trimmed intros and extended versions have a different length from anything in a catalogue, so matching on duration alone rejects the right answer.

The harder part is that a wrong identity is worse than none. Covers, karaoke versions, tribute albums and live cuts share the title and often the artist credit of the original. Taking one of them for the original puts the wrong lyrics and the wrong artist on screen with full confidence.

Constraints for a fix

  • MusicBrainz is rate limited. One request per second per client, and a busy server answers 503. Anything that searches it has to pace itself and ask again politely, not hammer it or give up on the first refusal.
  • An audio fingerprint is optional, and the key is the user's. AcoustID needs a free API key per user. It must never be hardcoded or shipped with the app. It is entered in Settings, kept locally, and the API never returns it in full.
  • Identification runs beside separation. It must never fail a job and never make one slower. If nothing is found, the job finishes as it does today.
  • No weak matches. Covers, karaoke, tributes and live versions are never accepted as the original. When the evidence is thin, the track stays unidentified.

Being worked on in the feat/song-identification branch.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

enhancementNew feature or request

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions