Picard Plugin: Format Performer Tags

This is the culmination of the plugin discussion in:

Once I’m comfortable that the bugs are (mostly) squashed and I’ve had a chance to clean up and optimize the code, I’ll consider submitting it for inclusion in the official Picard Plugins list.


Format Performer Tags [Download]

Overview

This plugin allows the user to configure the way that instrument and vocal performer tags are written. Once
installed a settings page will be added to Picard’s options, which is where the plugin is configured.


What it Does

This plugin serves two purposes.

First:

Picard will by default try to order the performer/instrument credits by the name of the performers, summing up all instruments for that performer in one line. This plugin will order the performer/instrument credits by instrument, summing up all performers that play them.

So instead of this:

background vocals and drums: Wayne Gretzky
bass and background vocals: Leslie Nielsen
guitar, keyboard and synthesizer: Edward Hopper
guitar and vocals: Vladimir Nabokov
keyboard and lead vocals: Bianca Castafiore

It will be displayed like this:

background vocals: Wayne Gretzky, Leslie Nielsen
bass: Leslie Nielsen
drums: Wayne Gretzky
guitar: Edward Hopper, Vladimir Nabokov
keyboard: Edward Hopper, Bianca Castafiore
lead vocals: Bianca Castafiore
synthesizer: Edward Hopper
vocals: Vladimir Nabokov

Second:

This plugin allows fine-tuned organization of how instruments, performers and additional descriptions (keywords) are displayed in the instrument/performer tags.

Here is some background information about these keywords:

MusicBrainz’ database allows to add and store keywords (attributes) that will refine or additionally describe the role of a performer for a recording. For an artist performing music on an instrument, these are the three attributes (keywords) that MusicBrainz can store, and offer Picard:

  • additional
  • guest
  • solo

For an artist performing with his/her voice, MusicBrainz has this restricted list of keywords describing the role or the register of the voice:

  • background vocals
  • choir vocals
  • lead vocals
    • alto vocals
    • baritone vocals
    • bass vocals
    • bass-baritone vocals
    • contralto vocals
    • countertenor vocals
    • mezzo-soprano vocals
    • soprano vocals
    • tenor vocals
    • treble vocals
  • other vocals
    • spoken vocals

Picard can retrieve and display these keywords and will list them all together in front of the performer. The result will be something like this:

guitar and solo guitar: Bob 'Swift' Fingers
additional drums: Rob Reiner (guest)
additional baritone vocals: Hermann Rorschach
guest soprano vocals: Bianca Castafiore

The problem with this is that it is a bit indistinct if these keywords say something about the instrument, the artist and their performing role, the voice’s register, or the persons relation to the group/orchestra. For instance:

  • ‘additional’ is referring to instrumentation. For example ‘additional percussion’.
  • ‘guest’ is referring to the performer as a person. Indicating that they are a guest in that band/orchestra instead of a regular member.
  • ‘solo’ is referring to a specific role a musician performs in a composition. For example a musician performing a guitar solo.
  • ‘soprano vocals’ is saying something about the register of a performer’s voice.

So you might want to attach ‘solo’ to the instrument, ‘baritone’ to the vocals, and ‘guest’ to the performer. This plugin allows you to do that, so you could have something like this as a result:

guitar [solo]: Bob 'Swift' Fingers
drums ‹additional› : Rob Reiner (guest)
vocals, baritone ‹additional› : Hermann Rorschach
vocals, soprano: Bianca Castafiore (guest)

How it Works

This is the concept behind the workings of this plugin:

The basic structure of a performer tag such as Picard produces it is:

[Keywords] Instrument / Vocals: Performer

This plugin makes four different ‘Sections’ at fixed positions in these tags available. Their positions are:

[Section 1]Instrument / Vocals[Section 2][Section 3]: Performer[Section 4]

In the settings panel you can define in what section (at what location) you want each of the available keywords to be displayed. You can do that by simply selecting the section number for that (group of) keyword(s).

You can also define what characters you want to use for delimiting or surrounding the keywords. For some situations you might want to use the more common parenthesis brackets ( ), or maybe you prefer less common brackets such as or ‹ ›. Note that using default parenthesis might confuse possible subsequent tagging formulas in the music player/manager of your choice. You can also just leave them blank, or use commas, spaces, etc.

Note that the plugin does not add any spaces as separators by default, so you will need to define those to your personal liking.


Settings

The first group of settings is the Keyword Section Assignments. This is where you select the section in
which each of the keywords will be displayed. Selection is made by clicking the radio button corresponding
to the desired section for each of the keywords.

The second group of settings is the Section Display Settings. This is where you configure the text
included at the beginning and end of each section displayed, and the characters used to separate multiple
items within a section. Note that leading or trailing spaces must be included in the settings and will not
be automatically added. If no separator characters are entered, the items will be automatically separated
by a single space.

The initial default settings are:

default_settings

These settings will produce tags such as:

rhodes piano (solo): Billy Preston (guest)
percussion: Steve Berlin (guest), Kris MacFarlane, Séan McCann
vocals, background: Jeen (guest)

Examples

The following are some examples using actual information from MusicBrainz:

Example 1:

(add example)

Example 2:

(add example)

Example 3:

(add example)


Credits

Special thank-you to @hiccup for improvement suggestions and extensive testing during the development of this plugin, and for providing the write-up and examples that formed the basis for this User Guide.

6 Likes

Thanks for this Bob, I like this plugin very much. Once you get its logic it is a very convenient plugin to configure the artist credits. Actually use it, but still have not finalized my decision how I want the tags to be formatted. What about your plan to submit it to our plugins list?

Only the UI currently could need some love. I’ll probably send you a PR if that’s ok :slight_smile:

1 Like

That’s very high praise. I’m flattered. Thank-you.

I was waiting to see if anyone found it useful, and it sort of slipped to the back burner during the GCI mentoring. I’ll do that right away.

Yeah, I suck at developing UIs (and Qt is NOT my friend). Rather than you sending a PR my way, I’ll PR the whole thing to the picard-plugins repository and you can make your changes there. That way you don’t have to wait for me to review and approve only to send it back to the “official” repository.

2 Likes

It looks like the plugin has a weird issue with Picard 2.2.2 (portable install)

To replicate:
Load a release containing performers so it displays the release in the right panel.
Not matched to any tracks yet.

Then drag an mp3 file to one of the tracks.
All fine, performers still show.

Then drag a flac file to a track.
The performers disappear.

Of course I am doubting myself here, but I did several tests, and they all result in the same.
Is there perhaps some Picard setting I am completely overlooking here?

Try as I might, I can’t get it to fail here.

The only thing that I had to change in the settings to get it to work at all was to check Use track relationships under theMetadata section.

But it’s very weird it only happens with flac, and not with mp3 right?
Anyway, me and my pc have been on for too long, shutting down now.

If/when I can replicate this after a restart, another portable installation and different files I’ll report back.

1 Like

In fairness, I did my testing on a clean version of Picard Portable with only the Format Performer Tags plugin installed, and the only change I made to the settings was to enable Use track relationships. Perhaps there is another plugin or settings that’s working in combination to trigger your problem.

Can you tell me what other settings you’ve changed and what other plugins you have loaded, and I’ll try to reproduce the problem here? Thanks.

I narrowed it down.
It has to do with using specific unicode characters.

I have the plugin setup like this:

The culprit are the characters in section 2.
‹ and › (u+2039 and u+203a)

Using this release:

You’ll find that all goes well with mp3 files, but flac files break it.

This is only happening with my portable 2.2.2 setup, not with my installed 2.1.3 version.

1 Like

Those are not valid keys for Vorbis comments. The keys in Vorbis comments are limited to a certain range of ASCII characters. Most printable ASCII characters basically, except = which is used as the separator between key and value.

1 Like

But this was not a problem for Picard 2.1.3?
Also MusicBee, foobar2000, mp3tag all have no problems with these characters?

edit:
And I just found this:
“The data is encoded in [UTF-8], and so any conforming [Unicode] string may be used as a value.”

here:

Earlier versions of Picard would indeed show those tags, but fail when saving the file.

I haven’t checked, but I doubt it. If they indeed support writing invalid keys the files might be broken for other tools.

Vorbis comments are basically a list of “Tagname=Tag value” pairs. You can happily use whatever Unicode character you like for the value, but the keys (tag names) are restricted.

1 Like

Of course I have no doubt whatsoever you have all the facts right about all the ‘hidden’ mechanics and protocols.
And I understand that in this case the tag name ‘PERFORMER’ may not contain these UTF characters.
But are the ones I am using in this plugin not in the content fields, thus allowed?

Experiencing this as a simple end-user:

I just wrote these tags using the plugin and Picard 2.1.3:
Nothing failed, and MusicBee displays it all perfectly.

And, I have been doing this ever since this plugin was released.
Only now with 2.2.2 (portable) issues arise.
Something else must be in play here?

2 Likes

Sorry, I now see the issue: While Picard internally stores this as performer:instrument=Artist (instrument is part of the key) the instrument of course gets written to the value for Vorbis comments (PERFORMER=Artist (instrument)). The detection code for valid Vorbis names does not consider this. I will have this fixed for the next release.

EDIT: Here is the ticket:

4 Likes

Thanks for the fast fix.
I think not, but asking to be sure: should 2.3.0.dev1 contain this fix?

I have been getting some ‘red disc’ error icons.

It looks like it is related to the Format Performer Tags plugin:

Using the most recent Picard 2.3.0.dev1 release.
(the portable edition for Windows)

Please let me know if you need any more details from me?

another release that triggers a red disc error:

Ping @rdswift in case this passed by you.

I haven’t forgotten you. I just haven’t had an opportunity to look into this yet.

1 Like

I just gave it a new try with the brand new Picard 2.3.0b1 release.
The issue remains.

E.g. these two releases result in ‘red disk’ error icons.
Using 0.6 as offered by Picard, using the default plugin settings.

Sorry for taking so long, but I finally got a chance to take a look at this. I found a couple of problems, and think I have it working now. Before it’s released “officially” through Picard, would you mind downloading a copy from picard-plugins/plugins/format_performer_tags/format_performer_tags.zip at 2.0_RDS_Plugins · rdswift/picard-plugins · GitHub and see if it resolves your issues? Thanks.

2 Likes

I tried it on the two releases I mentioned, and they get processed perfectly now.
There were some other releases that posed problems, but it looks like I removed the ‘problems’ folder they were in.

But I trust the issue is solved, so thanks!

1 Like