What is the correct usage of Involved People?

I'm curious as to what the correct usage of this Tag frame is, especially within the context of MP3Tag. I know that according to the ID3v2.3 specifications, that it's supposed to be pairs of involvement types and the person involved, with both strings being terminated. So it should appear something like "Producer[null]John Smith[null]Engineer[null]David Johson[null]" in the tag itself. However, as with many other frames, the way they're written and the way they're entered/displayed are very different.

A lot of programs use the format of "Involvement:Person;Involvement:Person" when it comes to entering and displaying this information. So entering "Producer:YoungFyre;Producer:Karbon" in the Involved People frame in MP3Tag, it correctly writes to the tag as "Producer[null]YoungFyre[null]Producer[null]Karbon" (which causes a compatibility issue with another program, but that's really due to their "improper" implementation of the field). However, looking at this frame in MP3Tag after saving it shows "Producer:YoungFyre;Producer:Karbon;:" suggesting that what I believed to be the proper usage... isn't. Why is there a ";:" at the end?

According to this: http://help.mp3tag.de/main_tags.html#IPLS
you've done it right.
When I try it with "Producer:YoungFyre;Producer:Karbon" it is shown as "Producer:YoungFyre;Producer:Karbon;" after saving, without ":" at the end. So it looks right up to here.

However, when I look at the file in my mediaplayer (Foobar2000) it is not shown at all. But as you said, this could also be the fault of my player.

Using Mp3tag 2.48 I got this result:

I am wondering why there is no termination zero for Person2?
While in the user view the TIPL contains "Role1:Person1;Role2:Person2;". These are 28 Bytes.
The TIPL field length is set to 1C=28 Bytes.
But there are only 27 Bytes following. The last zero byte behind Person2 is missing?


Hm. It seems to be an issue with ID3v2.3 specifically. Switching it to 2.4, it will read and write correctly. Only displaying "Role1:Person1;Role2:Person2;" however if I switch to 2.3 and put in that string, it saves to the tag correctly however if I refresh and look at the frame information (in MP3Tag) it shows as "Role1:Person1;Role2:Person2;:". Saving the tag again with MP3Tag (with it appearing with the extra : at the end) results in the tag being saved with two null bytes at the end (which weren't there previously).