Calling all performers with instruments in scripting

Tags: #<Tag:0x00007f050c97c198> #<Tag:0x00007f050c987f20> #<Tag:0x00007f050c987cf0>


I’m trying to create a script to copy ID3v2.4 frames that foobar2000 doesn’t read to TXXX frames, but I can’t figure out how to copy the list of performers with instruments. According to the tag mapping, the internal name for performers is performer:instrument, but that only works if you specify the instrument (like performer:piano). The script $copy(_id3:TXXX:Performer,performer) doesn’t work.

In other tagging formats, you get a list of artist (instrument), artist (instrument), etc. How can I get that in an ID3v2.4 tag?


Nobody? I thought this would be something obvious I keep missing. Is what I want impossible?


IMHO it’s not possible with tagger script alone, as you already discovered you can only access the tags with their full name, including the instrument.

With a plugin this would be doable.


You may be able to do it with the Classical Extras plugin. Disable the “works and parts” section (tab 3) and just use the first two tabs. This will give you tags such as “soloists” with the names followed by instruments in brackets.


Thank you both fro your suggestions. I was rather hoping I could avoid delving into plugins though. Unfortunately I updated to the 2.0 test build for Picard and the Classical Extras plugin doesn’t work with it yet (I tried to bump the API level and Qt version myself, but that wasn’t enough to make it work). I guess I’ll have to let this rest for now.

By the way, is there some in-depth documentation for the plugin API somewhere? The docs on the Picard website tell me very little.


Nope :frowning: It’s mainly looking at existing plugins at

There is actually not much of a dedicated plugin API. There are a couple of extension points, those are documented in . Apart from that plugins have direct access to the internal interfaces of Picard.


Dead right. Developing the Classical Extras plugin was quite a challenge! I do plan to migrate it to 2.0 but want to complete the functionality first so that I don’t have to do parallel releases.

I’ve had to do that in a few places, so I hope the devs don’t remove it in 2.0.