Jump to content

ID3

From Wikipedia, the free encyclopedia
This is an old revision of this page, as edited by Codingmasters (talk | contribs) at 12:16, 1 February 2010 (ID3v2: fixed capitalisation error). The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.

ID3 is a metadata container most often used in conjunction with the MP3 audio file format. It allows information such as the title, artist, album, track number, and other information about the file to be stored in the file itself.

There are two unrelated versions of ID3: ID3v1 and ID3v2.

ID3v1

After the creation of the MP3 standard, there appeared a problem with storing data about the file. Standalone MP3s didn't have any special method of doing this. In 1996 Eric Kemp had the idea to add a small chunk of data to the audio file, thus solving the problem. The standard, now known as ID3v1, quickly became the de facto standard for storing metadata in MP3s.[1] The format was released by Damaged Cybernetics, an underground group that specialized in cracking console gaming systems. This format was first used to identify ROMs for the 8-bit Nintendo decrypted by the leader "MindRape", Donald Ray Moore, Jr., in 1990. There was no identifying information for any of the ROMS, thus an ID tagging system was created to make tracking easier. Eric and associates naturally carried this over into mp3 files. This format was used for a number of file formats unknown at that time.[citation needed]

The ID3v1 tag occupies 128 bytes, beginning with the string TAG. The tag was placed at the end of the file to maintain compatibility with older media players. Some players would play a small burst of static when they read the tag, but most ignored it, and almost all modern players will correctly skip it. This tag allows 30 bytes each for the title, artist, album, and a "comment", four bytes for the year, and a byte to identify the genre of the song from a predefined list of 80 values (Winamp later extended this list to 148 values).

One improvement to ID3v1 was made by Michael Mutschler in 1997. Since the comment field was too small to write anything useful, he decided to trim it by two bytes and use those two bytes to store the track number. Such tags are referred to as ID3v1.1.[1]

Enhanced tag

The enhanced tag is an extra data block before an ID3v1 tag, which extends the title, artist and album fields by 60 bytes each, offers a freetext genre, a one-byte (values 0-5) speed and the start and stop time of the music in the MP3 file, e.g., for fading in. If none of the fields are used, it will be automatically omitted.

Programs supporting ID3v1 tags can read the enhanced tag, but writing may leave stale values in the extended block. The extended block is not an official standard, and is only supported by few programs, not including XMMS or Winamp.

Layout

Strings are either space- or zero-padded. Unset string entries are filled using an empty string.

ID3v1: 128 bytes

Field Length Description
header 3 "TAG"
title 30 30 characters of the title
artist 30 30 characters of the artist name
album 30 30 characters of the album name
year 4 A four-digit year
comment 28[2] or 30 The comment.
zero-byte[2] 1 If a track number is stored, this byte contains a binary 0.
track[2] 1 The number of the track on the album, or 0. Invalid, if previous byte is not a binary 0.
genre 1 Index in a list of genres, or 255

Extended tag (placed before the ID3v1 tag): 227 bytes

Field Length Description
header 4 "TAG+"
title 60 Next 60 characters of the title (90 characters total)
artist 60 Next 60 characters of the artist name
album 60 Next 60 characters of the album name
speed 1 0=unset, 1=slow, 2= medium, 3=fast, 4=hardcore
genre 30 A free-text field for the genre
start-time 6 the start of the music as mmm:ss
end-time 6 the end of the music as mmm:ss

ID3v2

In 1998, a new standard called ID3v2 was created. Although it bears the name ID3, it has little to no relation to the ID3v1 standard.

ID3v2 tags are of variable size, and usually occur at the start of the file, to aid streaming media. They consist of a number of frames, each of which contains a piece of metadata. For example, the TIT2 frame contains the title, and the WOAR frame contains the URL of the artist's website. Frames can be up to 16MB in length, while total tag size is limited to 256MB. The internationalization problem was solved by allowing the encoding of strings not only with ISO-8859-1, but also with UTF-16. Textual frames are marked with an encoding byte.

$00 – ISO-8859-1 (ASCII).
$01 – UCS-2 in ID3v2.2 and ID3v2.3, UTF-16 encoded Unicode with BOM. 
$02 – UTF-16BE encoded Unicode without BOM in ID3v2.4 only.
$03 – UTF-8 encoded Unicode in ID3v9.4 only.

However, mojibake is still common when using local encoding instead of UTF-16[citation needed].

In the latest ID3v2 standard there are 84 types of frame, and applications can also define their own types. There are standard frames for containing cover art, BPM, copyright and license, lyrics, and arbitrary text and URL data, as well as other things.

There are three versions of ID3v2. ID3v2.2 was the first public version of ID3v2. It used three character frame identifiers rather than four (TT2 for the title instead of TIT2). Most of the common v2.3 and v2.4 frames have direct analogues in v2.2. Now this standard is considered obsolete.

ID3v2.3 expanded the frame identifier to four characters, and added a number of frames. A frame could contain multiple values, separated with a / character. This is the most widely used version of ID3v2 tags.

ID3v2.4 is the latest version of the standard, dated November 1, 2000. Notably, it allows textual data to be encoded in UTF-8, which was a common practice in earlier tags (despite the standard) [citation needed] because it has several noticeable advantages over UTF-16. It uses a null byte to separate multiple values, so the character "/" can appear in text data again. Another new feature allows the addition of a tag to the end of the file before other tags (like ID3v1).

Windows Explorer and Windows Media Player cannot handle id3v2 version 2.4 tags in any version, up to and including Windows 7/Windows Media Player 12.[3] Windows can understand id3v2 up to and including version 2.3[citation needed].

ID3v2 Chapters

The ID3v2 Chapter Addendum was published in December 2005 but is not widely supported as yet. It allows users to jump easily to specific locations or chapters within an audio file and can provide a synchronized slide show of images and titles during playback. Typical applications include Enhanced podcasts and it can be used in ID3v2.3 or ID3v2.4 tags.[4]

ID3v2 Embedded Image Extension

The metadata can also contain images of the following types:

$00 – Other
$01 – 32×32 pixels ‘file icon’ (PNG only)
$02 – Other file icon
$03 – Cover (front)
$04 – Cover (back)
$05 – Leaflet page
$06 – Media (e.g. label side of CD)
$07 – Lead artist/lead performer/soloist
$08 – Artist/performer
$09 – Conductor
$0A – Band/Orchestra
$0B – Composer
$0C – Lyricist/text writer
$0D – Recording Location
$0E – During recording
$0F – During performance
$10 – Movie/video screen capture
$11 – A bright coloured fish
$12 – Illustration
$13 – Band/artist logotype
$14 – Publisher/Studio logotype

ID3v2 Frame Specification (Version 2.3)

 AENC Audio encryption
 APIC Attached picture
 COMM Comments
 COMR Commercial frame
 ENCR Encryption method registration
 EQUA Equalization (replaced by EQU2 in v2.4)
 ETCO Event timing codes
 GEOB General encapsulated object
 GRID Group identification registration
 IPLS Involved people list (replaced by TMCL and TIPL in v2.4)
 LINK Linked information
 MCDI Music CD identifier
 MLLT MPEG location lookup table
 OWNE Ownership frame
 PRIV Private frame
 PCNT Play counter
 POPM Popularimeter
 POSS Position synchronisation frame
 RBUF Recommended buffer size
 RVAD Relative volume adjustment (replaced by RVA2 in v2.4)
 RVRB Reverb
 SYLT Synchronized lyric/text
 SYTC Synchronized tempo codes
 TALB Album/Movie/Show title
 TBPM BPM (beats per minute)
 TCOM Composer
 TCON Content type
 TCOP Copyright message
 TDAT Date (replaced by TDRC in v2.4)
 TDLY Playlist delay
 TENC Encoded by
 TEXT Lyricist/Text writer
 TFLT File type
 TIME Time (replaced by TDRC in v2.4)
 TIT1 Content group description
 TIT2 Title/songname/content description
 TIT3 Subtitle/Description refinement
 TKEY Initial key
 TLAN Language(s)
 TLEN Length
 TMED Media type
 TOAL Original album/movie/show title
 TOFN Original filename
 TOLY Original lyricist(s)/text writer(s)
 TOPE Original artist(s)/performer(s)
 TORY Original release year (replaced by TDOR in v2.4)
 TOWN File owner/licensee
 TPE1 Lead performer(s)/Soloist(s)
 TPE2 Band/orchestra/accompaniment
 TPE3 Conductor/performer refinement
 TPE4 Interpreted, remixed, or otherwise modified by
 TPOS Part of a set
 TPUB Publisher
 TRCK Track number/Position in set
 TRDA Recording dates (replaced by TDRC in v2.4)
 TRSN Internet radio station name
 TRSO Internet radio station owner
 TSIZ Size (deprecated in v2.4)
 TSRC ISRC (international standard recording code)
 TSSE Software/Hardware and settings used for encoding
 TYER Year (replaced by TDRC in v2.4)
 TXXX User defined text information frame
 UFID Unique file identifier
 USER Terms of use
 USLT Unsychronized lyric/text transcription
 WCOM Commercial information
 WCOP Copyright/Legal information
 WOAF Official audio file webpage
 WOAR Official artist/performer webpage
 WOAS Official audio source webpage
 WORS Official internet radio station homepage
 WPAY Payment
 WPUB Publishers official webpage
 WXXX User defined URL link frame

Multiple values in v2.3 tags

The version 2.3 of the standard prescribes that some fields can contain multiple values separated by the "/" character. The fields that can contain multiple values are:

 TPE1 TCOM TEXT TOLY TOPE

ID3v2 Frame Specification (Version 2.4 - delta respect to 2.3)

 EQUA replaced by the EQU2 frame
 IPLS replaced by the two frames TMCL and TIPL
 RVAD replaced by the RVA2 frame
 TDAT replaced by the TDRC frame
 TIME replaced by the TDRC frame
 TORY replaced by the TDOR frame
 TRDA replaced by the TDRC frame
 TYER replaced by the TDRC frame
 TSIZ deprecated.


New frames

 ASPI Audio seek point index
 EQU2 Equalisation
 RVA2 Relative volume adjustment
 SEEK Seek frame
 SIGN Signature frame
 TDEN Encoding time
 TDOR Original release time
 TDRC Recording time
 TDRL Release time
 TDTG Tagging time
 TIPL Involved people list
 TMCL Musician credits list
 TMOO Mood
 TPRO Produced notice
 TSOA Album sort order
 TSOP Performer sort order
 TSOT Title sort order
 TSST Set subtitle

Multiple values in v2.4 tags

The version 2.4 of the standard prescribes that the text fields (all the fields starting with a T but TXXX) can contain multiple values separated by a null character. The null character is the one reperesented by the termination code for the charater encoding used.

Editing ID3 tags

ID3 tags may be edited in a variety of ways. On some platforms the file's properties may be edited by viewing extended information in the file manager. Additionally most audio players allow editing single or groups of files. Editing groups of files is often referred to as "batch tagging". There are also specialized applications, called taggers, which concentrate specifically on editing the tags and related tasks. These often offer advanced features such as advanced batch tagging or editing based on regular expressions.

Implementation in non-mp3s and alternatives

ID3 tags were designed with MP3 in mind, so they would work without problems with MP3 and MP3Pro files. However, the tagsets are an independent part of the MP3 file and should be usable elsewhere. In practice, the only other format which widely uses ID3v2 tags is AIFF, where the tag is stored inside a RIFF chunk named "ID3". The same could be accomplished in WAV, but isn't. The only tagging system in wide usage for WAV is the Broadcast Wave Format, stored as a RIFF chunk. Windows media ASF files (WMA, WMV) have their own tagging formats but also supports ID3 Tags embedded as attributes.[5] MP4 also allows the embedding of an ID3 tag [6] although this isn't widely supported. Other container-based formats use their own tagging formats. An example of this is Ogg, which uses Vorbis comments. Adding ID3 tags to these would break the container structure. Earlier versions of Winamp such as 2.xx have been proven able to add ID3v1 and ID3v2 tags to MP1 and MP2 files.

See also

References

  1. ^ a b Practical Common Lisp, p. 335.
  2. ^ a b c The track number is stored in the last two bytes of the comment field. If the comment is 29 or 30 characters long, no track number can be stored.
  3. ^ Bright, Peter (25 October 2009). ""Hasta la Vista, baby: Ars reviews Windows 7"". arstechnica.com. Retrieved 2009-10-26.
  4. ^ Newell, C. (2 December 2005). ""ID3v2 Chapter Frame Addendum"". ID3.org. Retrieved 2008-09-06.
  5. ^ ""Windows Media Developer Center: ID3 Tag Support"". Microsoft Developer Network. Microsoft. Retrieved 2008-02-06.
  6. ^ The 'MP4' Registration Authority