Bugzilla – Bug 2696
Recognise additional contributor type "performer"
Last modified: 2009-10-06 12:03:12 UTC
NB - this is one of a series of requests, collectively intended to improve usability for users of Classical music. See attachment for context. Recognise these tags: "Performer" in Vorbis, TP1/TPE1 in ID3v2.2/2.3. Add to the database as a new contributor role. This is in addition to the existing contributor roles of artist/conductor/composer/band. Note that there could be multiple instances of this tag on a single file, all are equally valid. Reason: this is intended to be used to capture principal soloists Optional extra: Add "Lyricist", "Arranger", "Author" as further (distinct) contributor roles (Possibly unnecessary if Request 5 - User Defined tags - is implemented and allows several user defined tags)
Created attachment 1069 [details] Context description for this and other requests
Created attachment 1083 [details] Description of possible solution I have made some changes, documented in this attachment, which seem to work... using 6.5b1 as a baseline.
Created attachment 1089 [details] a comment on Ceejay's comment I hope Ceejay's suggestion won't close the door on enhancements 2997-2701.
Why would you need to add a new Contributor? TPE1 is already mapped as ARTIST: In Slim::Music::Info.init() we map a v2 tag to a name like so: $MP3::Info::v2_to_v1_names{'TP2'} = 'BAND'; $MP3::Info::v2_to_v1_names{'TPE2'} = 'BAND'; but TPE1 is not there, because it's *already* mapped as a base part of MP3::Info line 1664: %v2_to_v1_names = ( **snip** 'TP1' => 'ARTIST', **snip** 'TPE1' => 'ARTIST', **snip** ); You are just mapping TPE1 to Performer *instead* of Artist
Response to Bill, and attachment of 2/1/06... this wasn't meant to be just a quick fix, it looks like it really is a fix: it gets "Performer" into the system as an equal player alongside Artist, Conductor, Band etc. The mapping which equates "Performer" to "6" is just the key that is used in the database. If this is used, the Performer values show up correctly in the Track info in both Web and Player UI. My main concern about this is that I've not yet worked out (despite a couple of pleas for help in the developers forum) how to do searches for the distinct kinds of Contributor. My secondary concern is that I don't know the whole code anything like well enough to be sure I haven't missed some other code which needs similarly extending.
Response to Devon Jones (6 Jan) ... thanks for pointing out this code. There are really two separate questions here: (1) do we need a separate Performer tag? (2) if so, how do you map onto ID3 tags? The answer to (1) is YES, this is essential for a comprehensive tagging of classical music, imho. Using multiple Artist tags is I think very smelly indeed, it will seriously confuse other player systems. But we really want to see who the lead soloists are, which is exactly what PERFORMER does (and this is "defined", inasmuch as anything is, for FLAC/VORBIS comments). The answer to (2) is much trickier, and you are right that TP1/TPE1 is probably not the right one to use. I've looked at the list in the file you referenced, and I'm not at all sure there is one. TP3/TPE3 is closest, but it looks like that is also used for Conductor. I'd really hate the restrictions of ID3 to stop VORBIS (or Ape) users being able to do what they can, though! One simple if dirty solution would be simply not to map any ID3 tags onto "Performer": that way nothing is lost for existing ID3 tag users. A slightly more sophisticated way would be to allow the user to specify an ID3 tag to be mapped onto Performer. This I suppose is some sort of relation of Bug 2700 in which we've asked for User Defined tags. Ceejay
One more place (thanks to Grotus for pointing this out)... You need to add a PERFORMER element to the $parsedFormats hash in Slim::Music::TitleFormatter. Just add performer to line 129 of TitleFormatter (in the qw(composer ... genre)). This allows the use of PERFORMER when defining title format strings.
What would be the difference between "performer" and "artist"? Right now you can do: BAND/TPE2=Chicago Symphony Orchestra ARTIST/TPE1=Emanuel Ax or BAND=The Modern Jazz Quartet ARTIST=John Lewis ARTIST=Milt Jackson ARTIST=Percy Heath ARTIST=Connie Kay
Because the "artist" is not necessarily a performer at all. ARTIST is de facto whoever got top billing on the album, or whose name the album is filed under in the music store. That could be the individual performer, a band name, a composer, or conductor. Co-opting that tag for some other usage will screw up the functionality of all the other existing music players out there, because they use it to index albums in a useful way. Consider an album that is labeled: BACH - Great Organ Favorites (performed by E. Power Biggs). ARTIST=Bach, J.S. is obvious. It's certain that I don't want to have to look this one up under E. Power Biggs on my iPod, which is what you get if you decide to assign ARTIST to contain the performers. PERFORMER could include guest performers who appear only on a few tracks, which would also not work well when stuffed into an additional ARTIST tag.
Agreeing with John but just adding a bit... I see PERFORMER for classical music as being for the soloists in concerti or choral music, for example. Bundling them into the Artist tag is completely inappropriate. I want to be able to search for cases where PERFORMER=Vladimir Ashkenazy, say. Note that this specifically means NOT picking up music where CONDUCTOR=Vladimir Ashkenazy (unless he's both, of course). I don't think I have any music where he's the Composer, but if I did I certainly would not want that mixed in. Also, multiple ARTIST tags is frowned upon in some definitions, it would certainly cause some players to fail. That's not an argument to stop SS supporting the usage, of course, but it does mean that you can't insist on it as a means of approaching a common requirement. What's frustrating here is that adding PERFORMER as an extra tag isn't that hard (as I demonstrated with my proof of concept on a now-ancient version of 6.5) but I don't have strong enough skills to add it as a real patch. Of course the real value would only come when the other requests to actually DO something with it were added, but even one step would be nice....