(12-24-2020, 05:39 PM)Tim Curtis Wrote: The code now handles multiple occurrences of Genre, Artist, Performer and Conductor tags and considers Artist, Performer and Conductor as all being "artists" which they are. This approach supports Classical collections which are often tagged with multiples, and it still supports Pop collections which normally only have a single Genre, Artist, AlbumArtist tag.
When there are multiple "artists" present it's not possible to determine which one is the AlbumArtist if no AlbumArtist tag exists.
In your test album The same value is assigned to Performer and Artist tags and thus we have multiple "artists", and there is no AlbumArtist tag. This is what results in "Unknown AlbumArtist".
I don't quite understand why the tagging utility creates both a Performer and an Artist tag with the same value. Is this a common practice?
-Tim
Hi Tim,
Took a while to get back to you having to find time after Christmas and work duties to look into this a bit further.
These albums will likely have been at some point EAC rips with cue sheets and I decided some years ago to split them all into tracks and ditch the cue sheets, the metadata in those cue sheets probably came from CDDB and the tools/scripts I used to split and tag the files en masse would have populated whatever was in the cue files, including the performer tags.
I've sorted the problem at my end, using metaflac I identified all the tracks with matching artist and performer tags (21195 of them!) and removed the performer tags without altering the file modification dates, turns out they were the only files I had that had performer tags so all is well.
Still I will put it out there that I don't think that's really the right way to handle album artists, I can see what you mean by looking in playerlib.php that the code is creating an array of artists tags if there are multiple artists under the same album and if the array contains more than one value then set album artist to Unknown AlbumArtist if there's no Album Artist tag and that's fine.
But as it's now adding the values of the performer and composer tags to the artist array, if a composer or performer tag exists at all (even if they're the same as artist) the artist tag is no longer used as the album artist in the absence of an album artist tag and I think that's having an effect that was not intended.
Code:
455 for ($i = 0; $i < $linecount; $i++) {
456 list($element, $value) = explode(': ', $lines[$i], 2);
457
458 if ($element == 'OK') {
459 // NOTE: Skip any ACK's
460 }
461 else if ($element == 'file') {
462 $item = count($flat);
463 $flat[$item][$element] = $value;
464 }
465 // @Atair: Gather possible multiple Genre, Artist, Performer and Conductor values as array
466 elseif ($element == 'Genre') {
467 if ($flat[$item]['Genre']) {
468 array_push($flat[$item]['Genre'], $value);
469 }
470 else {
471 $flat[$item]['Genre'] = array($value);
472 }
473 }
474 elseif ($element == 'Artist') {
475 if ($flat[$item]['Artist']) {
476 array_push($flat[$item]['Artist'], $value);
477 }
478 else {
479 $flat[$item]['Artist'] = array($value);
480 }
481 }
482 // @Atair: add performers to artists
483 elseif ($element == 'Performer') {
484 if ($flat[$item]['Artist']) {
485 array_push($flat[$item]['Artist'], $value);
486 }
487 else {
488 $flat[$item]['Artist'] = array($value);
489 }
490 }
491 // @Atair: add conductor to artists
492 elseif ($element == 'Conductor') {
493 if ($flat[$item]['Artist']) {
494 array_push($flat[$item]['Artist'], $value);
495 }
496 else {
497 $flat[$item]['Artist'] = array($value);
498 }
499 }
500 else {
501 $flat[$item][$element] = $value;
502 }
503 }
The performer tag is a valid tag as is conductor, and in the context of classical music or audio books these are more likely to exist and be different to the artist tag and the same is likely to occur. Shouldn't have to add an Album Artist tag if the Artist string is the same on all tracks regardless of any other tags. In the case of audio books it's less likely to be an album at all, often a book or other spoken word audio file is a single file so overriding artist for Unknown AlbumArtist if performer exists doesn't make sense.
Whilst Album Artist is useful and required if an album contains tracks from multiple artists it isn't mentioned as one of the minimal proposed tags in the Vorbis specs, yet artist and perfomer is and the different contexts described.
https://www.xiph.org/vorbis/doc/Vorbis_I...860005.2.2
Anyway thought I'd put it out there in case this bites anyone else.
By removing the performer tags in my collection and regenerating the database I no longer have 1600+ albums showing up as artist unknown and they're again listed against their artist tags.