Parsing tags for unidentified albums

I have many compilation albums that don’t appear in Rovi’s database at which juncture it seems Roon uses metadata from the underlying files, which is to be expected. I’ve encountered a number of occasions where metadata has been used but not parsed to separate multiple entries e.g. there may be an artist tag Tom Petty\\Stevie Nicks rather than two artist tag entries. Where this is the case Roon creates an artist Tom Petty\\Stevie Nicks. It’d greatly help if Roon could recognize user specified delimiters to split such instances when scanning.

1 Like

Second that. A mapping is the best way to go. If you have just a few albums in the “unidentified” category and it wouldn’t break your system to change the metadata, replace your separator with a semicolon. I found this by experimentation but until it’s a documented feature, I’m sure there’s no guarantee it will be true in perpetuity.

Thanks for the tip, however, there are at least a few hundred unrecognized albums and my entire library is tagged using ‘\’ as delimiter. What I could do is reprocess my entire library through a Python script that leverages puddletag’s code library…effectively forcing a rewrite of every tag in every file in my library. I imagine it’d take quite some time to run given my library size, but it’d get the job done.

From the point of view of enabling users to effectively leverage their own metadata though, the preferred approach would be for Roon to allow a user to provide a string that should be regarded as a delimiter when importing a user’s library. Thoughts @brian?

If there’s enough demand, we’ll build it. We definitely considered the option when designing the 1.1 changes, and consciously decided not to do it at the time.

We have a general aversion to making settings that result in complex rewrites of the database. This is why we don’t have any. There’s always an element of risk involved in that sort of stuff, and the effects might not be easily reversible if we get it wrong.

The genre mappings stuff is the closest thing, but the way it works avoids having to re-evaluate the whole world, since genre mappings can be applied on-the-fly and do not effect metadata on disk. There isn’t a corresponding trick to make this feature simple/fast/un-scary.

The more I read about Roon, the more I come to understand how complex it is. So I’m probably being naive. But here goes anyhow. The problem is that we don’t want any “unidentified” albums in our collection because they don’t participate in the “Roon Experience”, particularly where the artists, composers, etc are concerned. I don’t care that my collection has an artist “Uchida” who becomes a useful clickable link that reads “Mitsuko Uchida” on an identified album. I do care that “Uchida” in an unidentified album is a link to some unknown artist with no bio, and no links outside my collection. Likewise, the person with the collection that has artist separators “\\” probably doesn’t care that in an identified album, the separator on the screen is “/”.

I might suppose that the data flow in scanning an album is to have a software process that scans the tracks and gathers metadata and then hands that off to perhaps several processes that attempt matches in various databases that Roon links to, and perhaps another process that gathers the results, figures out the best match and “identifies” the album. What would work, in this scenario, is for the scanning process to pipe its output into another process that transforms the output that is passed on to the database matchers. Much like the Unix “grep” programs. This new process could provide for simple mappings, such as “Uchida” -> “Mitsuko Uchida”, or “\\” -> “;”, or “last _name, first_name” -> “first_name last_name”. It could be a lot more elaborate, even providing general regular expression parsing, thereby allowing the user to make a total hash out of the metadata. :grinning:

But this new process is only involved in the metadata scanning. There are no complex rewrites of the database. Turn the process into an identity mapping and rescan the album and we’re right back to where we are now. I’m sure you’ve thought of this and it’s not so simple, but it seems simple and it would be a lot nicer than what I have to do now, which is rewrite my tags, album by album, to fit Roon.

Hmm, that’s pretty much what I’ve been doing this afternoon. I chose to use ‘\’ as a delimiter as it’s highly unlikely to clash with artist and album names, and my previous music sever could deal with it because you could define the delimiter string. Somewhere along the line it also became a bit of a tagging standard (in mp3tag if I recall correctly). My tagger displays multiple artist entries in any file as artist1\artist2 etc. but when it writes VorbisComments it creates multiple artist= entries, which is what Roon is anticipating. Luckily there are far fewer instances that need correcting than I’d anticipated. I’d have thought the code that recognises ‘;’ as a delimiter could test for presence of any user defined string as a delimiter, but it seems there’s more to it than that. Luckily I can load all offending albums into puddletag and run an action to split tags based on the delimiter then just force a rescan in Roon.