PERSONNEL tag in ID3 based files

I’m trying to make Yate more user friendly for our joint users. Thanks for sending me links to some metadata related documents. However the documents, while describing the approach do not cover how the metadata is expected to be stored in the audio files. In fact, most of the documentation is written to reflect FLAC tags.

I’ve been able, via searching, to determine how PERSONNEL is formatted in FLAC files. I need to know where the PERSONNEL information is extracted from in ID3 based files. Musician Credits, Involved People, a User Defined Text Item named PERSONNEL, … all of these? If it is a UDTI is the format the same for ID3v2.2, v2.3 and v2.4?



Hi @Barry_2MR2, if by “user-defined-text” you mean TXXX, then yes.

Yep TXXX. I’m assuming that in ID3v2.4 you’re reading \0 as the item separator and in ID3v2.3 and v2.2 whatever the user configures or ; as implied in some of your documentation:


description = PERSONNEL
value = person - role\0person2 - role2\0person3 - role3


description = PERSONNEL
value = person - role;person2 - role2;person3 - role3

Thanks for your help!!!

Speaking as a Yate user, thanks for undertaking this!

1 Like

I’ve downloaded the trial of Roon and have added test files for MP3, FLAC, AIFF, WAV, M4A, DSF and DFF.

In the FLAC files all credits entered on PERSONNEL comments appear as expected. In the MPEG-4 and ID3 files I can get a single credit to appear when stored to the appropriate low level PERSONNEL tag item. If I use any delimiter value the entire tag item is ignored…even though I can see it in the File Tags in Roon.

I’ve tried using NULL as a delimiter, the default of ; and attempted to add others manually in your settings. Are multiple items supported on the PERSONNEL low level components? FLAC is the only audio format where more than one tag item can have the same name. In ID3 and MPEG-4 files I cannot have more than one PERSONNEL tag item. (TXXX in ID3 or ---- atom with a mean value of in MPEG-4). Both specs require name uniqueness.

I assume I’m missing something???


A little more information. If I break the ID3 specification and output multiple TXXX frames named PERSONNEL, Roon displays the correct credits. If I do the equivalent on the ----PERSONAL atoms for MPEG-4 files, Roon only displays the credit associated with the last occurrence. (Which actually is correct as it is invalid).

So breaking the specifications gets us a 50% improvement.

I’m still hoping that I’m missing something on a delimited field. Any help would be appreciated.

so… is Yate going to have a “Roon Extended Fields” tab as it now has for Audirvana? :slight_smile:
right a few days ago I was about to ask you exactly this :wink:

1 Like

I made my own Roon tabs in Yate, with the tags that Roon recognizes. Working well so far.

willing to share it here and/or on Yate’s forum? :wink:

I’m no expert at this. Just figuring it out as I go along. But I made 2 tabs in Yate - one for general tags used by Roon in all music, and one specifically for Roon’s latest classical tags available in v1.3. I made 8 custom fields, Yate allows a maximum of 10. You can see in the attached images the Yate tabs and what Roon sees, as per the track file info.

I have not looked at the PERSONNEL tag yet, as I won’t be trying to input album credits unless a CD is not recognised (too time consuming). My general procedure is to locate the actual cd in Discogs, import from Discogs to Yate, add or correct anything that needs to be changed (such as Version), add my cover scan, then import to Roon. In the example, the CD is recognised and a lot of the data that I put in the file tags does not get used. But at least it is there in the file, if ever I have to move away from Roon or if Roon disappears.


never even just tried using Yate’s “tag editor” :confused:
will give it a try. thank you :slight_smile:

I’m still tagging everything, and will keep doing it, for your very same reasons :wink:

hope Barry is getting from developers here the answers he needs, even if it doesn’t look so :frowning:

Hi @joel, Can I make a plea for someone at Roon to answer the couple of follow-up questions that @Barry_2MR2 asks in this thread? A lot of Roon users must be using Yate for tag editing, and it would really help us to make the most of 1.3 if Yate could give us specific help.


I believe that we support newlines as delimiters for PERSONNEL.

(we didn’t invent this tag–we did a statistical analysis of a few million files from various sources and discovered that it was the most common way to represent arbitrary name/role pairs, and that newlines were the most common way to delimit it–probably because when delimited that way it makes a nicer looking credit list if viewed raw).

1 Like

Thanks Brian. It’s all I needed. I can confirm that ID3 Based and MPEG-4 files have a working clean approach with this information. I’ve also verified that the same delimiter works in FLAC files although it is not necessary as FLAC does support multiple tags with the same name. The next release of Yate, post v3.15.1 released today, will have a new credits manager which will directly support Roon.


Sorry Barry, I am not following. I have downloaded v3.15.1 and I can see that the release notes say:

User Defined Text Items can be forced to display contained items separated by the multi-value separator one per line with the separators removed. The data is converted appropriately before being displayed and when written. To enable this, add a UDTI item to the panel and configure it to occupy more than one row. Assign the item a display name starting with a semi-colon. The semi-colon will not be displayed.

But I am just not understanding. Could you run through an example of how to get the multi-line PERSONNEL tag configured. And what do you mean by “v3.15.1 released today, will have a new credits manager which will directly support Roon”?

I was initially a little confused by this, too, but I think @Barry_2MR2 is saying that the next version of Yate — the one after yesterday’s 3.15.1 — is the one that will have the Roon-specific panel.

Hi Paul. It’s a matter of convenience, abstraction of file formats and ease of use.

My previous post said “post v3.15.1”. You can in fact edit PERSONNEL now. Simply go to the UD Text editing panel, create a new UDTI named PERSONNEL, make sure the Separate Multiple Values option is unchecked, and manually add items one per line formatted as:

person - role

In Yate that’s about as basic as you can get. The only issue now is multiple existing PERSONNEL tags when read by Yate in FLAC files will be aggregated into a single representation separated by our multi-value delimiter. This means the visual representation will be a bunch of credits separated by ;;; sequences. You can still edit them, with Separate Multiple Values checked. In this case the credits will be written as separate FLAC tags as opposed to a single tag when newline is used as a delimiter. Both methods will work… for FLAC. In ID3 based files the actual file storage for multiple values differs. In this case Yate has no concept of automatically using non standard ID3 separators. … but if you’re creating new metadata, the first method will work fine for all file types.

I have a collection of about 40k tracks which have been painstakingly tagged over the years. My FLAC credits are stored in the very common PERFORMER tags formatted as:

person (role)

Credits in my ID3 based files have the credits stored in the Musician Credits and Involved People standard ID3 locations.


Yate can hide the PERFORMER tag and users never have to know about it. It is abstracted up to a high level display of Musician Credits and Involved People. These high level fields support various aggregation and sorting capabilities. Editing is standardized for all audio file types and you do not have to worry about delimiter formats or the final storage of the data.

Roon has 6209 documented ‘roles’ and if a PERSONNEL credit specifies a different role it is ignored. Discogs has 624 ‘recommended’ roles. Other data sources have their own representations. If I have an album with a role populated from Discogs data I might have a role of ‘Acoustic Bass’. However the Roon equivalent is ‘Bass (Acoustic)’. From your documentation, the existing unknown credits will not be displayed… and they’re all in the wrong place regardless.

Your handling of disparate locations for some of the roles is good. As you can read separate tags for example, for ENSEMBLE, Yate users can map this item to a custom field which makes it far easier to manipulate and display. This also has to accomodate different file formats.

The proposed Credits Manager will hopefully remove all the low level fiddling from users. I’m hoping to be able to remap existing roles to Roon acceptable ones. I also want an “Are all my roles acceptable?” feature. I would like all of this to work across multiple tracks and file formats. This will be a higher level of functionality than what is offered today for Yate’s Musician Credits and Involved People fields.

The goal is to make it easier and more bulletproof for Yate users to manipulate Roon acceptable credits. However, in full disclosure mode, the new functionality will support anyone. It is entirely possible that I will allow multiple formats to be written so that compatibility is maximized across applications. As the ‘read’ data will be merged by Yate, this will have no detrimental effect.

Then there is the entire topic of automation. How well can I automate the functionality so that my entire collection gets batch processed.

There’s a lot to do but it looks like I have all the information I need.


Sorry, I missed that and thought everything is in 3.15.1. Thank you very much for the detailed post. I understand much better now. I am very much looking forward to the Credits Manager.


… 6209 roles? :scream: