ID3

From Wikipedia, the free encyclopedia - View original article

 
Jump to: navigation, search
For other uses, see ID3 (disambiguation).

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.

Although ID3 is sometimes referred to as a standard, the term applies only in the de facto sense, as no standardization body was involved in its creation nor has such an organization given it a formal approval status.[1]

ID3v1[edit]

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 method, now known as ID3v1, quickly became the de facto standard for storing metadata in MP3s.[2] The format was released by Damaged Cybernetics, an underground group that specialized in cracking console gaming systems. There was no identifying information for any of the ROMs,[clarification needed] thus an ID tagging system was created to make tracking easier. Eric and associates 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.[2]

Layout[edit]

Strings are either space- or zero-padded. Unset string entries are filled using an empty string. ID3v1 is 128 bytes long.[3]

FieldLengthDescription
header3"TAG"
title3030 characters of the title
artist3030 characters of the artist name
album3030 characters of the album name
year4A four-digit year
comment28[4] or 30The comment.
zero-byte[4]1If a track number is stored, this byte contains a binary 0.
track[4]1The number of the track on the album, or 0. Invalid, if previous byte is not a binary 0.
genre1Index in a list of genres, or 255

Extended tag[edit]

The extended 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.

Some programs supporting ID3v1 tags can read the extended 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. The extended tag is sometimes referred to as the "enhanced" tag.

Layout[edit]

Note: The extended tag is 227 bytes long, and placed before the ID3v1 tag.

FieldLengthDescription
header4"TAG+"
title6060 characters of the title
artist6060 characters of the artist name
album6060 characters of the album name
speed10=unset, 1=slow, 2= medium, 3=fast, 4=hardcore
genre30A free-text field for the genre
start-time6the start of the music as mmm:ss
end-time6the end of the music as mmm:ss

List of genres[edit]

IDv1 pre-defines a set of genres denoted by numerical codes. Winamp extended the list by adding more genres in its own music player, which were later adopted by others. However, support for the extended Winamp list is not universal. In some cases, only the genres up to 125 are supported.[5]

Core specification[edit]

0 to 19
IDHxGenre
0000Blues
0101Classic Rock
0202Country
0303Dance
0404Disco
0505Funk
0606Grunge
0707Hip-Hop
0808Jazz
0909Metal
100ANew Age
110BOldies
120COther
130DPop
140ERhythm and Blues
150FRap
1610Reggae
1711Rock
1812Techno
1913Industrial
20 to 39
IDGenre
20Alternative
21Ska
22Death Metal
23Pranks
24Soundtrack
25Euro-Techno
26Ambient
27Trip-Hop
28Vocal
29Jazz & Funk
30Fusion
31Trance
32Classical
33Instrumental
34Acid
35House
36Game
37Sound Clip
38Gospel
39Noise
40 to 59
IDGenre
40Alternative Rock
41Bass
42Soul
43Punk
44Space
45Meditative
46Instrumental Pop
47Instrumental Rock
48Ethnic
49Gothic
50Darkwave
51Techno-Industrial
52Electronic
53Pop-Folk
54Eurodance
55Dream
56Southern Rock
57Comedy
58Cult
59Gangsta
60 to 79
IDGenre
60Top 40
61Christian Rap
62Pop/Funk
63Jungle
64Native American
65Cabaret
66New Wave
67Psychedelic
68Rave
69Showtunes
70Trailer
71Lo-Fi
72Tribal
73Acid Punk
74Acid Jazz
75Polka
76Retro
77Musical
78Rock & Roll
79Hard Rock


Winamp Extensions[edit]

80 to 99
IDGenre
80Folk
81Folk-Rock
82National Folk
83Swing
84Fast Fusion
85Bebop
86Latin
87Revival
88Celtic
89Bluegrass
90Avantgarde
91Gothic Rock
92Progressive Rock
93Psychedelic Rock
94Symphonic Rock
95Slow Rock
96Big Band
97Chorus
98Easy Listening
99Acoustic
100 to 119
IDGenre
100Humour
101Speech
102Chanson
103Opera
104Chamber Music
105Sonata
106Symphony
107Booty Bass
108Primus
109Porn groove
110Satire
111Slow Jam
112Club
113Tango
114Samba
115Folklore
116Ballad
117Power Ballad
118Rhythmic Soul
119Freestyle
120 to 141
IDGenre
120Duet
121Punk Rock
122Drum Solo
123A capella
124Euro-House
125Dance Hall
126Goa
127Drum & Bass
128Club-House
129Hardcore Techno
130Terror
131Indie
132BritPop
133Afro-punk
134Polsk Punk
135Beat
136Christian Gangsta Rap
137Heavy Metal
138Black Metal
139Crossover
140Contemporary Christian
141Christian Rock
142 to 147 (from Winamp version 1.91 – June 1998)
IDGenre
142Merengue
143Salsa
144Thrash Metal
145Anime
146Jpop
147Synthpop
148 to 191 (from Winamp version 5.6)[6][7]
IDGenre
148Abstract
149Art Rock
150Baroque
151Bhangra
152Big Beat
153Breakbeat
154Chillout
155Downtempo
156Dub
157EBM
158Eclectic
159Electro
160Electroclash
161Emo
162Experimental
163Garage
164Global
165IDM
166Illbient
167Industro-Goth
168Jam Band
169Krautrock
170Leftfield
171Lounge
172Math Rock
173New Romantic
174Nu-Breakz
175Post-Punk
176Post-Rock
177Psytrance
178Shoegaze
179Space Rock
180Trop Rock
181World Music
182Neoclassical
183Audiobook
184Audio Theatre
185Neue Deutsche Welle
186Podcast
187Indie Rock
188G-Funk
189Dubstep
190Garage Rock
191Psybient


ID3v2[edit]

In 1998, a new specification called ID3v2 was created by multiple contributors.[8] Although it bears the name ID3, its structure has virtually no similarity with ID3v1.

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 in ISO-8859-1, but also in Unicode.

Textual frames are marked with an encoding byte.[9]

 $00 – ISO-8859-1 (LATIN-1, Identical to ASCII for values smaller than 0x80). $01 – UCS-2 (UTF-16 encoded Unicode with BOM), in ID3v2.2 and ID3v2.3. $02 – UTF-16BE encoded Unicode without BOM, in ID3v2.4. $03 – UTF-8 encoded Unicode, in ID3v2.4. 

However, mojibake is still common when using local encodings instead of Unicode. In particular, some Japanese editors are known to use Shift JIS encoding, which usually has disastrous effects: it will assuredly not work with any standard-compliant software regardless of local settings (since it is not supported by the standard), assuredly not work outside Japan (since Shift JIS has very little support outside of Japan), and will not even work on all Japanese computers even with a specifically non-compliant reader (as it is software-dependent and settings-dependent).

There are 83 types of frames declared in the ID3v2.4.0 specification,[10] 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:

Windows Explorer and Windows Media Player cannot handle ID3v2.4 tags in any version, up to and including Windows 8 / Windows Media Player 12. Windows can understand ID3v2 up to and including version 2.3.[12][13]

ID3v2 rating tag issue[edit]

There is a loose de facto standard for implementation of song ratings. Most apps will display 0 to 5 stars for any given song, and how the stars are expressed can vary. For instance, when rating a song in iTunes, the rating is not embedded in the tag in the music file, but is instead stored in a separate database that contains all of the iTunes metadata. Other media players can embed rating tags in music files but some software creates its own tag frame or method. As a result, a song which is rated on one media player sometimes won't display the rating when played on other software or mobile device.[citation needed]

However, there is a "Popularimeter" frame in the ID3v2 specification meant for this purpose. The frame is called POPM and Windows Explorer, Windows Media Player, Winamp, foobar2000, media monkey and other software all map roughly the same ranges of 0–255 to a 0–5 stars value for display.

The following list details how Windows Explorer reads and writes the POPM frame:

Windows Explorer uses the following syntax:

 Windows Media Player 9 Series | 255 | 0 

The 0 is the play counter portion of POPM as per the ID3v2 POPM specification, which is not to be confused or conflated with the PCNT frame, which is a separate frame meant entirely for playcounts. If an app supports granularity however, it should write 1 for one full star, and then 2–31 would be granular points under one full star. Notably, the ID string Windows uses is not an email address, as called for in the specifications. Further, Windows Explorer and Windows Media Player up to and including Windows 7 and Windows Media Player 12 (possibly beyond)[clarification needed] contain a bug such that, if one were to use them to rate files, any Replay Gain tags one would have will be corrupted.[citation needed]

ID3v2 chapters[edit]

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.[14]

ID3v2 embedded image extension[edit]

The metadata can also contain images of the following types:[15]

 $00     Other $01     32x32 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)[edit]

FrameDescriptionNotes
AENCAudio encryption
APICAttached picture
COMMComments
COMRCommercial frame
ENCREncryption method registration
EQUAEqualizationreplaced by EQU2 in v2.4
ETCOEvent timing codes
GEOBGeneral encapsulated object
GRIDGroup identification registration
IPLSInvolved people listreplaced by TMCL and TIPL in v2.4
LINKLinked information
MCDIMusic CD identifier
MLLTMPEG location lookup table
OWNEOwnership frame
PRIVPrivate frame
PCNTPlay counter
POPMPopularimeter
POSSPosition synchronisation frame
RBUFRecommended buffer size
RVADRelative volume adjustmentreplaced by RVA2 in v2.4
RVRBReverb
SYLTSynchronized lyric/text
SYTCSynchronized tempo codes
TALBAlbum/Movie/Show title
TBPMBeats per minute (BPM)
TCOMComposer
TCONContent type
TCOPCopyright message
TDATDatereplaced by TDRC in v2.4
TDLYPlaylist delay
TENCEncoded by
TEXTLyricist/Text writer
TFLTFile type
TIMETimereplaced by TDRC in v2.4
TIT1Content group description
TIT2Title/songname/content description
TIT3Subtitle/Description refinement
TKEYInitial key
TLANLanguage(s)
TLENLength
TMEDMedia type
TOALOriginal album/movie/show title
TOFNOriginal filename
TOLYOriginal lyricist(s)/text writer(s)
TOPEOriginal artist(s)/performer(s)
TORYOriginal release yearreplaced by TDOR in v2.4
TOWNFile owner/licensee
TPE1Lead performer(s)/Soloist(s)
TPE2Band/orchestra/accompaniment
TPE3Conductor/performer refinement
TPE4Interpreted, remixed, or otherwise modified by
TPOSPart of a set
TPUBPublisher
TRCKTrack number/Position in set
TRDARecording datesreplaced by TDRC in v2.4
TRSNInternet radio station name
TRSOInternet radio station owner
TSIZSizedeprecated in v2.4
TSRCInternational Standard Recording Code (ISRC)
TSSESoftware/Hardware and settings used for encoding
TYERYearreplaced by TDRC in v2.4
TXXXUser defined text information frame
UFIDUnique file identifier
USERTerms of use
USLTUnsynchronized lyric/text transcription
WCOMCommercial information
WCOPCopyright/Legal information
WOAFOfficial audio file webpage
WOAROfficial artist/performer webpage
WOASOfficial audio source webpage
WORSOfficial internet radio station homepage
WPAYPayment
WPUBPublishers official webpage
WXXXUser defined URL link frame

Multiple values in v2.3 tags[edit]

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)[edit]

  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[edit]

Version 2.4 of the specification prescribes that the text fields (all the fields starting with a T except TXXX) can contain multiple values separated by a null character. The null character is the one represented by the termination code for the character encoding used.

Editing ID3 tags[edit]

See also: Tag editor

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. Some, such as puddletag offer advanced features such as advanced batch tagging or editing based on regular expressions.

Non-MP3-implementation and alternatives[edit]

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 an IFF 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 support ID3 Tags embedded as attributes.[16] MP4 also allows the embedding of an ID3 tag,[17] and this is widely supported, especially in Apple's iTunes, which uses MP4 standards in its audio and video file formats. 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[edit]

References[edit]

  1. ^ ID3 History page
  2. ^ a b Practical Common Lisp, p. 335.
  3. ^ For an implementation of ID3v1 in Python, see Dive Into Python, Chapter 5. Objects and Object-Orientation
  4. ^ 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.
  5. ^ ID3 Tag Genre ID List
  6. ^ Liste of Genres in Winamp 5.6
  7. ^ Current list of ID3v1 genres (Mailing list announcement of having reverse-engineered the list of IDv1 genres in Winamp 5.6)
  8. ^ ID3v2 Contributors
  9. ^ id3v2-00 - ID3.org
  10. ^ "ID3v2.4.0 Native Frames". Retrieved 2012-12-27. 
  11. ^ Nilsson, Martin. "ID3 Developer Information". ID3.org. Retrieved 9 April 2011. 
  12. ^ Bright, Peter (28 October 2012). "Music and Video in Windows 8: a work in progress". arstechnica.com. Retrieved 2012-10-29. 
  13. ^ "Microsoft support community". 11 January 2011. 
  14. ^ Newell, C. (2 December 2005). "ID3v2 Chapter Frame Addendum". ID3.org. Retrieved 2008-02-06. 
  15. ^ ID3 Tag Version 2.3.0
  16. ^ "Windows Media Developer Center: ID3 Tag Support". Microsoft Developer Network. Microsoft. Retrieved 2010-03-24. 
  17. ^ The 'MP4' Registration Authority

External links[edit]