So sometimes I have multiple Releases with the same name. By default, this is a bit of an issue, as it means my music player interlaces them, trying to play the first track from all matching Releases, then the second, and so on. Sometimes they’re from the same ReleaseGroup (say, the DAT prototype, regular, and Super Deluxe versions of Dubnobassiwthmyheadman); sometimes they’re from a different ReleaseGroup (say, Future Sound of London’s Lifeforms album and single).
A quick fix
I can use the
%_releasecomment% disambiguation fields to differentiate them, but I can’t simply use them globally, because a lot of the time, they’re used for other things (as I mentioned in a previous thread). I don’t need my only copy of Orbital’s lime green album to be disambiguated as “Made in Germany by Warner Manufacturing Europe”.
For now, I’m maintaining a script that checks the Release name against a custom list of values and tells Picard to only pay attention to those particular Releases’ disambiguation comments. So I’m manually telling Picard which Releases I happen to personally have multiple versions of, which works, but it’s messy and arbitrary:
$set(album,$if($eq_any(%_releasegroupcomment%,single),%album% \(%_releasegroupcomment%\),%album%)) $set(album,$if($and($eq_any(%album%,Dubnobasswithmyheadman,Movement in Still Life,The Bitter End,The Downward Spiral,We're in This Together,Zeroes & Ones),%_releasecomment%),%album% \(%_releasecomment%\),%album%))
I’m guessing some other people have done something similar, each with their own idiosyncratic lists.
A hypothetical better fix
What I think would be ideal is some way of telling Picard more generally “if I personally in my own music collection have two Artists, ReleaseGroups, or Releases with the same name, then please disambiguate them, otherwise please don’t”.
What would make the most sense to me is if a function was added to Picard that returns true if the passed value is ambiguous. Something like
$is_ambiguous(), which you could for example send an
%album% to, and it would return true if, looking at all matching
%album% values in your collection, any one
%musicbrainz_albumartistid% value within that subset had multiple
%musicbrainz_albumid% values (so a Release name is deemed ambiguous only if you have multiple Releases of the same name by a single Artist, regardless of whether they belong to the same ReleaseGroup or not).
Or you could feed it an
%albumartist% instead, and it would tell you if you have several distinct
%musicbrainz_albumartistid%s in your collection with a matching name.
So if this function returns true, I could then tell Picard to pay attention to the relevant comment, be it
%_albumartistcomment% (which doesn’t seem to exist?),
%_releasecomment%, and otherwise to ignore them.
I think this would be really useful, so everyone would be able to automatically disambiguate only what they personally need to, leaving everything else uncluttered, with a simple script like this:
$set(albumartist,$if($is_ambiguous(%albumartist%),%albumartist% \(%_albumartistcomment%\),%albumartist%)) $set(album,$if($is_ambiguous(%album%),%album% \($if2(%_releasecomment%,%_releasegroupcomment%)\),%album%))
So if you have CD 1 and CD 2 of a single, or the deluxe and regular versions of an album, or two artists of the same name, then they’d be kept separate. But if you have just one, any one, it would keep things terse and tidy. Nice and simple.
But I’m not sure if this would be near-impossible to implement… I’m guessing so, as I’d imagine Picard’s functions don’t have the ability to look at other items? Picard would have to keep track of a user’s whole music collection at once.
Anyway, that’s what to me would make sense as a possible feature request for Picard, but perhaps I’m missing something… Is this a terrible idea? (The work to payoff ratio certainly wouldn’t be great, unless keeping track of a whole collection at once has other benefits.) Is something similar already implemented, and I’ve simply missed it? Please let me know your thoughts!