In the post-pudding Christmas after-glow, I have come to the conclusion that if I am going to put the recording year into the ALBUM tag (because only by including it there do we properly and completely use recorded classical music’s primary key), we might as well not fear duplicating data in another important matter: namely, the business of declaring who is the “distinguishing artist” for a recording.
It should already be common practice to have this data already present in the ALBUM tag (it’s why I own Symphony No. 5 (Karajan – 1970) for example).
It is also, probably, buried in your COMMENT tag: my standard practice, which I’ve long argued for on these pages, is to include all performer details in the COMMENT tag for a recording. So, for example, you’ll see my tagging for the aforementioned symphony looks like this:
In general, I will always enter a comma-separated list of performers, usually in the order: conductor, orchestra, choir, soloists. The first item in the COMMENT tag is, therefore, likely to be the same name (though in a more complete form) that appears within the final bracketed part of the ALBUM tag.
And that’s the approach I’ve used since about 2001 and it works fine: most music software lets you search the COMMENT tag, so if ever I need to pull up a list of all recordings by Karajan, I can do something like this:
…and you can see that, provided I am consistent in the way I type Herbert’s full name when tagging my music, I can find all his recordings without difficulty, even though he’s merely one bit of text amongst many others, hidden away within the COMMENT tag.
But… for reasons that may become clear to you in a few subsequent posts’ time, it’s not particularly ideal to bury important data amongst a list like this: finding it when you need it can sometimes be harder than it should be.
I’ve therefore decided we need to save the full “distinguishing artist” name into a tag all of its own… and one that a lot of music players are aware of and can display and search is… (drum roll, please)… PERFORMER. You can see that tag being displayed two screenshots ago, in that view of all the tags associated with the Beethoven Symphony conducted by Karajan. There, the PERFORMER tag is empty; my contention is now that it should be filled with the data Herbert von Karajan.
This is not a trivial change to my tagging habits, however: all my audio-related software scripts need to be aware of ‘PERFORMER’ and to handle and save it correctly, for example. Additionally, there’s the not-so-minor problem of how I go about “back-filling” the PERFORMER tag for all 60,000+ music tracks I already own and which, currently, lack such a tag.
So, firstly, I’ve released new PERFORMER-aware versions of all my scripts, all dated 24th December 2020. They are downloadable from the places that each of their associated articles will point you to.
Secondly, enter my new set-performer.sh script, which you can download from here.
Download that script somewhere (I shall assume your $HOME/Downloads folder) and then issue these commands to install it:
sudo mv $HOME/Downloads/set-performer.sh /usr/bin sudo chmod +x /usr/bin/set-performer.sh sudo ln -s /usr/bin/set-performer.sh /usr/bin/set-performer
That done, you can now cd to a folder containing your music files (I suggest you try it out on a small copied test sample of your music collection first, not the live, whole thing -not until you are comfortable with what it does, anyway!) and invoke the script by simply typing the command:
The script will then find all FLAC files (it only works on FLACs) and for each one found, it will read the COMMENT tag, extract the first item from it (assuming that commas are used to delimit one performer’s name from another) and write that into a new PERFORMER tag.
Here’s a little sample of some music files, with their existing tags exposed on the right-hand side of the screen. You’ll notice that there’s a COMMENT tag, in this case of the form “Philip Ellis, The Philharmonia, Nicholas Walker &…” and so on.
Here’s me navigating to that directory of music in a command prompt and running the set-performer script:
You can see that the program immediately sets to work and declares that the PERFORMER tag has been set for each of the files making up this recording. We can then see the effect of its work:
You can see that the COMMENT tag has not been altered (or damaged!) in any way by the actions of the script… but that a new PERFORMER tag exists (4 up from the bottom of the list on the right), and it’s got a value of “Philip Ellis’… which happens to be the first item in the COMMENT tag, assuming commas are the delimiter of items in that tag.
It is possible you are one of the strange band of people that don’t delimit things with commas, though! Suppose that the COMMENT tag was delimited by… let’s say, hyphens, in this manner:
…then if you simply ran the command “set-performer”, you’d end up with this result:
Since there are no commas to delimit things in the COMMENT tag, the “first” item that the script can identify is the entire COMMENT tag! So, the PERFORMER ends up being just a copy of the COMMENT, which is less than useful!
Fortunately, there’s a fix: the script takes a –d= or ––delimit= parameter. Set that to be the character you usually use to delimit items in a list, and the script can still work. So here you see me invoking the script and specifying a non-default delimiter as I do so:
When the script runs, the header area tells you what the delimiter is that it’s using:
And the results are good:
This time, although the COMMENT uses hyphens, the PERFORMER is correctly set, because it was told about the (fairly unusual!) use of hyphens to delimit items in the COMMENT list of artists.
Anyway, you don’t need to worry about the use of the ––delimit parameter if you use the far more sensible comma as your list delimiter! The comma is what the script uses by default, after all.
Remember, you only need to run set-performer once, to back-fill your large music collection that previously lacked a PERFORMER tag. If you are using CCDT to tag your rips, or CDDR to make them… then those tools now already know how to create and populate the PERFORMER tag, so there’s no need to run this new script over the digital music files created by those other tools.