Now maybe you wonder, what's the difference between them all, and why do those
darn computer people always have to mess things up with different versions
of everything?
Allow me to explain:
It all started several years ago, when the mp3-format
was all new and not nearly as widespread as today. At this time, most files
on PC-computers had the short 8.3 name format, so it was practically impossible
to infer what artist and title an mp3 had by only reading its filename. A
couple of guys became quite annoyed with this and put together a little program
that would store this data inside the mp3-files themselves. As a quick fix
they simply appended all the data as a 128 byte static datastructure at the
end of the mp3 files. Although this limited the tag field sizes to 30 characters
each or below, for most artist name and titles this was sufficient. The whole
thing worked quite fine for them and after a while it became implemented in
an mp3-player, and then in another mp3-player, and before they knew it their
little quick fix had become a world-wide standard for saving info in mp3:s.
There were two things about these tags (ID3v1.0) that annoyed people. First,
they had no storage space for tracknumbers. This was because at the time that
this tag was created there were practically no full mp3 albums in circulation,
only single files (this in turn mostly due to the fact that 50-100 Mb was
quite a lot of data back then, when 1.44 Mb floppy disks were the standard
means of data transportation), so track numbers weren't really that important.
Second, when you add up all the artist names and song names in the world,
there are actually quite a few that exceed the 30 character limit.
The first problem, with the track numbers, was solved by someone by "stealing"
2 bytes from the end of the comment-field, which was the least used field
of the ID3v1.0 tags, and using it to store a binary tracknumber value instead.
This became known as the ID3v1.1 standard, but most programs did not support
it (e.g. Winamp). Luckily, due to the standard implementation of text string
storage in computers (null-terminated strings) it could be done in such a
way that these new tags were fully backward-compatible with the ID3v1.0 tags,
so even if a program didn't support v1.1 tags, they were still fully readable
and the tracknumber data was simply ignored if present.
The second problem on the other hand could not be solved nearly as easy. After
all, the v1-tags had started out as a 10-minute hack that mistakenly turned
into a world-wide standard, and it was time to rethink the whole thing from
the start and come up with a new design that was worthy the number of users
around the world that were actually using it every day. So, this was exacly
what a couple of guys did, and the results were the ID3v2 format.
The ID3v2 tag is fundamentally different from ID3v1 tags. Some important differences
are:
For more info about the format of ID3v2 (and ID3v1) tags, take a look at:
http://www.id3v2.org