epoupon / lms

Lightweight Music Server. Access your self-hosted music using a web interface.
http://lms-demo.poupon.dev
GNU General Public License v3.0
1.14k stars 62 forks source link

Support for compilation tag #520

Closed splintering closed 2 months ago

splintering commented 2 months ago

It seems LMS sets "compilation: true" in the OS API only for albums that have MB release type set to compilation, but not to albums that have the compilation tag (as introduced by iTunes? and supported by Picard) set. Could that be added?

epoupon commented 2 months ago

Indeed they are not exactly the same and it should be handled correctly

splintering commented 2 months ago

I guess taglib supports the different compilation tags for the different file formats anyway...

I was thinking if MB release type compilation really has the same meaning as those tags. But if you only use MB, then you will only get the release type, but Picard does not set the compilation tag by default. So it makes sense to handle them the same.

epoupon commented 2 months ago

I was referring to https://picard-docs.musicbrainz.org/en/appendices/tag_mapping.html#compilation-itunes-5

For Picard>=1.3 this indicates a Various Artists album; for Picard<=1.2 this indicates albums with tracks by different artists which is incorrect (e.g.: an original album with a duet with a feat. artist would show as a Compilation). In neither case does this indicate a MusicBrainz Release Group subtype of compilation.

But I have not investigated more!

epoupon commented 2 months ago

So yes, they are not the same. A single artist can issue a compilation album, which should not be reported as compilation in OS API (but the release types would be "album" + "compilation")

splintering commented 2 months ago

Well, that goes now to the question what a "compilation" is:

I think the first is the primary target for the MB release type "compilation". I saw it used on the other two as well. But as this tag is mostly used to structure albums under one artist, I don't see why.

As for the tag "compilation", the question is what it is being used for. iTunes originally used it to group albums separately besides album artists (so in the list of all album artists, there is another entry called "Compilations"). Other apps might at least enable filtering by this field.

I think the tag should be taken seriously, so when it is set, an album should be considered a compilation (internally as on the OS API), no matter if it is from one or several artists. Also the other way round, an album with several artists that has the tag not set should not be considered a compilation. There should be no inherent assumption on the compilation status from other tags - and that includes the MB release type.

I feel you ate thinking the same, but I wanted to explicitly say it 😀

splintering commented 2 months ago

Sorry, closed by accident...

epoupon commented 2 months ago

I feel you ate thinking the same, but I wanted to explicitly say it 😀

To sum up: compilation and MB release type are two different things, and we will expose both things in OS API. The LMS UI will continue to only show MB release types.

For me all the three usages of MB release type "compilation" you mentioned are legit. Sometimes, you have a new album with several artists, this is not really a compilation Ex: https://musicbrainz.org/release/f02e1de4-5d03-4b1c-958d-3135434339ed. If you open it with picard, you will see: image

The compilation tag is just a helper when the album has various track artists.

splintering commented 2 months ago

Interesting, I thought they would set the MB album artist ID to the value for the "Various Artists" artist in MB, but seems they don't and set the compilation tag instead...?

epoupon commented 2 months ago

I do the see MusicBrainz Release Artist Id set to https://musicbrainz.org/artist/89ad4ac3-39f7-470e-963a-56509c546377 in the screenshot?

splintering commented 2 months ago

Ah! I missed that - in the German localization of Picard it is called "MusicBrainz Album Artist ID" - which is not very German, but simply the tag name (musicbrainz_albumartistid) with spaces. So I looked only for that.