OxygenCobalt / Auxio

A simple, rational music player for android
GNU General Public License v3.0
2k stars 131 forks source link

Handle Artist Credit/DJ Mix Artist Edge Cases #458

Open nvllsvm opened 1 year ago

nvllsvm commented 1 year ago

Describe the Bug/Crash

Both the play and shuffle buttons are disabled when browsing by album artist.

The album artist "Various Artists" is not the artist of any track present on any of the albums.

  1. Have an album with multiple tracks
  2. Set the "album artist" tag to a value that does not match any of the "artist" tags of the album's tracks

Screenshot_20230528-164439

Describe the intended behavior

What android version do you use?

Android 13

What device model do you use?

Pixel 7 (GrapheneOS)

Bug report

-

Duplicates

OxygenCobalt commented 1 year ago

This is intentional behavior. In my opinion, artists like "Various Artists" having songs or being playable really makes no sense, as they are less representations of a discography but rather a kind of classification. I don't have plans to change this behavior unless you can provide a compelling reason.

nvllsvm commented 1 year ago

In addition to Various Artists, my library has 25 other instances where the album artist does not appear as an artist on any of the tracks.

Both of these groupings have different expectations than a general Various Artists grouping - especially when it comes to DJ mixes. I like to shuffle tracks by the DJ as I know the tracks the DJ chose meet a certain style and quality.

OxygenCobalt commented 1 year ago

some are splits / collaborations of a multiple artists (ex. Inade & Circular, Seabound / Pride And Fall)

That seems like you might benefit from multi-artist functionality, which would recognize "Inade & Circular" as two artists named "Inade" and "Circular" if the "&" separator was enabled in Settings -> Content -> Multi-value separators.

some are DJ mixes (ex. Tiësto, Cryo Chamber)

That's new. I personally don't listen to DJ mixes, but what about them makes it such that their album artist != every track artist in the album?

Overall, these are actually some compelling reasons for me to change this behavior, I may consider it.

nvllsvm commented 1 year ago

That seems like you might benefit from multi-artist functionality, which would recognize "Inade & Circular" as two artists named "Inade" and "Circular" if the "&" separator was enabled in Settings -> Content -> Multi-value separators.

That would cause issues with artists who have an & in their name (ex. Huey Lewis & The News, M & H Band).

That's new. I personally don't listen to DJ mixes, but what about them makes it such that their album artist != every track artist in the album?

Because the DJ (album artist) is not the actual artist of the track - they only included it on one of their compilations.

Tiësto is a good example here since he releases both compilations and solo albums. There are two ways I listen to his music:

If I set the artist to Tiësto on all the tracks of In Search of Sunrise 6 Ibiza, I would no longer be able to filter on just the songs that Tiësto was truly the artist of. Likewise, this would also prevent these songs from showing up when filtering by their respective artists (ex. track 2's artist Glenn Morrison).

Likewise, there are situations where a compilation may have an exclusive track. Ex. the track Deep by Nine Inch Nails on Lara Croft: Tomb Raider (Music From The Motion Picture). That track should be included when I want to play everything by Nine Inch Nails.


Basically, preserving these allows for different ways to filter a library.

A new tab in the UI for album artist might make the most sense here. The top level would be a listing of albumartists though would fallback to using artist if a file lacks the albumartist tag.

nvllsvm commented 1 year ago

Also want to point out the new UI tab I proposed would result in both Tiësto's compilation and solo albums being included in the view - this is expected. The pattern of "albumartist tag first, artist tag fallback" has been implemented in a number of players, both desktop and Android.

nvllsvm commented 1 year ago

Another example is the album Mein Land by Rammstein. Very much a Rammstein album, but it just happens to contain one song by another artist.

OxygenCobalt commented 1 year ago

That would cause issues with artists who have an & in their name (ex. Huey Lewis & The News, M & H Band).

Yeah, I know. That was primarily the "fast solution" if you wanted the issue resolved immediately. A better answer would actually to:

  1. If using vorbis comment metadata, define multiple ARTISTS/ALBUMARTISTS comments with each artist value. Auxio will then parse them as several artists without any separators.
  2. If using ID3v2 metadata, define TXXX frames with a name of ARTISTS/ALBUMARTISTS to contain each artist delimited by a null terminator (\0).

I don't know what tagger you use, but it should have this kind of functionality somewhere.

Because the DJ (album artist) is not the actual artist of the track - they only included it on one of their compilations.

Okay, judging by the MusicBrainz information on DJ Mixes you're actually right about this.

If I set the artist to Tiësto on all the tracks of In Search of Sunrise 6 Ibiza, I would no longer be able to filter on just the songs that Tiësto was truly the artist of. Likewise, this would also prevent these songs from showing up when filtering by their respective artists (ex. track 2's artist Glenn Morrison).

Arguably you could set it to Tiësto, Glenn Morrison and then have it work, but that is probably non-standard.

Likewise, there are situations where a compilation may have an exclusive track. Ex. the track Deep by Nine Inch Nails on Lara Croft: Tomb Raider (Music From The Motion Picture). That track should be included when I want to play everything by Nine Inch Nails.

Already done by the app, assuming that it has an artist tag of Nine Inch Nails.

I definitely see your point, at least with the DJ Mixes. As for the collaborations, I consider that improper tagging. I can do one of two things then:

  1. Drop the restriction and add the entirety of an album to an artist's songs. I do not like this because of what it does to artists like Various Artists, but if it's absolutely required I will do it.
  2. See if there is some metadata specification that handles the DJ Mix edge case. Maybe (Album) Artist Credit is meant for this, but I honestly don't know.
OxygenCobalt commented 11 months ago

Oh shoot, I completely forgot to reopen this issue to indicate I was investigating further. I'll do that now, sorry.

I was able to specifically find an edge case where linking an album artist to all songs in an album results in a mangled artist: The album Downfall of the Neon Youth is credited to three album artists (Parannoul, Asian Glow, sonhos tomam conta), but individual songs tend to be credited to one or a pair of those artists. If I linked all of the songs to their album artists, suddenly they would have incorrect artist credits.

I did look into Artist Credit tags, and I think Auxio should be interpreting those to resolve the DJ Mix edge case. Using your Tiësto example, Auxio should be able to parse the "Artist Credit" tag as Tiësto and then link it as an artist. The issue is the way you bring up that you want to consider both Tiësto the DJ and Tiësto the producer as separate artists. This is possible (But hard) in the music model, and I don't know how to indicate it in the UI. Would love some pointers on how you would indicate it in-app.

@nvllsvm