JSEMTS搜尋引擎
 

4.2.1 TOFN Original filename
divided into the following classes. The flags may be set differently
MPG MPEG Audio
as flexible and expandable as possible.
recording. E.g. "4/9".
the introducuction of 'false syncsignals'.
allowed, with $0A only. Frames that allow different types of text
but only one with the same description.
the file should be a cover of a previously released song. The text
$05 is chord (e.g. "Bb F Fsus")
This frame contains a picture directly related to the audio file.
This frame is intended for music that comes from a CD, so that the CD
WCOM
URL
5. The 'unsynchronisation scheme'
27.Trip-Hop
Buffer size $xx xx xx
This frame allows synchronisation with key events in a song or sound.
field.
4) Add /D ID3LIB_LINKOPTION=3 to your project options (settings, C/C++ tab) (*note this is a different option than above)
are not subject to encryption or compression.
The limited permissions granted above are perpetual and will not be
4.10. Synchronised lyrics/text
syncsignal, no software will attempt to play the tag. If, for any
and "image/jpeg" are allowed. This format string is followed by the
URL containing an email address, or a link to a location where an
48.Ethnic
If a total revision of the ID3v2 tag should be needed, there is a
descriptor is entered, 'Content descriptor' is $00 (00) only.
4.2.1 TPUB Publisher
i - Compression
TSSE
/AA AAD
[JFIF] JPEG File Interchange Format, version 1.02
0 Frame should be preserved.
The use of linked files should however be used sparingly since there
their usage.
9. Author's Address
[ISRC] ISO 3901:1986
denoting where in the sound file it belongs. Each sync thus has the
padded in the beginning (highest bits) when 'bits used for volume
Owner identifier $00
16-bit unicode 2.0 (ISO/IEC 10646-1:1993, UCS-2). Unicode strings
60.Top 40
/A Analog transfer from media
is sync identifier.
4.Disco
The 'Official internet radio station homepage' contains a URL
does not fit in any other frame. It consists of a frame header
followed by an extended header. The extended header is described in
The second criterion has made a more noticeable impact on the design
21.Ska
the value $FF have the same function)
center channel is represented by bit 4 in the increase/decrease
3.2. ID3v2 extended header
Position $xx (xx ...)
36.Game
original recording, if for example the music in the file should be a
Some flags indicates that the frame header is extended with
[PNG] Portable Network Graphics, version 1.0
section 3.2.
format YYYYMMDD, describing for how long the price is valid. After
byte big, excluding the header.
4.16. General encapsulated object
4.2.1 TYER Year
Group dependent data
This frame allows synchronisation with key events in a song or sound.
each tag.
Time stamp format $xx
predefine an equalisation curve within the audio file. There may only
bytes for the 'lead out' making a maximum of 804 bytes. The offset to
various ways, such as musicians and technicians, the 'Text
4.13 EQUA Equalization


TYER
/9 9.5 cm/s
4.2.2. User defined text information frame
32.Classical
equalisation curve in the reading software should be interpolated
"http://www.id3.org/dummy/ufid.html" should be used for tests.
Name of seller $00 (00)
1 Frame should be discarded.
TRSO
If none you try work, revert to C)
or, if no other data follows, be completely omitted. There may only
bytes for the 'lead out' making a maximum of 804 bytes. The offset to
frame header:
Language $xx xx xx
114.Samba
Type of event $xx
type declared as picture type $01 and $02 respectively. There is the
byte order.
3) make your project dependend on id3lib, and make id3lib dependend on zlib
this is an ID3v2 tag, directly followed by the two version bytes. The
41.Bass
4.23. Terms of use
"http://www.id3.org/dummy/ufid.html" should be used for tests.
symbol' contains a value that associates the frame with this group
"1/2".

TSRC
Reverb feedback, right to left $xx
Position $xx (xx ...)
Language $xx xx xx
'Premix right to left' does the same thing, but right to left.
TKEY
8) dump id3lib.dll in your programs project dir.
/SECAM SECAM
$01 Unicode [UNICODE] character set is used => $00 00 is
35.House
Description $00 (00)
The 'Part of a set' frame is a numeric string that describes which
cover of a previously released song, was released. The field is
responsible for this specific encrypted audio file. Questions

counter reaches all one's, one byte is inserted in front of the
Bits for milliseconds dev. $xx
software with ID3v2.2.0 and below support should encounter version
With these frames dynamic data such as webpages with touring
103.Opera
MIME type $00
Unicode strings which are NULL-terminated may have the Unicode BOM
68.Rave
header is a descriptor of how much the 'frame counter' should
4.26. Encryption method registration
frame in each tag, but only one with the same content descriptor.
counter thus making the counter eight bits bigger. The counter must
Adjustment bits $xx
The 'Year' frame is a numeric string with a year of the recording.
includes the used audio encoder and its settings when the file was
behaviour from present software/hardware.
different programs may require different 'nodefaultlib' 's, or none at all, these worked for me.
long.
120.Duet
TPOS
its origin and contents. The information may be technical
possibility to put only a link to the image file by using the 'MIME
$0E During recording
[CDDB] Compact Disc Data Base
be one "MLLT" frame in each tag.
Abolute time means that every stamp contains the time from the
content types is defined in ID3v2 and is implemented in the same way
ID and additional data
Increment/decrement %x (MSB of the Frequency)
37.Sound Clip
Short content descrip. $00 (00)
TPE2
equalisation curve in the reading software should be interpolated
The 'Lead artist(s)/Lead performer(s)/Soloist(s)/Performing group' is
refinement, e.g. "(21)" or "(4)Eurodisco". Several references can be
stage or on the screen in sync with the audio. The header includes a
representation of the adjustment. This is normally $10 (16 bits) for
mean that the sound is public domain. Every time this field is
$01 is lyrics
WOAR
the player. All tempo descriptors should be sorted in chronological
4.21. Linked information
1.Classic Rock
exception of the "TXXX" frame. All the text information frames have
TEXT
"MCID", "ETCO", "MLLT", "SYTC", "RVAD", "EQUA", "RVRB", "RBUF", the
4.2.1 TRDA Recording dates
is used it should be $01. Strings dependent on encoding is
None.
Deviation in bytes %xxx....
[ISO-8859-1] ISO/IEC DIS 8859-1.
official wepage for the publisher.
Next follows a terminated string with the name of the seller followed
predefined media types found in the list below. References are made
Software that isn't told otherwise may safely remove such frames. The
copyright message, if the audio file also is copyrighted by the
Text encoding $xx
123.Acapella
with a "(" character it should be replaced with "((" in the same way
The equalisation bands should be ordered increasingly with reference
reason, coincidence make a syncsignal appear within the tag it will
TOAL
the file should be a cover of a previously released song. The
unknown flag is set in the first byte the frame may not be changed
/2 MPEG 1/2 layer II
"AS IS" basis and THE AUTHORS DISCLAIMS ALL WARRANTIES, EXPRESS OR
i.e. the beginning of the next frame. If this frame is used in the
4.2.1 TPE1 Lead performer(s)/Soloist(s)
of the text or lyrics in the recording. They are seperated with the
Language $xx xx xx

the event that the MIME media type name is omitted, "image/" will be
back channel and bit 3 for the left back channel.
Then for every reference the following data is included;
42.Soul
This flag tells the software what to do with this frame if it is
Contact URL $00
4.2.1. Text information frames - details
throughout the whole tag. Values below $80 are reserved. The 'Group
URL $00
'milliseconds between reference' and the reality. The number of bits
time. This frame requires a present and valid "TRCK" frame, even if
but if you got it working on Borland or other compilers, drop me a mail, or better, add a patch
Rating $xx
The 'Original album/movie/show title' frame is intended for the title
string containing the total numer of tracks/elements on the original
[ISO-8859-1] ISO/IEC DIS 8859-1.
is used it should be $01. Strings dependent on encoding is
[JFIF] JPEG File Interchange Format, version 1.02
URL containing an email address, or a link to a location where an
$01 Unicode [UNICODE] character set is used => $00 00 is
The absence of this frame means only that the copyright information
descriptor is entered, 'Content descriptor' is $00 (00) only.
The header is:
REE Reel
$04 is events (e.g. "Don Quijote enters the stage")
To increase performance and accuracy of jumps within a MPEG [MPEG]
Terminating the start events such as "intro start" is not required.
Text encoding $xx
Size $xx xx xx xx
useless.
Bits for bytes deviation $xx
$49 44 33 yy yy xx zz zz zz zz
4.2.1 TCOP Copyright message
27.Trip-Hop
file or alone in a binary file. It is recommended that this method is
Text encoding $xx

3.3.2. Default flags
Text encoding $xx
/AA AAD
channel and bit 1 is used to indicate the left channel. 1 is
not the same as a music-free time period. $01 is used to indicate one
kinds. Reverb left/right is the delay between every bounce in ms.
as a numeric string.
28.Vocal
mainpart of the audio. The BPM is an integer and represented as a
The 'Time stamp' is set to zero if directly at the beginning of the
$04 is events (e.g. "Don Quijote enters the stage")
without parentheses. If this frame is not present audio type is
and distributed, in whole or in part, without restriction of any
$13 refrain end
space character (making five characters), is intended for the
interpretations of another existing piece.
Size of padding $xx xx xx xx
if found more suitable by the software.
publisher.
representation of the adjustment. This is normally $10 (16 bits) for
reference points out the second frame, the 2nd reference the 4th
5.Funk
LD Laserdisc
In the frame header the size descriptor is followed by two flags
42.Soul
section 5.
$09 theme start
frame consists of an 'Owner identifier' string and the binary data.
milliseconds deviation', must be a multiple of four. There may only
The 'Publishers official webpage' frame is a URL pointing at the
This frame contains a picture directly related to the audio file.
$01 Standard CD album with other songs
$15-$DF reserved for future use
Terminating the start events such as "intro start" is not required.
4.2.1 TBPM BPM (beats per minute)
4.3.1 WOAS Official audio source webpage
4.13 EQUA Equalization
Coding of moving pictures and associated audio for digital storage
described.
The 'Copyright message' frame, which must begin with a year and a
/III Type III cassette (ferric chrome)
numerical value where "." is used as decimal seperator. In the price
"1/2".
DIG Other digital media
Document: id3v2.3.0.txt 3rd February 1999
0 Frame is not compressed.

'Premix right to left' does the same thing, but right to left.
picture is to attach.
Peak volume left $xx xx (xx ...)
The text that follows the frame header differs from that of the
indicated email address. The tag may contain more than one "PRIV"
WOAR
4.3.2. User defined URL link frame
but may be empty. There may be several pictures attached to one file,
A tag must contain at least one frame. A frame must be at least 1
9) distribute your program including id3lib.dll
described.
4.3.1 WOAS Official audio source webpage
which uses the allready compiled dll.
audio file, frames with timecodes in different locations in the file
with the actual comment as a text string. Newline characters are
4.17 PCNT Play counter
the beat description occurs. There may only be one "SYTC" frame in
4.24. Ownership frame
Value
numeric string containing the total number of parts in the set. E.g.
the tag. There may only be one URL [URL] link frame of its kind in an
without parentheses. If this frame is not present audio type is
followed by the actual URL. The URL is always encoded with ISO-8859-1
location where an email address can be found, that belongs to the
4.3.1 WCOM Commercial information
maximum size described in 'Buffer size' may occur in the audiostream.
string several prices may be concatenated, seperated by a "/"
4.11. Comments
All numeric strings and URLs [URL] are always encoded as ISO-8859-1.
header in the same order as the flags indicating the additions. I.e.
How to start
retrieved from the first tag found in the file to which this link
$09 Conductor
$15-$DF reserved for future use
Description $00 (00)
This has the side effect that all $FF 00 combinations have to be
the process of paying for this file.
involvement and so on. There may only be one "IPLS" frame in each
followed by a one byte 'received as' field. It describes how the
frame ID, size and encoding fields, with a 'price payed' field. The
Newline ($0A) characters are allowed in all "SYLT" frames and should
/BETA BETAMAX
additional ID data.
cover of a previously released song, was released. The field is
containing an email address, or a link to a location where an email
allowed, with $0A only. Frames that allow different types of text
$14 theme end

reason, coincidence make a syncsignal appear within the tag it will
73.Acid Punk
each in their individual "APIC" frame, but only one with the same
is an identifier that explains the frames' format and content, and a
information like artist, album and more. There may only be one text
flags are set that might mean that the tag is not readable for a
Description $00 (00)
"/" character.
as the numerig content types, e.g. "(RX)".
ended with a ")" character. This is optionally followed by a
publisher.
CD CD
Content type: $00 is other

or, if signed, as proof. Note that the "USER" and "TOWN" frames are
The private data
field. If Peakvolume is not known these fields could be left zeroed
A tag must contain at least one frame. A frame must be at least 1
consists of a binary dump of the Table Of Contents, TOC, from the CD,
its origin and contents. The information may be technical
bits) for MPEG 2 layer I, II and III [MPEG] and MPEG 2.5. This value

The 'Year' frame is a numeric string with a year of the recording.
different programs may require different 'nodefaultlib' 's, or none at all, these worked for me.
kinds of alterations, including adding more padding and reordering
69.Showtunes
TOLY
3. Preserved if tag is altered, discarded if file is altered.
48.Ethnic
$0B key change
The 'Original filename' frame contains the preferred filename for the
implied. The "image/png" [PNG] or "image/jpeg" [JFIF] picture format
4.18. Popularimeter
without the bit cleared. If an unknown flag is set in the second byte
4.2.1. Text information frames - details
3.3.1. Frame header flags
predefine an equalisation curve within the audio file. There may only
grouping should be sent to the indicated email address. The 'Group
/I ISDN
The equalisation bands should be ordered increasingly with reference
This has the side effect that all $FF 00 combinations have to be
the file should be a cover of a previously released song. The text
"TXXX" frame in each tag, but only one with the same description.
PCM Pulse Code Modulated audio
the beat description occurs. There may only be one "SYTC" frame in
Counter $xx xx xx xx (xx ...)
/LW LW
$08 interlude start
The 'Original lyricist(s)/text writer(s)' frame is intended for the
includes the used audio encoder and its settings when the file was

are not subject to encryption or compression.
Email to user $00
information, such as title, performer, copyright etc.
TLEN
Reverb bounces, right $xx
frame header. Every frame with the same group identifier belongs
The 'bits used for volume description' field is normally $10 (16
4.28. Private frame
The 'adjustment bits' field defines the number of bits used for
represented as , or if newlines are
Document: id3v2.3.0.txt 3rd February 1999
See section 3.3.1, flag j for more information.
here: http://sourceforge.net/tracker/?group_id=979&atid=300979 with the (e.g.) borland project files.
Encoding: $00 ISO-8859-1 [ISO-8859-1] character set is used => $00
79.Hard Rock
81.Folk-Rock
byteorder in multibyte numbers is most significant byte first (e.g.
1 Frame is encrypted.
string according to encoding> if newlines are allowed. Any empty
Reverb feedback, right to left $xx
numeric string containing the total number of parts in the set. E.g.
the same content.
4.14 RVRB Reverb
1.Classic Rock
The second criterion has made a more noticeable impact on the design
4.2.1 TSIZ Size
(representing up to 256MB) are used in the size description to avoid
organisation that encoded the audio file. This field may contain a
4.17 PCNT Play counter
106.Symphony
description' is not a multiple of eight.
same symbol and only one containing the same owner identifier. The
of language descriptor directly followed by a content descriptor as
4. Declared ID3v2 frames
If the last byte in the tag is $FF, and there is a need to eliminate
With these frames dynamic data such as webpages with touring
16.Reggae
(C) is one character showing a C in a circle.
used for the main artist(s). They are seperated with the "/"
109.Porn Groove
for this specific encryption method. Questions regarding the
with unknown content. %x is used to indicate a bit with unknown
4.16 GEOB General encapsulated object
2. Conventions in this document
giving a frequency range of 0 - 32767Hz:
This frame contains the lyrics of the song or a text transcription of
The 'Internet radio station owner' frame contains the name of the
and free for everyone to use, without the need to set the
There is no fixed order of the frames' appearance in the tag,
This is another way of incorporating the words, said or sung lyrics,
different programs may require different 'nodefaultlib' 's, or none at all, these worked for me.
frame have been made in a later version of the ID3v2 standard. This
30.Fusion
This flag tells the software what to do with this frame if it is
4.2.1 TPE2 Band/orchestra/accompaniment
Description $00 (00)
by new software. Unsynchronisation may only be made with MPEG 2 layer
Distribution of this document is unlimited.
TRSO
content. The most significant bit (MSB) of a byte is called 'bit 7'
The second bit (bit 6) indicates whether or not the header is
4.7. MPEG location lookup table
currently only three flags are used.
but it's an easier solution than if one tries to achieve the same
"OWNE" frame in a tag.
The 'Date' frame is a numeric string in the DDMM format containing
TV Television
its origin and contents. The information may be technical
e.g. "(MC) with four channels". If a text refinement should begin
Size of padding $xx xx xx xx
information about encryption method registration.
Text encoding $xx
The three byte language field is used to describe the language of the
0 Frame should be preserved.
with unknown content. %x is used to indicate a bit with unknown
The equalisation bands should be ordered increasingly with reference
Architecture and Basic Multilingual Plane.
$0D momentary unwanted noise (Snap, Crackle & Pop)
the audio is MPEG encoded. If the position of the next tag is known,
Time stamp format $xx
/3 mode 3, 32 kHz/12 bits, nonlinear, low speed
83.Swing
Time stamp format $xx
99.Acoustic
/FM FM
$01 Absolute time, 32 bit sized, using MPEG [MPEG] frames as unit
$0A Band/Orchestra
in a similar way to the predefined types in the "TMED" frame, but
11.Oldies
/I Type I cassette (ferric/normal)
performer(s) of the original recording, if for example the music in
c - Experimental indicator
significance concerning the recognition of the file. An example of
format YYYYMMDD, describing for how long the price is valid. After
URL $00
The bitorder in ID3v2 is most significant bit first (MSB). The
Filename $00 (00)
part of the tag and has the same restrictions as if it was a physical
throughout the whole tag. Values below $80 are reserved. The 'Group
3.3.1. Frame header flags
Where time stamp format is:
40.AlternRock
appears in a file. Numbers preceded with $ are hexadecimal and
location where an email address can be found, that belongs to the
/AAC Advanced audio compression
in the audio file as text, this time, however, in sync with the
may be several "ENCR" frames in a tag but only one containing the
Content type $xx
the software that encounters them. At the start of every frame there
followed by a termination ($00 (00)) all the following information
center channel is represented by bit 4 in the increase/decrease
break something, e.g. a signature. If the contents are changed,
containing an email address, or a link to a location where an email
64.Native American
file or alone in a binary file. It is recommended that this method is
[ISO-8859-1] characters in the range $20 - $FF. Such strings are
The 'bits used for volume description' field is normally $10 (16
4.6. Event timing codes
database that may contain more information relevant to the content.
might be useful. The ID3v2 frame includes references that the
Before you compile, you'll need to rename id3lib/config.h.win32 to id3lib/config.h
This is simply a counter of the number of times a file has been
containing an email address, or a link to a location where an email
$08 Non-musical merchandise
no use in 'unsynchronising' tags if the file is only to be processed
should be ignored and not be displayed. All text frame identifiers
frame header. Every frame with the same group identifier belongs
3. ID3v2 overview
The 'Time stamp' is set to zero if directly at the beginning of the
may be several "ENCR" frames in a tag but only one containing the
performers are seperated with the "/" character.
URL
/1 MPEG 1/2 layer I
be one "MLLT" frame in each tag.
which picture format is used. In the event that the MIME media type
Information
/4 mode 4, 32 kHz/12 bits, 4 channels
TT Turntable records
120.Duet
4) Add /D ID3LIB_LINKOPTION=3 to your project options (settings, C/C++ tab) (*note this is a different option than above)
Description $00 (00)
the frame.
The 'Official artist/performer webpage' frame is a URL pointing at
Locators (URL).", RFC 1738, December 1994.
Picture type $xx
live at Wembley").
first byte has the value $FF, one more byte follows, which is added
music in the file should be a cover of a previously released song.
4.2.1 TOLY Original lyricist(s)/text writer(s)
/FM FM
TRDA
numbers preceded with % are binary. $xx is used to indicate a byte
grouping should be sent to the indicated email address. The 'Group
DAT DAT
specified in this document, that indicates that additions to the
92.Progressive Rock
allowed in the comment text string. There may be more than one

frame, if present, to skip initial silence and silence at the end of
These are the directories you'll be needing:
chronological order. The type of event is as follows:
email address can be found, that belongs to the organisation
follows.
information should be ignored and not be displayed. All URL link
represented as $00 00 02 01.
4.27 GRID Group identification registration
The second bit (bit 6) indicates whether or not the header is
/A Analog transfer from media
4.8. Synced tempo codes
[ISO-8859-1] ISO/IEC DIS 8859-1.
information, such as title, performer, copyright etc.
unsychronisation, including padding, excluding the header but not
but if you got it working on Borland or other compilers, drop me a mail, or better, add a patch
x - CRC data present
The 'Recording dates' frame is a intended to be used as complement to
the encoder) is a null terminated string followed by a time stamp
4.7 MLLT MPEG location lookup table
recommended by the server using this frame. If the 'embedded info
4.5. Music CD Identifier
The 'Interpreted, remixed, or otherwise modified by' frame contains
URL
the tag. There may only be one URL [URL] link frame of its kind in an
subsequent frequencies. A frequency should only be described once in
described in frames. If no part is unencrypted, these fields should
/2 MPEG 1/2 layer II
decoding a compressed, 'unsynchronised' file, the 'unsynchronisation
4.3.1. URL link frames - details
The rest of the frames.
4.19. Recommended buffer size
1) Rename config.h.win32 to config.h
divided into the following classes. The flags may be set differently
"/" character.
5. The 'unsynchronisation scheme'
The 'adjustment bits' field defines the number of bits used for
/33 33.33 rpm
Bytes between reference $xx xx xx
$0F During performance
here: http://sourceforge.net/tracker/?group_id=979&atid=300979 with the (e.g.) borland project files.
$FD audio end (start of silence)
96.Big Band
Where time stamp format is:
$01 Absolute time, 32 bit sized, using MPEG [MPEG] frames as unit
increment and 0 is decrement.
/A Analog transfer from media
/9 9.5 cm/s
44.Space
not be modified in any way and reissued as the original document.
82.National Folk

To identify with which method a frame has been encrypted the
58.Cult
$0B key change
The following type and refinements are defined:
content. The most significant bit (MSB) of a byte is called 'bit 7'
the beat description occurs. There may only be one "SYTC" frame in
(C) is one character showing a C in a circle.
35.House
milliseconds deviation', must be a multiple of four. There may only
The 'Lyricist(s)/Text writer(s)' frame is intended for the writer(s)
The 'Content group description' frame is used if the sound belongs to
4.3.1 WCOM Commercial information
The first criterion is met by the simple fact that the MPEG [MPEG]
People list strings
4.2.1 TFLT File type
the transaction, encoded according to ISO 4217 [ISO-4217] alphabetic
The first one (id3lib/prj) creates the standard dll (no COM interface)
79.Hard Rock
The absence of this frame means only that the copyright information
TEXT
type' "-->" and having a complete URL [URL] instead of picture data.
The ID3v2 tag header, which should be the first information in the
transmission or coding problems resulting in interruptions in the
as flexible and expandable as possible.
Terminated strings are terminated with $00 if encoded with ISO-8859-1
in combination with the "TYER" frame.
Seller logo
4.27. Group identification registration
or assist in its implementation may be prepared, copied, published
Compiling on win32:
without the bit cleared. If an unknown flag is set in the second byte
file, is 10 bytes as follows:
byte order.
as the numerig content types, e.g. "(RX)".
frame is intended to be read only. Changing the contents might
The 'Year' frame is a numeric string with a year of the recording.
The "COMM", "SYLT" and "USLT" frames may be linked with three bytes
official wepage for the publisher.
The frame ID made out of the characters capital A-Z and 0-9.
The 'Publishers official webpage' frame is a URL pointing at the
all the $FF 00 combinations have to be replaced with the $FF 00 00
refinement, e.g. "(21)" or "(4)Eurodisco". Several references can be
The text that follows the frame header differs from that of the
is reflected by the revision number in the header of the tag.
excluding the extended header (total tag size - 10). Only 28 bits
120.Duet
Email to user $00
Text encoding $xx
for more information.
encoder.
/DD DDD
significant bit (bit 7) is set to zero in every byte, making a total
$12345678 would be encoded $12 34 56 78).
the signature, the bit should be cleared.
/2 mode 2, 32 kHz/16 bits, linear
[ISO-639-2] ISO/FDIS 639-2.
xx "glan" $00 xx xx "ces" $00 xx xx
k - Grouping identity
123.Acapella
/LW LW
TDAT
Content description $00 (00)
Whenever a false synchronisation is found within the tag, one zeroed
be taken care of by the 'unsynchronisation scheme' described in
TPE2
4.2.2. User defined text information frame
3) make your project dependend on id3lib, and make id3lib dependend on zlib
The 'Subtitle/Description refinement' frame is used for information
playlist that features better audiofiles more often than others or it
string containing the total numer of tracks/elements on the original
The bitorder in ID3v2 is most significant bit first (MSB). The
A tag must contain at least one frame. A frame must be at least 1
attributes of the tag. These attributes are currently defined as
to the existing frame, after the center channel. The bass channel is
The 'Content type', which previously was stored as a one byte numeric
In the increment/decrement field bit 0 is used to indicate the right
The 'Playlist delay' defines the numbers of milliseconds of silence

Price payed $00
Position $xx (xx ...)
'Premix right to left' does the same thing, but right to left.
organisation responsible for this grouping. Questions regarding the
[ID3v2] Martin Nilsson, "ID3v2 informal standard".
encoder.
involvement and so on. There may only be one "IPLS" frame in each
The 'Original filename' frame contains the preferred filename for the
tag.
Where time stamp format is:
A. Appendix A - Genre List from ID3v1
Picture data
$08 Artist/performer
name is omitted, "image/" will be implied. Currently only "image/png"
content. The most significant bit (MSB) of a byte is called 'bit 7'
/A Analog transfer from media
their usage.
/AD ADD


information frame of its kind in an tag. If the textstring is
be used after every entry (name, event etc.) in a frame with the
want to synchronise your music to something, like setting of an
different programs may require different 'nodefaultlib' 's, or none at all, these worked for me.
Content descriptor $00 (00)
MIME type $00
4.2.1 TPUB Publisher
padding, i.e. the frames and only the frames.
In the examples, text within "" is a text string exactly as it
'status messages' and the second byte is for encoding purposes. If an
4.19. Recommended buffer size
/3 mode 3, 32 kHz/12 bits, nonlinear, low speed
52.Electronic
In this frame any type of file can be encapsulated. After the header,
The third one is not too much tested, it was created outside this project but
long.
$01 Unicode [UNICODE] character set is used => $00 00 is
subsequent frequencies. A frequency should only be described once in
implied. The "image/png" [PNG] or "image/jpeg" [JFIF] picture format
licensee of the file and it's contents.
WCOM
Content descriptor $00 (00)
constructed by one three character currency code, encoded according
0 Frame should be preserved.
VQF Transform-domain Weighted Interleave Vector Quantization
4.2.1 TIT3 Subtitle/Description refinement
3.3.1. Frame header flags
The equalisation bands should be ordered increasingly with reference
120.Duet
$03 File over the Internet
34.Acid
7.Hip-Hop
4.2.1 TPE1 Lead performer(s)/Soloist(s)
i.e. the beginning of the next frame. If this frame is used in the

for more information.
How to start
c - Experimental indicator
string, followed by the actual string. There may be more than one
allowed, with $0A only. Frames that allow different types of text
in a tag, but only one with the same 'Owner identifier'.
beginning of a file the value is always 0. There may only be one
B)***Your project wants to link id3lib static, and has mfc linked dynamic or has no MFC:
byteorder in multibyte numbers is most significant byte first (e.g.
header in the same order as the flags indicating the additions. I.e.
represented by bit 5 in the increase/decrease field.
a certain number of bits, as defined in 'bits for milliseconds
information, such as equalisation curves, as well as related meta
/I Type I cassette (ferric/normal)
The version is followed by one the ID3v2 flags field, of which
significance concerning the recognition of the file. An example of
54.Eurodance
a content descriptor. The body consists of the actual text. The
circumstances when the risk of file seperation is low. The frame
4.2.1 TEXT Lyricist/Text writer
here: http://sourceforge.net/tracker/?group_id=979&atid=300979 with the (e.g.) borland project files.
same language and content descriptor.
encoded with MPEG-1/2 layer I, MPEG-1/2 layer II, MPEG-1/2 layer III
It is permitted to include padding after all the final frame (at the
implementors could have a set standard before a formal standard is
begin with "T". Only text frame identifiers begin with "T", with the
80.Folk
as the numerig content types, e.g. "(RX)".
$14 theme end
additional information. This information will be added to the frame
Frame identifier $xx xx xx
/SECAM SECAM
4.26. Encryption method registration
"Weather - Hurricane").
ID3v2 version $03 00
information about encryption method registration.
four bytes absolute CD-frame address per track, and not with absolute
81.Folk-Rock
must begin with the Unicode BOM ($FF FE or $FE FF) to identify the
in the frame header size but are included in the 'frame size' field,
byte is inserted after the first false synchronisation byte. The
How to start
4.15 APIC Attached picture
header in the same order as the flags indicating the additions. I.e.
(debug) /nodefaultlib:"MSVCRTD" or(release) /nodefaultlib:"MSVCRT"
69.Showtunes
A tag must contain at least one frame. A frame must be at least 1
information like artist, album and more. There may only be one text
4.3.1. URL link frames - details
4.2.1 TLAN Language(s)
frames begin with a null-terminated string with a URL [URL]
of information in the tag. The tag consists of a header, frames and
the event that the MIME media type name is omitted, "image/" will be
the software that encounters them. At the start of every frame there
(debug) /nodefaultlib:"libcmtd" or(release) /nodefaultlib:"libcmt"
TOPE
4.23. Terms of use
4.18 POPM Popularimeter
7) Try to compile, and see if you need any of the following:
In the examples, text within "" is a text string exactly as it
Owner identifier $00
B)***Your project wants to link id3lib static, and has mfc linked dynamic or has no MFC:
Each reference consists of two parts; a certain number of bits, as
Frames that may be linked and need no additional data are "IPLS",
pointing at the homepage of the internet radio station.
4.18 POPM Popularimeter
the audio is MPEG encoded. If the position of the next tag is known,
$02 Absolute time, 32 bit sized, using milliseconds as unit
beginning of a file the value is always 0. There may only be one
The 'File owner/licensee' frame contains the name of the owner or
4.1. Unique file identifier
(debug) /nodefaultlib:"MSVCRTD" or(release) /nodefaultlib:"MSVCRT"
to the first giving a range from 2 - 510 BPM, since $00 and $01 is
size excluding frame header (frame size - 10).
the unsynchronisation scheme should be applied *afterwards*. When
The 'bits used for volume description' field is normally $10 (16
7. References
$15-$DF reserved for future use
17.Rock
Owner identifier $00
consists of a description of the string, represented as a terminated
4.27. Group identification registration
c - Read only
by new software. Unsynchronisation may only be made with MPEG 2 layer
TDLY

The purpose of this frame is to specify how good an audio file is.
indicates usage.
a digital signature. There may be several "GRID" frames in a tag but

WORS
The extended header contains information that is not vital to the
$03 File over the Internet
"AS IS" basis and THE AUTHORS DISCLAIMS ALL WARRANTIES, EXPRESS OR
5. The 'unsynchronisation scheme'

Preview length $xx xx
a certain number of bits, as defined in 'bits for milliseconds
apply when the audio is completely replaced with other audio data.
containing an email address, or a link to a location where an email
must begin with the Unicode BOM ($FF FE or $FE FF) to identify the
In the examples, text within "" is a text string exactly as it
is used it should be $01. Strings dependent on encoding is
98.Easy Listening
To increase performance and accuracy of jumps within a MPEG [MPEG]
In the frame header the size descriptor is followed by two flags
4.24 OWNE Ownership frame
significance concerning the recognition of the file. An example of
followed by encoding, language and content descriptors and is ended
followed by a Unicode NULL ($FF FE 00 00 or $FE FF 00 00).
to the existing frame, after the left and right back channels. The
WOAF
Bits for bytes deviation $xx
$09 theme start
There is no fixed order of the frames' appearance in the tag,
and MPEG-2.5, but may work with other types of encoded audio.
TIT3
described in frames. If no part is unencrypted, these fields should
$00.
The 'Length' frame contains the length of the audiofile in
111.Slow Jam

TYER
encryption method should be sent to the indicated email address. The
/I Type I cassette (ferric/normal)
number of "PRIV" frames as low as possible.
4.14. Reverb
4.1 UFID Unique file identifier
valid for new line characters. A syllable followed by a comma should
33.Instrumental
[URL] T. Berners-Lee, L. Masinter & M. McCahill, "Uniform Resource
number of "PRIV" frames as low as possible.
correct parsing of the tag information, hence the extended header is
For a more accurate description of the tempo of a musical piece this
Filename $00 (00)
includes the used audio encoder and its settings when the file was
audio stream he picked up; in effect, it states the time offset of
"TXXX" frame in each tag, but only one with the same description.
/I \\include /I \\include\\id3
contains a frame identifier, which is the frame that should be linked
5) Add the following include dirs to your program:
the frame is given, and additional ID data, if needed. Data should be
%x0000000 00000000
each tag.
'lock on to' the audio. Since the ID3v2 tag doesn't contain a valid
either used or reserved for future use.
43.Punk
The second bit (bit 6) indicates whether or not the header is
comment frame in each tag, but only one with the same language and
4.25. Commercial frame
4.10. Synchronised lyrics/text
are not subject to encryption or compression.
to the same group.
[ISO-8859-1]. There may be more than one "WXXX" frame in each tag,
Also in there is a file called Id3lib.pas which has the interface to the dll

4.2. Text information frames
Software that isn't told otherwise may safely remove such frames. The
Reverb feedback, right to right $xx

MIME type $00
Text encoding $xx
'offset to next tag' may be used. The offset is calculated from the
but it's an easier solution than if one tries to achieve the same
frames or enlarge existing frames within the tag without having to
Filename $00 (00)
8. Appendix
frame ID, size and encoding fields, with a 'price payed' field. The
44.Space
2) include prj/id3lib.dsp and zlib/prj/zlib.dsp to your workspace (*note this is a different id3lib than above)
but other types may be used, not for these types though. This is used
beginning of the file.
no use in 'unsynchronising' tags if the file is only to be processed
unsychronisation, including padding, excluding the header but not
102.Chanson
but other types may be used, not for these types though. This is used
4.13 EQUA Equalization
beginning of the file.
The 'Owner identifier' is a null-terminated string with a URL [URL]
37.Sound Clip

CD CD
2. Conventions in this document
(debug) /nodefaultlib:"msvcprtd" or(release) /nodefaultlib:"msvcprt"
$09 theme start
19.Industrial
Many interesting applications could be found to this frame such as a
must begin with the Unicode BOM ($FF FE or $FE FF) to identify the
Text encoding $xx

This flag tells the software what to do with this frame if it is
Since standardisation of such a database is beyond this document, all
4.28. Private frame
87.Revival
is 0%, $FF is 100%. If this value were $7F, there would be 50% volume
frame header. Every frame with the same group identifier belongs
grouping should be sent to the indicated email address. The 'Group
Time stamp format $xx
The 'Internet radio station owner' frame contains the name of the
picture is to attach.

4.8 SYTC Synchronized tempo codes
implied. The "image/png" [PNG] or "image/jpeg" [JFIF] picture format
the following format:
'lock on to' the audio. Since the ID3v2 tag doesn't contain a valid
email address can be found, that belongs to the organisation
4.3.2. User defined URL link frame
/AA AAD
Language $xx xx xx
Preview start $xx xx
Reverb feedback, left to left $xx
TPE3
information blocks, called frames, whose format need not be known to
(representing up to 256MB) are used in the size description to avoid
4.3.1 WOAR Official artist/performer webpage
Yet another subjective one. You may here adjust echoes of different
wanted it may be omitted. When the counter reaches all one's, one
in a similar way to the predefined types in the "TMED" frame, but
37.Sound Clip
purpose of this padding is to allow for adding a few additional
although it is desired that the frames are arranged in order of
TKEY
3. ID3v2 overview
4.2.1 TRSN Internet radio station name
Relative volume change, center $xx xx (xx ...)
characters 0-9 only.
The absence of this frame means only that the copyright information
type' "-->" and having a complete URL [URL] instead of picture data.
Language $xx xx xx
Identifier
or assist in its implementation may be prepared, copied, published

considered as an update of the previous one. E.g. if there is a
62.Pop/Funk
identifier'.
eight bits bigger in the same away as the play counter ("PCNT").
a - Unsynchronisation
References to the ID3v1 genres can be made by, as first byte, enter
4.2.1 TPUB Publisher
should be added.
13.Pop
which time stamp format should be used. Then follows one or more
containing an email address, or a link to a location where an email
is an identifier that explains the frames' format and content, and a
revision will never be $FF.
Copyright (C) Martin Nilsson 1998. All Rights Reserved.
Locators (URL).", RFC 1738, December 1994.
the unsynchronisation scheme should be applied *afterwards*. When
$FF one more byte of events follows (all the following bytes with
/76 76.59 rpm
TIT3
TV Television
if found more suitable by the software.
4.11. Comments
[ISRC] ISO 3901:1986
The 'Content type', which previously was stored as a one byte numeric
document, all "AENC" frames begin with a terminated string with a
description' is not a multiple of eight.
4.28. Private frame
7. References
Encapsulated object
The increment/decrement bit is 1 for increment and 0 for decrement.
size descriptor that allows software to skip unknown frames.
Extensions (MIME) Part One: Format of Internet Message Bodies",
3) make your project dependend on id3lib, and make id3lib dependend on zlib
and
117.Power Ballad
If the center channel adjustment is present the following is appended
4.6. Event timing codes
8. Appendix
4.19. Recommended buffer size
character is forbidden. In ISO-8859-1 a new line is represented, when
119.Freestyle
be described with the 'Peak volume right' and 'Peak volume left'
address can be found, that belongs to the organisation responsible
the frames and the headers, in other words the padding. The extended
[ISO-8859-1] characters in the range $20 - $FF. Such strings are
'Owner identifier' must be non-empty (more than just a termination).
/SVHS S-VHS
TOPE
each tag.
103.Opera
by new software. Unsynchronisation may only be made with MPEG 2 layer

$0D momentary unwanted noise (Snap, Crackle & Pop)
99.Acoustic
Text encoding $xx
the email address to the user, one rating byte and a four byte play
24.Soundtrack
4.12. Relative volume adjustment
the first frame in the stream. The frame layout is:
can figure out any genre)" or "(55)((I think...)". The following new
wanted it may be omitted. When the counter reaches all one's, one
MD MiniDisc
33.Instrumental
audio file, frames with timecodes in different locations in the file
textstring is followed by a termination ($00 (00)) all the following
original recording, if for example the music in the file should be a
/I \\include /I \\include\\id3
Relative volume change, right $xx xx (xx ...)
in the audio file as text, this time, however, in sync with the
numerical string.
section 5.
4.11. Comments
10.New Age
/9 9.5 cm/s
follows:
4.2.1 TSIZ Size
The actual text
30.Fusion
experimental stage.
URL
$FD audio end (start of silence)
with information such as where the album can be bought. There may be
/5 mode 5, 44.1 kHz/16 bits, linear
TMED
result with several frames. The frame begins, after the frame ID,
Time stamp format is:
$0C Lyricist/text writer
7.Hip-Hop
occurring in front of the first syllable of a new word. This is also
50.Darkwave
57.Comedy
with other frames. If set a group identifier byte is added to the
the date for the recording. This field is always four characters
44.Space
between every song in a playlist. The player should use the "ETC"
'recommended buffer size' frame should be included in every tag.
Type of event $xx
different programs may require different 'nodefaultlib' 's, or none at all, these worked for me.
last thing is the ability to include a company logotype. The first of
18.Techno
4.11. Comments
that its program uses and does not fit into the other frames. The
Time stamp $xx (xx ...)
TCON
be taken care of by the 'unsynchronisation scheme' described in
publisher.
Picture type: $00 Other
This frames is always four characters long (until the year 10000).
4.19 RBUF Recommended buffer size
header is a descriptor of how much the 'frame counter' should
0 Frame is not compressed.
The 'Official audio file webpage' frame is a URL pointing at a file
4.21 AENC Audio encryption
Abstract
consists of a binary dump of the Table Of Contents, TOC, from the CD,
The 'Owner identifier' is then followed by the actual identifier,
The 'Internet radio station name' frame contains the name of the
unsynchronisation on the data between the extended header and the
bundling all needed information. That makes this frame rather complex
TIME
increase for every reference. If this value is two then the first
writers are seperated with the "/" character.
chronological order. The type of event is as follows:
This is another way of incorporating the words, said or sung lyrics,
names of those involved, and how they were involved. The body simply
tag, except when stated otherwise in the frame description. If the
2) include libprj/id3lib.dsp and zlib/prj/zlib.dsp to your workspace
defined in 'bits for bytes deviation', that describes the difference
format of a correct sync that should be altered by ID3 encoders is as
$0A Band/Orchestra
followed by the actual URL. The URL is always encoded with ISO-8859-1
in a tag if the audio contains more than one performer, but not with
character is forbidden. In ISO-8859-1 a new line is represented, when
1 Frame contains group information
/III Type III cassette (ferric chrome)
Reverb feedback, right to right $xx
This frame's purpose is to be able to identify the audio file in a
value only, is now a numeric string. You may use one or several of
Reverb feedback, left to right $xx
header is a descriptor of how much the 'frame counter' should
/III Type III cassette (ferric chrome)
4.17. Play counter
same symbol and only one containing the same owner identifier. The
only one containing the same symbol and only one containing the same
field. If Peakvolume is not known these fields could be left zeroed
4.22. Position synchronisation frame
The three byte language field is used to describe the language of the
6) (add your code which uses id3lib)
The 'Software/Hardware and settings used for encoding' frame
but may be empty. There may be several pictures attached to one file,
/LW LW
/A Analog transfer from media
4.26 ENCR Encryption method registration
53.Pop-Folk
%x0000000 00000000
44.Space
out bytes and milliseconds respectively.
the frame.
/A Analog transfer from media
4.3.1 WPAY Payment
but it's an easier solution than if one tries to achieve the same
The 'Copyright/Legal information' frame is a URL pointing at a
117.Power Ballad
37.Sound Clip
contains a terminated string with the involvement directly followed
appears in a file. Numbers preceded with $ are hexadecimal and
are allowed in the text. There may be more than one 'Unsynchronised
useless.
milliseconds deviation', must be a multiple of four. There may only
reverb is applied symmetric). There may only be one "RVRB" frame in
"Strang" $00 xx xx "ers" $00 xx xx " in" $00 xx xx " the" $00 xx xx
56.Southern Rock
WPAY
4.21. Linked information
WCOP
in a project. The 'Involved people list' is a frame containing the
/6 mode 6, 44.1 kHz/16 bits, 'wide track' play
15.Rap
The 'Official audio file webpage' frame is a URL pointing at a file
responsible for this specific encrypted audio file. Questions
character date string (YYYYMMDD) followed by a string with the name
The 'Original release year' frame is intended for the year when the
$09 Conductor
7) Compile.
The following type and refinements are defined:
[ISO-4217] ISO 4217:1995.
THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED
Since standardisation of such a database is beyond this document, all

audio stream he picked up; in effect, it states the time offset of
information, such as title, performer, copyright etc.
Reverb left (ms) $xx xx
represented as , or if newlines are
the audio to match the 'Playlist delay' time. The time is represented
This frame is intended for URL [URL] links concerning the audiofile
3) make your project dependend on id3lib, and make id3lib dependend on zlib
92.Progressive Rock
currently only three flags are used.
3.2. ID3v2 extended header
textstring. The description has a maximum length of 64 characters,
The ID3v2 tag size is encoded with four bytes where the most
bytes. These flags are described in section 3.3.1.
97.Chorus
software with ID3v2.2.0 and below support should encounter version
$02 Absolute time, 32 bit sized, using milliseconds as unit
"AS IS" basis and THE AUTHORS DISCLAIMS ALL WARRANTIES, EXPRESS OR
that is a contact URL, with which the user can contact the seller,
The 'Payment' frame is a URL pointing at a webpage that will handle

Relative volume change, right $xx xx (xx ...)
information about the performers in the recording.
112.Club
Text encoding $xx
Language $xx xx xx
such order: UFID, TIT2, MCDI, TRCK ...
the player. All tempo descriptors should be sorted in chronological
string, followed by the actual string. There may be more than one
50.Darkwave
Reverb bounces left/right is the number of bounces that should be
/45 45 rpm
$0E sustained noise
Extensions (MIME) Part One: Format of Internet Message Bodies",
audiofile in a similar way to the other "T"-frames. The frame body
as in the "TCO" frame. Predefined refinements is appended after the
represented as $00 00 02 01.
4.2.2. User defined text information frame
/A Analog transfer from media
counter thus making the counter eight bits bigger. The counter must
Milliseconds between reference $xx xx xx
/AAC Advanced audio compression
The 'Encoded by' frame contains the name of the person or
the player. All tempo descriptors should be sorted in chronological
'recommended buffer size' frame should be included in every tag.
be used after every entry (name, event etc.) in a frame with the
4.3.1. URL link frames - details
There is no fixed order of the frames' appearance in the tag,
4.6 ETCO Event timing codes
MPEG frames between reference $xx xx
The second criterion has made a more noticeable impact on the design
$12345678 would be encoded $12 34 56 78).
TLEN
The 'Owner identifier' is a null-terminated string with a URL [URL]
5. The 'unsynchronisation scheme'
[ISO-8859-1] characters in the range $20 - $FF. Such strings are
performers are seperated with the "/" character.
ID3v2/file identifier "ID3"
ISO/IEC DIS 13818-3
66.New Wave
For a more accurate description of the tempo of a musical piece this
$12345678 would be encoded $12 34 56 78).
header in the next. This field may be omitted. Embedded tags are
which time stamp format should be used. Then follows one or more
'recommended buffer size' frame. If the client is connected to a
header in the same order as the flags indicating the additions. I.e.
4.2.1 TPE4 Interpreted, remixed, or otherwise modified by
be described with the 'Peak volume right' and 'Peak volume left'
specific webpage.
Text encoding $xx
The 'Media type' frame describes from which media the sound
Filename $00 (00)
[ID3v2] Martin Nilsson, "ID3v2 informal standard".
Terminating the start events such as "intro start" is not required.
without knowledge in why the frame was flagged read only and
information from another ID3v2 tag that might reside in another audio

The 'Buffer size' should be kept to a minimum. There may only be one
although it is desired that the frames are arranged in order of
with unknown content. %x is used to indicate a bit with unknown
frame size. If ISO-8859-1 is used this byte should be $00, if Unicode
significant bit (bit 7) is set to zero in every byte, making a total
122.Drum Solo
only be clear if the tag does not contain any false synchronisations.
Copyright (C) Martin Nilsson 1998. All Rights Reserved.
8. Appendix
content descriptor.
$01 end of initial silence
/AM AM
TPOS
22.Death Metal
4. Declared ID3v2 frames
The "TXXX", "APIC", "GEOB" and "AENC" frames may be linked with
without taking the proper means to compensate, e.g. recalculating

$02 Compressed audio on CD
4.2.1 TSSE Software/Hardware and settings used for encoding
a - Tag alter preservation
Increment/decrement %00xxxxxx
Owner identifier $00
It is permitted to include padding after all the final frame (at the
size and encoding fields, with a price string field. A price is
result with several frames. The frame begins, after the frame ID,
To indicate usage of the unsynchronisation, the first bit in 'ID3
additional information. This information will be added to the frame
Peak volume left back $xx xx (xx ...)
4.13. Equalisation
/4 mode 4, 32 kHz/12 bits, 4 channels
$05 As note sheets
Distribution of this document is unlimited.
54.Eurodance
cover of a previously released song, was released. The field is
decoding a compressed, 'unsynchronised' file, the 'unsynchronisation
Premix right to left $xx

altered functionallity.

bytes for the 'lead out' making a maximum of 804 bytes. The offset to
8-bit single-byte coded graphic character sets, Part 1: Latin
(debug) /nodefaultlib:"libcmtd" or(release) /nodefaultlib:"libcmt"
4.Disco
in the audio file as text, this time, however, in sync with the
which a program was run.
/2 MPEG 1/2 layer II

TRDA
TPOS
counter thus making the counter eight bits bigger. The counter must
'milliseconds between reference' and the reality. The number of bits
To increase performance and accuracy of jumps within a MPEG [MPEG]
are not subject to encryption or compression.

2. Conventions in this document
The following type and refinements are defined:
The 'Buffer size' should be kept to a minimum. There may only be one
should be ignored and not be displayed. All text frame identifiers
string with a URL [URL] containing an email address, or a link to a
Text encoding $xx
Text encoding $xx
ended with a ")" character. This is optionally followed by a
reserved. $00 is used to describe a beat-free time period, which is
Preview start $xx xx
Counter $xx xx xx xx (xx ...)
as a numeric string.
The 'Title/Songname/Content description' frame is the actual name of
pointing at the homepage of the internet radio station.
lyrics spoken or sung in the audio. The language is represented with
the signature, the bit should be cleared.
4.23. Terms of use frame
The 'Recording dates' frame is a intended to be used as complement to
valid for new line characters. A syllable followed by a comma should
TEL Telephone
purpose of this padding is to allow for adding a few additional
5.Funk

within "(" and ")" and are optionally followed by a text refinement,
[ISO-4217] ISO 4217:1995.
$02 Compressed audio on CD
All numeric strings and URLs [URL] are always encoded as ISO-8859-1.
Rating $xx
4) Add /D ID3LIB_LINKOPTION=1 to your project options (settings, C/C++ tab)
4.21. Linked information
2.Country
6. Copyright
Owner identifier $00
With these frames dynamic data such as webpages with touring
4.2.1 TLAN Language(s)
/AD ADD
79.Hard Rock
the frame the first two channels will be treated as front channels.
datablock required for decryption of the audio. There may be more
TPE4
45.Meditative
encoding have a text encoding description byte directly after the
24.Soundtrack
originated. This may be a text string or a reference to the
described in 4.3.2.>
The 'Official internet radio station homepage' contains a URL
Identifier
Language $xx xx xx
TORY
the encoder) is a null terminated string followed by a time stamp
Where time stamp format is:
TPUB
$F0-$FC reserved for future use
The 'Part of a set' frame is a numeric string that describes which
4.25 COMR Commercial frame
Content descriptor $00 (00)
$00.
Time stamp $xx (xx ...)
only used when the files are stored on a CD-ROM or other

The 'Time stamp' is set to zero if directly at the beginning of the
Where yy is less than $FF, xx is the 'flags' byte and zz is less than
The actual text
/1 standard, 48 kHz/16 bits, linear
/VHS VHS
TIT1
4.14 RVRB Reverb
$0E During recording
4.3.1. URL link frames - details
"POSS" frame in each tag.
"MCID", "ETCO", "MLLT", "SYTC", "RVAD", "EQUA", "RVRB", "RBUF", the
The price string is followed by an 8 character date string in the
TCOP
MIME type $00
$04 is events (e.g. "Don Quijote enters the stage")
4.2.1 TRSO Internet radio station owner
separating words should mark the beginning of a new word, thus
be one "RVAD" frame in each tag.
4.16. General encapsulated object
The first criterion is met by the simple fact that the MPEG [MPEG]
to the same group.
defined in 'bits for bytes deviation', that describes the difference
I, II and III and MPEG 2.5 files.
4.28. Private frame
predefine an equalisation curve within the audio file. There may only
The limited permissions granted above are perpetual and will not be
encoder.
Adjustment bits $xx
PCM Pulse Code Modulated audio
Reverb feedback, left to right $xx
is reflected by the revision number in the header of the tag.
4.2.1 TPE4 Interpreted, remixed, or otherwise modified by
102.Chanson
Adjustment bits $xx
72.Tribal
104.Chamber Music
audio file, frames with timecodes in different locations in the file
CR Cover
starts. It is represented as a string with a maximum length of three
A tag is the whole tag described in this document. A frame is a block
11.Oldies
AENC, ETCO, EQUA, MLLT, POSS, SYLT, SYTC, RVAD, TENC, TLEN, TSIZ
3. ID3v2 overview
subject to unsynchronisation.
4.24 OWNE Ownership frame
108.Primus
1. Table of contents
4.2.1 TALB Album/Movie/Show title
TIME
TEL Telephone
to frequency. All frequencies don't have to be declared. The
b - Extended header
/I \\include /I \\include\\id3
1 is worst and 255 is best. 0 is unknown. If no personal counter is
$06 Media (e.g. lable side of CD)
4.9. Unsychronised lyrics/text transcription
Value
currency code. Concatenated to this is the actual price payed, as a
IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF
nearest byte) for every equalisation band in the following format,
might be useful. The ID3v2 frame includes references that the
if found more suitable by the software.
$08 Non-musical merchandise
$0A variation start

/1 MPEG 1/2 layer I
0.Blues
9. Author's Address
media type, e.g. "(CD/A)" or "(VID/PAL/VHS)".
The 'Lyricist(s)/Text writer(s)' frame is intended for the writer(s)
Extended header size $xx xx xx xx
(debug) /nodefaultlib:"MSVCRTD" or(release) /nodefaultlib:"MSVCRT"
Seller
constructed by one three character currency code, encoded according
content descriptor, represented with as terminated textstring. If no
4.22 POSS Position synchronisation frame
In the increment/decrement field bit 0 is used to indicate the right
beginning of the file.
with the same language and content descriptor.
includes the used audio encoder and its settings when the file was
performers are seperated with the "/" character.
as flexible and expandable as possible.
The 'Time stamp' is set to zero if directly at the beginning of the
Frequency (lower 15 bits)
counter reaches all one's, one byte is inserted in front of the
audio is delivered when bought according to the following list:
the piece (e.g. "Adagio", "Hurricane Donna").
22.Death Metal
and MPEG-2.5, but may work with other types of encoded audio.
/A Analog transfer from media
This frame contains the lyrics of the song or a text transcription of

significance concerning the recognition of the file. An example of
MPEG 2 layer I, II and III [MPEG] and MPEG 2.5. This value may not be
official wepage for the publisher.
4.14 RVRB Reverb
maximum size described in 'Buffer size' may occur in the audiostream.
1 Frame is compressed using zlib [zlib] with 4 bytes for
code. Technical committee / subcommittee: TC 37 / SC 2
'Premix left to right' is the amount of left sound to be mixed in the
the audio to match the 'Playlist delay' time. The time is represented
$02 Absolute time, 32 bit sized, using milliseconds as unit
Codes for the representation of names of languages, Part 2: Alpha-3
section 5.
ISO/IEC DIS 13818-3
7) Compile.
audio stream. In these cases, the size of the buffer can be
consists of a binary dump of the Table Of Contents, TOC, from the CD,
recording. E.g. "4/9".
4.28. Private frame
25.Euro-Techno
DVD DVD
containing an email address, or a link to a location where an email
Part 3: Audio.
want to synchronise your music to something, like setting of an
4.21. Linked information
throughout the whole tag. Values below $80 are reserved. The 'Method
used in the text their language codes should follow according to
with the same email address.
unknown and the file, excluding the tag, is altered. This does not
Value
Size of padding $xx xx xx xx
All the other flags should be cleared. If one of these undefined
ISO/IEC DIS 13818-3
76.Retro
The bitorder in ID3v2 is most significant bit first (MSB). The
71.Lo-Fi
To indicate usage of the unsynchronisation, the first bit in 'ID3
audio stream he picked up; in effect, it states the time offset of
This frame enables several competing offers in the same tag by
by comparing people's profiles. The frame is very simple. It contains
TPE2
/1 MPEG 1/2 layer I
section 5.
Language $xx xx xx
the software that encounters them. At the start of every frame there
93.Psychedelic Rock
could be used to profile a person's taste and find other 'good' files
for more information.
bits) for MPEG 2 layer I, II and III [MPEG] and MPEG 2.5. This value
numerical value where "." is used as decimal seperator. In the price
The first criterion is met by the simple fact that the MPEG [MPEG]
ended with a ")" character. This is optionally followed by a
$14 theme end
/3 mode 3, 32 kHz/12 bits, nonlinear, low speed
Bits used for volume descr. $xx
the following format:
unsynchronisation on the data between the extended header and the
which may be up to 64 bytes. There may be more than one "UFID" frame
Abolute time means that every stamp contains the time from the
described in frames. If no part is unencrypted, these fields should
with information such as where the album can be bought. There may be
amount of volume that should be returned to the next echo bounce. $00

"/" character.
optional.
[MIME] Freed, N. and N. Borenstein, "Multipurpose Internet Mail
recording. This may be extended with a "/" character and a numeric
51.Techno-Industrial
'decompressed size' appended to the frame header.
87.Revival
The first three bytes of the tag are always "ID3" to indicate that
considered as an update of the previous one. E.g. if there is a
4.18 POPM Popularimeter
publisher.
email address can be found, that belongs to the organisation
Frame ID $xx xx xx xx (four characters)
In the increment/decrement field bit 2 is used to indicate the right
2) include libprj/id3lib.dsp and zlib/prj/zlib.dsp to your workspace
which time stamp format should be used. Then follows one or more
be at least 32-bits long to begin with.
4.22. Position synchronisation frame
size of ten bytes in every frame. The size is calculated as frame

23.Pranks
4.3.1 WCOM Commercial information
[ISO-8859-1] characters in the range $20 - $FF. Such strings are
Group dependent data
symbol' contains a value that associates the frame with this group
4.6. Event timing codes
section 3.2.
the frame.
symbol' may optionally be followed by encryption specific data. There
performer(s) of the original recording, if for example the music in
Text encoding $xx
Image format is the MIME type and subtype [MIME] for the image. In
THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED
b - Extended header
ID3v2/file identifier "ID3"
experimental stage.
The 'File type' frame indicates which type of audio this tag defines.
The 'time stamp' is set to zero or the whole sync is omitted if

writers are seperated with the "/" character.
7. References
To identify with which method a frame has been encrypted the
be described with the 'Peak volume right' and 'Peak volume left'
4.3. URL link frames
4.2.1 TPE1 Lead performer(s)/Soloist(s)
None.
playlist that features better audiofiles more often than others or it
51.Techno-Industrial
string with a URL [URL] containing an email address, or a link to a
to the existing frame, after the center channel. The bass channel is
'Method symbol' contains a value that is associated with this method
TIME
Peak volume right back $xx xx (xx ...)
'offset to next tag' may be used. The offset is calculated from the
but it's an easier solution than if one tries to achieve the same
83.Swing
the player. All tempo descriptors should be sorted in chronological
all the $FF 00 combinations have to be replaced with the $FF 00 00
102.Chanson
$0C Lyricist/text writer
URL $00
The Second one (id3lib/libprj) creates the .lib file for static linking.
115.Folklore
/DD DDD
4.6. Event timing codes
audio stream he picked up; in effect, it states the time offset of
unsychronisation, including padding, excluding the header but not
$04 Stream over the Internet
The 'Software/Hardware and settings used for encoding' frame
frame have been made in a later version of the ID3v2 standard. This
The ID3v2 tag size is the size of the complete tag after
Terminated text to be synced (typically a syllable)
MIME type $00
audiofile indeed is encrypted, the whole file may be considered
0 Frame should be preserved.
Content descriptor $00 (00)
The 'Band/Orchestra/Accompaniment' frame is used for additional
35.House
66.New Wave
Universal Multiple-Octet Coded Character Set (UCS), Part 1:
represented as , or MPEG frames between reference $xx xx
7) Try to compile, and see if you need any of the following:
encoder.
Time stamp format is:
The "COMM", "SYLT" and "USLT" frames may be linked with three bytes
3.3. ID3v2 frames overview
1) Rename config.h.win32 to config.h
5. The 'unsynchronisation scheme'
string etc. A numeric string is a string that consists of the
102.Chanson
used in the text their language codes should follow according to
string containing the total numer of tracks/elements on the original
4.3.2. User defined URL link frame
indicates usage.
The 'Language(s)' frame should contain the languages of the text or
containing an email address, or a link to a location where an email
1.Classic Rock
reverb is applied symmetric). There may only be one "RVRB" frame in
or, if no other data follows, be completely omitted. There may only
represented by bit 5 in the increase/decrease field.
unknown and the file, excluding the tag, is altered. This does not
DCC DCC
This frame delivers information to the listener of how far into the
audio can be specified. The 'Preview start' and 'Preview length' is
The 'Official audio source webpage' frame is a URL pointing at the
5. The 'unsynchronisation scheme'
$03 File over the Internet
4.3.2. User defined URL link frame
Generic coding of moving pictures and associated audio information,
address can be found, that belongs to the organisation responsible
$02 Absolute time, 32 bit sized, using milliseconds as unit
124.Euro-Hous $0D momentary unwanted noise (Snap, Crackle & Pop)
subject to unsynchronisation.
61.Christian Rap
software with ID3v2.2.0 and below support should encounter version
$FF one more byte of events follows (all the following bytes with
sound or after the previous event. All events should be sorted in
$12345678 would be encoded $12 34 56 78).
'decompressed size' appended to the frame header.
4.17 PCNT Play counter
frames, all the frames consists of a frame header followed by one or
more information about the people behind a remix and similar
4.5. Music CD Identifier
/2 mode 2, 32 kHz/16 bits, linear
/2 mode 2, 32 kHz/16 bits, linear
3.3. ID3v2 frames overview
audiofile indeed is encrypted, the whole file may be considered
The 'time stamp' is set to zero or the whole sync is omitted if
/IV Type IV cassette (metal)
end of tag in which this frame resides to the first byte of the
"TXXX" frame in each tag, but only one with the same description.
same symbol and only one containing the same owner identifier. The
Yet another subjective one. You may here adjust echoes of different
IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF
4. Preserved if tag is altered, preserved if file is altered.
None.
4.3.2. User defined URL link frame
/38 38 cm/s
three or higher it should simply ignore the whole tag. Version and
in a similar way to the other "W"-frames. The frame body consists
information blocks, called frames, whose format need not be known to
/78 78.26 rpm
73.Acid Punk
textstring. The description has a maximum length of 64 characters,
nearest byte) for every equalisation band in the following format,
first byte has the value $FF, one more byte follows, which is added
[CDDB] Compact Disc Data Base
4.9. Unsychronised lyrics/text transcription
If the last byte in the tag is $FF, and there is a need to eliminate
ownership of the file. More detailed information concerning the legal
Sync identifier (terminator to above string) $00 (00)
122.Drum Solo
the artists official webpage. There may be more than one "WOAR" frame
WPAY
/II Type II cassette (chrome)
email address can be found, that belongs to the organisation
various ways, such as musicians and technicians, the 'Text
the file should be a cover of a previously released song. The
kinds. Reverb left/right is the delay between every bounce in ms.
the tag. There may only be one URL [URL] link frame of its kind in an
4.3.1 WPUB Publishers official webpage
This document describes the ID3v2.3.0, which is a more developed
Followed by a list of key events in the following format:
Text encoding $xx
4.11 COMM Comments
but may be empty. There may be several pictures attached to one file,
80.Folk
'decompressed size' appended to the frame header.
part of the tag (i.e. only one "RVRB" frame allowed, whether it's
TEXT
Date of purch.
The 'Official artist/performer webpage' frame is a URL pointing at
Filename $00 (00)
frame size. If ISO-8859-1 is used this byte should be $00, if Unicode
Picture type $xx
Newline ($0A) characters are allowed in all "SYLT" frames and should
to ISO 4217 [ISO-4217] alphabetic currency code, followed by a
4.2.1 TYER Year
kinds of alterations, including adding more padding and reordering
Flags $xx xx
the file should be a cover of a previously released song. The
4.2.1 TFLT File type
or, if no other data follows, be completely omitted. There may only
chronological order. The type of event is as follows:
false synchronisations in the tag, at least one byte of padding
break something, e.g. a signature. If the contents are changed,
$0F During performance
4.16 GEOB General encapsulated object
evolved from the ID3 tagging system. The ID3v2 offers a flexible way
Left to left means the sound from the left bounce to be played in the
end of the ID3 tag), making the size of all the frames together
Peak volume left back $xx xx (xx ...)
This flag tells the software what to do with this frame if it is
apply when the audio is completely replaced with other audio data.
writers are seperated with the "/" character.
WPUB
it doesn't seem to be maintained anymore. I've included it as a service.
used in the text their language codes should follow according to
only.
that is a contact URL, with which the user can contact the seller,
/3 mode 3, 32 kHz/12 bits, nonlinear, low speed
copyright holder of the original sound, not the audio file itself.
31.Trance
are allowed in the text. There may be more than one 'Unsynchronised
if not identical to what is described in this document. The contents
And, last but not least, there is a delphi project in cvs
3.3. ID3v2 frames overview
document, all "AENC" frames begin with a terminated string with a
more than one "WCOM" frame in a tag, but not with the same content.
78.Rock & Roll
None.
WOAF
Owner identifier $00
4.19. Recommended buffer size
"/" character.
This frames is always four characters long (until the year 10000).
4.5. Music CD Identifier
unknown flag is set in the first byte the frame may not be changed
all the $FF 00 combinations have to be replaced with the $FF 00 00
sync identifier.
writers are seperated with the "/" character.
4.13 EQUA Equalization
number of "PRIV" frames as low as possible.
method must be used somewhere in the tag. See section 3.3.1, flag j
4.10. Synchronised lyrics/text
115.Folklore
frame in each tag, but only one with the same content descriptor.
Language $xx xx xx
of a description of the string, represented as a terminated string,
4.Disco
This frame contains the lyrics of the song or a text transcription of
strings may be omitted, leaving only their terminations. MIME type is
/I \\include /I \\include\\id3
Bits for bytes deviation $xx
Bit 7 in the 'ID3v2 flags' indicates whether or not
Description $00 (00)
Informal standard M. Nilsson
c - Read only
the beat description occurs. There may only be one "SYTC" frame in
118.Rhythmic Soul
16-bit unicode 2.0 (ISO/IEC 10646-1:1993, UCS-2). Unicode strings
copyright message, if the audio file also is copyrighted by the
$03 Cover (front)
appended to the frame header. See section 4.26. for more
109.Porn Groove
correct parsing of the tag information, hence the extended header is
interpretations of another existing piece.

filename. The filename is case sensitive and includes its suffix.
Date of purch.
102.Chanson
4.2.1 TRCK Track number/Position in set
TOLY
appears in a file. Numbers preceded with $ are hexadecimal and
Sometimes the server from which a audio file is streamed is aware of
4.14. Reverb
43.Punk
66.New Wave
in a project. The 'Involved people list' is a frame containing the
/AA AAD
Short content descrip. $00 (00)
To identify with which method a frame has been encrypted the
not the same as a music-free time period. $01 is used to indicate one
symbol' may optionally be followed by some group specific data, e.g.
The second bit (bit 6) indicates whether or not the header is
4.10. Synchronised lyrics/text
only used when the files are stored on a CD-ROM or other
with a "(" character it should be replaced with "((" in the same way
6.Grunge
in a project. The 'Involved people list' is a frame containing the
field.
A. Appendix A - Genre List from ID3v1
lyrics/text transcription' frame in each tag, but only one with the
In such case the tag should reside between two MPEG [MPEG] frames, if
with the actual comment as a text string. Newline characters are
16.Reggae
audio is delivered when bought according to the following list:
The first one (id3lib/prj) creates the standard dll (no COM interface)
4.3.1. URL link frames - details
Tempo data
Reverb feedback, left to left $xx
identifier'.
4.22. Position synchronisation frame
The 'Internet radio station owner' frame contains the name of the
out bytes and milliseconds respectively.
[ISO-8859-1]. There may be more than one "WXXX" frame in each tag,
playlist that features better audiofiles more often than others or it
The ID3v2 tag size is the size of the complete tag after
"Strangers in the night" $0A "Exchanging glances"
$04 is events (e.g. "Don Quijote enters the stage")
$13 Band/artist logotype
References to the ID3v1 genres can be made by, as first byte, enter
Language $xx xx xx
4.19. Recommended buffer size
3) make your project dependend on id3lib, and make id3lib dependend on zlib
This frame contains a brief description of the terms of use and
between the values in this frame. Three equal adjustments for three
Compiling on win32:
4.21. Linked information
Description $00 (00)
the event that the MIME media type name is omitted, "image/" will be
Terminated strings are terminated with $00 if encoded with ISO-8859-1
specific webpage.
4.7. MPEG location lookup table
"1/2".
part of the tag and has the same restrictions as if it was a physical
tempo in the music changes, a tempo descriptor may indicate this for
the encoder) is a null terminated string followed by a time stamp
WPUB
b - Extended header
flags' should be set. This bit should only be set if the tag
The 'Length' frame contains the length of the audiofile in
ended with a ")" character. This is optionally followed by a
4.5. Music CD Identifier
between what is said in 'bytes between reference' and the reality and
[JFIF] JPEG File Interchange Format, version 1.02
altered, so they won't be affected by the decoding process. Therefore
refinement, e.g. "(21)" or "(4)Eurodisco". Several references can be
4.21 AENC Audio encryption
begins with "W". All URL link frames have the following format:
/MW MW
of the ID3v2 tag. It is constructed as a container for several
/2 mode 2, 32 kHz/16 bits, linear
The first one (id3lib/prj) creates the standard dll (no COM interface)
predefine an equalisation curve within the audio file. There may only
flag' is true (1) then this indicates that an ID3 tag with the
containing an email address, or a link to a location where an email
b - Extended header
18.Techno
unknown and the tag is altered in any way. This applies to all
/AM AM
4. Declared ID3v2 frames
The increment/decrement bit is 1 for increment and 0 for decrement.
described in frames. If no part is unencrypted, these fields should
more information about the people behind a remix and similar
A. Appendix A - Genre List from ID3v1
section 5.
/9 9.5 cm/s
revoked.
useless.
version of the ID3v2 informal standard [ID3v2] (version 2.2.0),
The 'time stamp' is set to zero or the whole sync is omitted if
113.Tango
The tempo descriptor is followed by a time stamp. Every time the
no use in 'unsynchronising' tags if the file is only to be processed
excluding the extended header (total tag size - 10). Only 28 bits
decoding software uses a syncsignal, embedded in the audiostream, to
123.Acapella
$01 Standard CD album with other songs
76.Retro
3.3.2. Default flags
but may be empty. There may be several pictures attached to one file,
ISO/IEC 13818-3:1995
each tag.
followed by a Unicode NULL ($FF FE 00 00 or $FE FF 00 00).
The second criterion has made a more noticeable impact on the design
original recording, if for example the music in the file should be a
represented as , or if newlines are
additional information. This information will be added to the frame


An example: The "USLT" passage
recording. E.g. "4/9".
all the $FF 00 combinations have to be replaced with the $FF 00 00
%abc00000 %ijk00000
24.Soundtrack
2. Conventions in this document
Owner identifier $00
The 'Language(s)' frame should contain the languages of the text or
References to the ID3v1 genres can be made by, as first byte, enter
Text encoding $xx
such order: UFID, TIT2, MCDI, TRCK ...
string several prices may be concatenated, seperated by a "/"
$05 is chord (e.g. "Bb F Fsus")
'decompressed size' appended to the frame header.
play. There may only be one "PCNT" frame in each tag. When the
begin with a "(" character it should be replaced with "((", e.g. "((I
Each reference consists of two parts; a certain number of bits, as
bytes. All unused flags must be cleared. The first byte is for
REE Reel
"Strang" $00 xx xx "ers" $00 xx xx " in" $00 xx xx " the" $00 xx xx
frame header. Every frame with the same group identifier belongs
Milliseconds between reference $xx xx xx
generally not recommended since this could render unpredictable
denoting where in the sound file it belongs. Each sync thus has the
itself. The 'Size of padding' is simply the total tag size excluding
4.27. Group identification registration
VQF Transform-domain Weighted Interleave Vector Quantization
with the same language and content descriptor.
/5 mode 5, 44.1 kHz/16 bits, linear
defined.
The 'Owner identifier' is a null-terminated string with a URL [URL]
Abolute time means that every stamp contains the time from the
In such case the tag should reside between two MPEG [MPEG] frames, if
type' "-->" and having a complete URL [URL] instead of picture data.
A tag must contain at least one frame. A frame must be at least 1
Description $00 (00)
4.17. Play counter
organisation responsible for this grouping. Questions regarding the
kind, provided that a reference to this document is included on all
4.26. Encryption method registration
nearest byte) for every equalisation band in the following format,
In the increment/decrement field bit 0 is used to indicate the right
j - Encryption
40.AlternRock
Time stamp $xx (xx ...)
frame consists of an 'Owner identifier' string and the binary data.
Codes for the representation of names of languages, Part 2: Alpha-3
[JFIF] JPEG File Interchange Format, version 1.02
by a terminated string with the involvee followed by a new
"MCID", "ETCO", "MLLT", "SYTC", "RVAD", "EQUA", "RVRB", "RBUF", the
34.Acid
address can be found, that belongs to the organisation responsible
software with ID3v2.2.0 and below support should encounter version
internet radio station from which the audio is streamed.
50.Darkwave
organisation responsible for this grouping. Questions regarding the
And should be replaced with:
align all files to a reference volume, so that you don't have to
6.Grunge
4.2.1 TPE1 Lead performer(s)/Soloist(s)
Generic coding of moving pictures and associated audio information,
characters 0-9 only.
4.19. Recommended buffer size
/IV Type IV cassette (metal)
The 'Part of a set' frame is a numeric string that describes which
chronological order. The type of event is as follows:
different programs may require different 'nodefaultlib' 's, or none at all, these worked for me.
"Weather - Hurricane").
TLEN
increment and 0 is decrement.
file or alone in a binary file. It is recommended that this method is
73.Acid Punk
If a total revision of the ID3v2 tag should be needed, there is a
as the numerig content types, e.g. "(RX)".
contains a terminated string with the involvement directly followed
/I \\include /I \\include\\id3
/MW MW
$05 Leaflet page
Copyright (C) Martin Nilsson 1998. All Rights Reserved.
Total frame CRC $xx xx xx xx
TALB
Frame identifier $xx xx xx
After the 'Owner identifier', a pointer to an unencrypted part of the
the piece (e.g. "Adagio", "Hurricane Donna").
made in the same frame, e.g. "(51)(39)". If the refinement should
/19 19 cm/s
be played in the right speaker.
Universal Multiple-Octet Coded Character Set (UCS), Part 1:
34.Acid
The first three bytes of the tag are always "ID3" to indicate that
followed by a Unicode NULL ($FF FE 00 00 or $FE FF 00 00).
[ISO-4217] ISO 4217:1995.
$01 Absolute time, 32 bit sized, using MPEG [MPEG] frames as unit
/3 mode 3, 32 kHz/12 bits, nonlinear, low speed
c - Experimental indicator
41.Bass
"/" character.
ANA Other analog media
The 'Lyricist(s)/Text writer(s)' frame is intended for the writer(s)
28.Vocal
time. This frame requires a present and valid "TRCK" frame, even if
And the third one (id3lib/id3com) creates a dll with com interface. A Visual basic demo using it is included.
playlist that features better audiofiles more often than others or it
/80 80 rpm
different programs may require different 'nodefaultlib' 's, or none at all, these worked for me.
string according to encoding> if newlines are allowed. Any empty
between what is said in 'bytes between reference' and the reality and
should be before the sync).
/IV Type IV cassette (metal)
email address can be found, that belongs to the organisation
Newline ($0A) characters are allowed in all "SYLT" frames and should
software can use to calculate positions in the file. After the frame
CR Cover
The 'Original lyricist(s)/text writer(s)' frame is intended for the
92.Progressive Rock
that is a contact URL, with which the user can contact the seller,
7) Try to compile, and see if you need any of the following:

$0A Band/Orchestra
allowed in the text. There may only be one "USER" frame in a tag.
To increase performance and accuracy of jumps within a MPEG [MPEG]
Picture type $xx
cover of a previously released song, was released. The field is
'Content descriptor' is a terminated string. If no descriptor is
4.24. Ownership frame
involvement and so on. There may only be one "IPLS" frame in each
should be before the sync).
4.2.1 TDLY Playlist delay
The 'Owner identifier' is then followed by the actual identifier,
6. Copyright
the first frame in the stream. The frame layout is:
the left and right back channels. If this information is appended to
should be sorted in chronological order. The sync can be considered
described in frames. If no part is unencrypted, these fields should
containing an email address, or a link to a location where an email
type declared as picture type $01 and $02 respectively. There is the


4.14. Reverb
4.20. Audio encryption
34.Acid
reference points out the second frame, the 2nd reference the 4th
chronological order. The type of event is as follows:
5.Funk
Bits used for volume descr. $xx
85.Bebob
96.Big Band
for this specific database implementation. Questions regarding the
See section 3.3.1, flag j for more information.
In the frame header the size descriptor is followed by two flags
ID3v2 tag as compatible as possible with existing software. There is
individual connections like HTTP and there is a possibility to begin
4) Add /D ID3LIB_LINKOPTION=1 to your project options (settings, C/C++ tab)
The 'Album/Movie/Show title' frame is intended for the title of the
121.Punk Rock
is 0%, $FF is 100%. If this value were $7F, there would be 50% volume
double CD. The value may be extended with a "/" character and a
/1 MPEG 1/2 layer I
generally not recommended since this could render unpredictable
the email address to the user, one rating byte and a four byte play
displayed the field must be preceded with "Copyright " (C) " ", where
RX Remix
and MPEG-2.5, but may work with other types of encoded audio.
4.2.1 TENC Encoded by
/19 19 cm/s
4.2.1 TPE4 Interpreted, remixed, or otherwise modified by
allowed, in the frame descriptions. All Unicode strings [UNICODE] use
interpretations of another existing piece.
4.2.1 TMED Media type
3) make your project dependend on id3lib, and make id3lib dependend on zlib
containing an email address, or a link to a location where an email
header is a descriptor of how much the 'frame counter' should
0 Frame should be preserved.
represented as $00 00 02 01.
which picture format is used. In the event that the MIME media type
Encryption info
only be clear if the tag does not contain any false synchronisations.
The default settings for the frames described in this document can be
currency code. Concatenated to this is the actual price payed, as a
end of the ID3 tag), making the size of all the frames together
part of a set the audio came from. This frame is used if the source
The 'Media type' frame describes from which media the sound
It is permitted to include padding after all the final frame (at the
information about the performers in the recording.
textstring is followed by a termination ($00 (00)) all the following

Where the 'Extended header size', currently 6 or 10 bytes, excludes
good to use in conjunction with this one. The frame begins, after the
and
either used or reserved for future use.
Whenever a false synchronisation is found within the tag, one zeroed
$FE audio file ends
value only, is now a numeric string. You may use one or several of
it is likely to not be readable. The flags field is defined as
appears in a file. Numbers preceded with $ are hexadecimal and
center channel is represented by bit 4 in the increase/decrease
The ID3v2 tag size is encoded with four bytes where the most
three or higher it should simply ignore the whole tag. Version and
(representing up to 256MB) are used in the size description to avoid
/VHS VHS
1. Discarded if tag is altered, discarded if file is altered.
4.2.2. User defined text information frame
/AD ADD
or, if signed, as proof. Note that the "USER" and "TOWN" frames are
alphabet No. 1. Technical committee / subcommittee: JTC 1 / SC 2
/80 80 rpm
counter thus making the counter eight bits bigger. The counter must
tempo in the music changes, a tempo descriptor may indicate this for
bits) for MPEG 2 layer I, II and III [MPEG] and MPEG 2.5. This value
'bytes between reference' and 'milliseconds between reference' points
Extended header size $xx xx xx xx

with the same email address.
IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF
includes the used audio encoder and its settings when the file was
first byte has the value $FF, one more byte follows, which is added
46.Instrumental Pop
only one containing the same symbol and only one containing the same
byte is its revision number. In this case this is ID3v2.3.0. All
7. References
The 'Official audio file webpage' frame is a URL pointing at a file
should be sorted in chronological order. The sync can be considered
19.Industrial
4.21 AENC Audio encryption
followed by a termination ($00 (00)) all the following information
$11 A bright coloured fish
originated. This may be a text string or a reference to the
25.Euro-Techno
And the third one (id3lib/id3com) creates a dll with com interface. A Visual basic demo using it is included.
tempo codes. Each tempo code consists of one tempo part and one time
between every song in a playlist. The player should use the "ETC"
TYER
of the text or lyrics in the recording. They are seperated with the
1 Frame should be discarded.
URL containing an email address, or a link to a location where an
The original location is http://sourceforge.net/projects/id3com
URL containing an email address, or a link to a location where an
a larger category of sounds/music. For example, classical music is
/I \\include /I \\include\\id3
byte is inserted in front of the counter thus making the counter

the following format:

WCOM
Time stamp format $xx
followed by a Unicode NULL ($FF FE 00 00 or $FE FF 00 00).
Short content descrip. $00 (00)
The 'File owner/licensee' frame contains the name of the owner or
'status messages' and the second byte is for encoding purposes. If an
reason, coincidence make a syncsignal appear within the tag it will
4.2.1 TCOP Copyright message
unsynchronisation on the data between the extended header and the
4.4 IPLS Involved people list
audio is delivered when bought according to the following list:
one with the same contents. A linked frame is to be considered as
bytes for the 'lead out' making a maximum of 804 bytes. The offset to
Bit 7 in the 'ID3v2 flags' indicates whether or not
if found more suitable by the software.
milliseconds deviation', must be a multiple of four. There may only
This frame contains a picture directly related to the audio file.
4.19. Recommended buffer size
to the first giving a range from 2 - 510 BPM, since $00 and $01 is
section 5.
padded in the beginning (highest bits) when 'bits used for volume
7.Hip-Hop
the CD's only got one track. There may only be one "MCDI" frame in
The three byte language field is used to describe the language of the
How to start
numbers preceded with % are binary. $xx is used to indicate a byte
$49 44 33 yy yy xx zz zz zz zz
audio stream. In these cases, the size of the buffer can be
The 'Internet radio station owner' frame contains the name of the
111.Slow Jam
/I \\include /I \\include\\id3
[ISO-8859-1] ISO/IEC DIS 8859-1.
The 'Encoded by' frame contains the name of the person or
(MS recommend you distribute it in your programs dir and not in system(32) to avoid version conficts)
This frame is indended for any kind of full text information that
'status messages' and the second byte is for encoding purposes. If an
standard [ID3v2]. The informal standard is released so that
webpage where the terms of use and ownership of the file is
Reverb feedback, left to right $xx
In the frame header the size descriptor is followed by two flags
C)***Your project wants to link id3lib dynamic: (instructions below for vc)
4.21. Linked information
The ID3v2 tag size is the size of the complete tag after
4.28. PRIV Private frame
the left and right back channels. If this information is appended to

Total frame CRC $xx xx xx xx
"POSS" frame in each tag.
References to the ID3v1 genres can be made by, as first byte, enter

All URLs [URL] may be relative, e.g. "picture.png", "../doc.txt".
54.Eurodance
follows
The first three bytes of the tag are always "ID3" to indicate that
In this frame any type of file can be encapsulated. After the header,
$0B key change
Where yy is less than $FF, xx is the 'flags' byte and zz is less than
31.Trance
Followed by a list of key events in the following format:
The 'Content type', which previously was stored as a one byte numeric
followed by a one byte 'received as' field. It describes how the
Group dependent data
For applications like streaming audio it might be an idea to embed
(debug) /nodefaultlib:"msvcprtd" or(release) /nodefaultlib:"msvcprt"
of information in the tag. The tag consists of a header, frames and
one with the same contents. A linked frame is to be considered as
to the first giving a range from 2 - 510 BPM, since $00 and $01 is
the artists official webpage. There may be more than one "WOAR" frame
47.Instrumental Rock
The 'Track number/Position in set' frame is a numeric string
4.22. Position synchronisation frame
Encryption info
6.Grunge
58.Cult
51.Techno-Industrial
identifier'.
2) include libprj/id3lib.dsp and zlib/prj/zlib.dsp to your workspace
combination during the unsynchronisation.
This frame is indended for any kind of full text information that
71.Lo-Fi
numbers preceded with % are binary. $xx is used to indicate a byte
This frame enables several competing offers in the same tag by
unknown and the tag is altered in any way. This applies to all
Name of seller $00 (00)
byte is inserted after the first false synchronisation byte. The
7. References
4.2.1 TIME Time
/4 4.75 cm/s (normal speed for a two sided cassette)
4.2.2. User defined text information frame
4.2.1 TIME Time
The text that follows the frame header differs from that of the
number of "PRIV" frames as low as possible.
exception of the "TXXX" frame. All the text information frames have
/LW LW
To increase performance and accuracy of jumps within a MPEG [MPEG]
VID Video
and the least significant bit (LSB) is called 'bit 0'.
as the numerig content types, e.g. "(RX)".
Content type $xx
ended with a ")" character. This is optionally followed by a

chronological order. The type of event is as follows:
Bits for bytes deviation $xx
This frame is intended for music that comes from a CD, so that the CD
method must be used somewhere in the tag. See section 3.3.1, flag j
62.Pop/Funk
Relative volume change, left back $xx xx (xx ...)
4.2.1 TOFN Original filename
/WAC Wax cylinder
frame, the 3rd reference the 6th frame etc. In a similar way the
4.18 POPM Popularimeter
right before any reverb is applied, where $00 id 0% and $FF is 100%.
The 'Playlist delay' defines the numbers of milliseconds of silence
Technical committee / subcommittee: TC 46 / SC 9
their usage.
/5 mode 5, 44.1 kHz/16 bits, linear
4.3.2. User defined URL link frame
currently only three flags are used.
/I Type I cassette (ferric/normal)
right before any reverb is applied, where $00 id 0% and $FF is 100%.
'Method symbol' contains a value that is associated with this method
the beat description occurs. There may only be one "SYTC" frame in
TLAN
(C) is one character showing a C in a circle.
into this tag, a URL [URL] field, where a reference to the file where
Owner identifier $00
Premix right to left $xx
/4 4.75 cm/s (normal speed for a two sided cassette)
interpretations of another existing piece.
$08 Artist/performer
The 'BPM' frame contains the number of beats per minute in the
which may be up to 64 bytes. There may be more than one "UFID" frame
/AAC Advanced audio compression
in a project. The 'Involved people list' is a frame containing the
Part 3: Audio (Revision of ISO/IEC 13818-3:1995)
The 'File type' frame indicates which type of audio this tag defines.
26.Ambient
containing an email address, or a link to a location where an email
/WAC Wax cylinder
Content type: $00 is other
7) Try to compile, and see if you need any of the following:
16.Reggae
61.Christian Rap
4.2.1 TMED Media type
72.Tribal
$09 theme start
There may only be one "ETCO" frame in each tag.
significance concerning the recognition of the file. An example of
includes the used audio encoder and its settings when the file was
Code [ISRC] (12 characters).
123.Acapella
4.2.1 TOWN File owner/licensee
is an identifier that explains the frames' format and content, and a
one with the same contents. A linked frame is to be considered as

4.2.1 TOLY Original lyricist(s)/text writer(s)
39.Noise
Name of seller $00 (00)
responsible for this specific encrypted audio file. Questions
Reverb left (ms) $xx xx
specified. If a $00 is found directly after the 'Frame size' and the
/2.5 MPEG 2.5
49.Gothic
string, followed by the actual string. There may be more than one
for this specific encryption method. Questions regarding the
information frames' are often insufficient to list everyone involved
separating words should mark the beginning of a new word, thus

and "image/jpeg" are allowed. This format string is followed by the
information, such as title, performer, copyright etc.
LD Laserdisc
(debug) /nodefaultlib:"msvcprtd" or(release) /nodefaultlib:"msvcprt"

refinement, e.g. "(21)" or "(4)Eurodisco". Several references can be
directly related to the contents title (e.g. "Op. 16" or "Performed
This document is an informal standard and replaces the ID3v2.2.0
3.Dance
double CD. The value may be extended with a "/" character and a
frame, the 3rd reference the 6th frame etc. In a similar way the
$0F sustained noise end
followed by encoding, language and content descriptors and is ended
Text encoding $xx
strings may be omitted, leaving only their terminations. MIME type is
'bytes between reference' and 'milliseconds between reference' points
correct parsing of the tag information, hence the extended header is
TEL Telephone
made. $FF equals an infinite number of bounces. Feedback is the
in the audio file as text, this time, however, in sync with the
7. References
14.R&B
The 'Content group description' frame is used if the sound belongs to
represented as "m". Example "Cbm". Off key is represented with an "o"
A) ***Your project wants to link id3lib static, and has mfc linked static:
1) Rename config.h.win32 to config.h
(MS recommend you distribute it in your programs dir and not in system(32) to avoid version conficts)
4.2.1 TDAT Date
/45 45 rpm
4.2.1 TBPM BPM (beats per minute)
1 Frame should be discarded.
3.2. ID3v2 extended header
software with ID3v2.2.0 and below support should encounter version
The 'Buffer size' should be kept to a minimum. There may only be one
4.3.1 WOAS Official audio source webpage
4.3.1 WOAR Official artist/performer webpage
altered functionallity.
MIME type $00
83.Swing
the signature, the bit should be cleared.
byte order.
result with several frames. The frame begins, after the frame ID,
59.Gangsta
'recommended buffer size' frame should be included in every tag.
them is the 'Picture MIME type' field containing information about
4.11. Comments
4.25. Commercial frame
The 'Original release year' frame is intended for the year when the
/AD ADD
38.Gospel
4.7 MLLT MPEG location lookup table
Setting both premix to $FF would result in a mono output (if the
9. Author's Address
For applications like streaming audio it might be an idea to embed
4.27 GRID Group identification registration
/LW LW
information like artist, album and more. There may only be one text
between what is said in 'bytes between reference' and the reality and
4.4. Involved people list
specified. If a $00 is found directly after the 'Frame size' and the
indicated email address. The tag may contain more than one "PRIV"
official wepage for the publisher.
short description of the picture, represented as a terminated
4.2.1 TRSN Internet radio station name
recording. E.g. "4/9".
symbol' contains a value that associates the frame with this group
excluding "TXXX" described in 4.2.2.>
$FE audio file ends
4.10 SYLT Synchronized lyric/text
Relative volume change, center $xx xx (xx ...)
kinds. Reverb left/right is the delay between every bounce in ms.
4. Declared ID3v2 frames
section 5.
The frame ID is followed by a size descriptor, making a total header
A. Appendix A - Genre List from ID3v1

$14 Publisher/Studio logotype
giving a frequency range of 0 - 32767Hz:
character is forbidden. In ISO-8859-1 a new line is represented, when
part of a set the audio came from. This frame is used if the source
5. The 'unsynchronisation scheme'
49.Gothic
Codes for the representation of names of languages, Part 2: Alpha-3
made. $FF equals an infinite number of bounces. Feedback is the
represented by bit 5 in the increase/decrease field.
of language descriptor directly followed by a content descriptor as
"RBUF" frame in each tag.
C)***Your project wants to link id3lib dynamic: (instructions below for vc)
1 Frame is encrypted.
TPE2
within "(" and ")" and are optionally followed by a text refinement,
tempo codes. Each tempo code consists of one tempo part and one time
'Content descriptor' is a terminated string. If no descriptor is
Software that isn't told otherwise may safely remove such frames. The
TPE2
format of a correct sync that should be altered by ID3 encoders is as
Informal standard M. Nilsson
more than one "WCOM" frame in a tag, but not with the same content.
4.8. Synchronised tempo codes
refinement, e.g. "(21)" or "(4)Eurodisco". Several references can be
contains a frame identifier, which is the frame that should be linked
for more information.
could be used to profile a person's taste and find other 'good' files
Increment/decrement %00xxxxxx
%x0000000 00000000
only used when the files are stored on a CD-ROM or other
thijmen@id3lib.org
as a validator of the subsequent string.
59.Gangsta
of information in the tag. The tag consists of a header, frames and
URL containing an email address, or a link to a location where an
The three byte language field is used to describe the language of the
Description $00 (00)
DCC DCC
$02 Absolute time, 32 bit sized, using milliseconds as unit
exception of the "TXXX" frame. All the text information frames have
Text encoding $xx

30.Fusion
defined in 'bits for bytes deviation', that describes the difference
The equalisation bands should be ordered increasingly with reference
string according to encoding> if newlines are allowed. Any empty
/4 mode 4, 32 kHz/12 bits, 4 channels
36.Game
Language $xx xx xx
4.28. PRIV Private frame
The 'Not predefined sync's ($E0-EF) are for user events. You might
encryption method should be sent to the indicated email address. The
alphabet No. 1. Technical committee / subcommittee: JTC 1 / SC 2
frame header:
5. The 'unsynchronisation scheme'
/19 19 cm/s
for more information.
followed by the actual URL. The URL is always encoded with ISO-8859-1
method byte. These additions to the frame header, while not included
The 'Language(s)' frame should contain the languages of the text or
REE Reel
3.3.2. Default flags
the unsynchronisation scheme should be applied *afterwards*. When
Software that isn't told otherwise may safely remove such frames. The
made in the same frame, e.g. "(51)(39)". If the refinement should
frames, all the frames consists of a frame header followed by one or
nearest byte) for every equalisation band in the following format,
63.Jungle
Time stamp format $xx
/3 MPEG 1/2 layer III
$04 is events (e.g. "Don Quijote enters the stage")
the beginning of every track on the CD should be described with a
And, last but not least, there is a delphi project in cvs
46.Instrumental Pop
Text encoding $xx
4.2.1 TCON Content type
allowed in the comment text string. There may be more than one
the time for the recording. This field is always four characters
the event that the MIME media type name is omitted, "image/" will be
as the numerig content types, e.g. "(RX)".
Position $xx (xx ...)
4.11 COMM Comments
to the same group.
audiofile indeed is encrypted, the whole file may be considered
[ID3v2] Martin Nilsson, "ID3v2 informal standard".
reason, coincidence make a syncsignal appear within the tag it will
81.Folk-Rock
more information about the people behind a remix and similar
change the volume constantly. This frame may also be used to balance
which uses the allready compiled dll.
How to start
followed by encoding, language and content descriptors and is ended
Buffer size $xx xx xx
$02 Absolute time, 32 bit sized, using milliseconds as unit
4) Add /D ID3LIB_LINKOPTION=1 to your project options (settings, C/C++ tab)
more information about the people behind a remix and similar
order. The first beat-stroke in a time-period is at the same time as
9) distribute your program including id3lib.dll
the frames and the headers, in other words the padding. The extended
follows:
in the audio file as text, this time, however, in sync with the
4.13 EQUA Equalization
should not be used for the actual database queries. The string
the frame.
directly related to the contents title (e.g. "Op. 16" or "Performed
The 'Original release year' frame is intended for the year when the
circumstances when the risk of file seperation is low. The frame
made. $FF equals an infinite number of bounces. Feedback is the
Also in there is a file called Id3lib.pas which has the interface to the dll
but other types may be used, not for these types though. This is used
and
4.3.2 WXXX User defined URL link frame
Data Format Specification version 3.3", RFC 1950, May 1996.
4.2.1 TOAL Original album/movie/show title
56.Southern Rock
TPOS
be at least 32-bits long to begin with.
the time for the recording. This field is always four characters
52.Electronic
Newline ($0A) characters are allowed in all "SYLT" frames and should
/A Analog transfer from media
although it is desired that the frames are arranged in order of
set. The formal standard will use another version or revision number
tempo in the music changes, a tempo descriptor may indicate this for
Technical committee / subcommittee: JTC 1 / SC 2
The 'Not predefined sync's ($E0-EF) are for user events. You might
ID3v2/file identifier "ID3"
address can be found, that belongs to the organisation responsible
(representing up to 256MB) are used in the size description to avoid
TIT3
4.14. Reverb
email address can be found, that belongs to the organisation
Picture type $xx
The 'Software/Hardware and settings used for encoding' frame
The version is followed by one the ID3v2 flags field, of which
TEL Telephone
This frame contains a brief description of the terms of use and
4.7. MPEG location lookup table
A. Appendix A - Genre List from ID3v1
x - CRC data present
$08 Artist/performer
(C) is one character showing a C in a circle.
email address can be found, that belongs to the organisation
67.Psychadelic
audiofile in a similar way to the other "T"-frames. The frame body
Locators (URL).", RFC 1738, December 1994.
3) make your project dependend on id3lib, and make id3lib dependend on zlib
TCON
4.2.1 TCOP Copyright message
Compressed
This flag indicates wether or not the frame is enrypted. If set
4.3.1. URL link frames - details
$03 is movement/part name (e.g. "Adagio")
The 'Lyricist(s)/Text writer(s)' frame is intended for the writer(s)
These are the directories you'll be needing:
is unavailable or has been removed, and must not be interpreted to
$02 Absolute time, 32 bit sized, using milliseconds as unit
represented by bit 5 in the increase/decrease field.
None.
The 'Owner identifier' is then followed by the actual identifier,
4. Declared ID3v2 frames
chronological order. The type of event is as follows:
than one "AENC" frames in a tag, but only one with the same 'Owner
4.1. Unique file identifier
a - Unsynchronisation
The 'Publishers official webpage' frame is a URL pointing at the
be at least 32-bits long to begin with.
4.2.1 TOFN Original filename
without disturbing old software too much and that ID3v2 should be
occurring in front of the first syllable of a new word. This is also
Unicode strings which are NULL-terminated may have the Unicode BOM
$00.
to ISO 4217 [ISO-4217] alphabetic currency code, followed by a
$01 Absolute time, 32 bit sized, using MPEG [MPEG] frames as unit
[PNG] Portable Network Graphics, version 1.0
b - File alter preservation
4.2.1 TIT1 Content group description
$FF one more byte of events follows (all the following bytes with
byte is inserted in front of the counter thus making the counter
for this specific database implementation. Questions regarding the
symbol' contains a value that associates the frame with this group
character.
26.Ambient
[UNICODE] ISO/IEC 10646-1:1993.
may be several "ENCR" frames in a tag but only one containing the
This frame is intended for one-string text information concerning the
Then for every reference the following data is included;
each tag.
Data Format Specification version 3.3", RFC 1950, May 1996.
encoding have a text encoding description byte directly after the
International Standard Recording Code (ISRC).
DIG Other digital media
Technical committee / subcommittee: JTC 1 / SC 29
The 'Buffer size' should be kept to a minimum. There may only be one
without taking the proper means to compensate, e.g. recalculating
1) Rename config.h.win32 to config.h
by comparing people's profiles. The frame is very simple. It contains
Peak volume right $xx xx (xx ...)
double CD. The value may be extended with a "/" character and a
itself. The 'Size of padding' is simply the total tag size excluding
/FM FM
4.2.1 TOPE Original artist(s)/performer(s)
%abc00000 %ijk00000
4.2.1 TPUB Publisher
/SECAM SECAM
$49 44 33 yy yy xx zz zz zz zz
eight bits bigger in the same away as the play counter ("PCNT").

4.2.1 TPE2 Band/orchestra/accompaniment
4.2.1 TIT3 Subtitle/Description refinement
4.21 AENC Audio encryption
to frequency. All frequencies don't have to be declared. The
Text encoding $xx
4.2.1 TALB Album/Movie/Show title
it is likely to not be readable. The flags field is defined as
TDLY
URL
$01 Absolute time, 32 bit sized, using MPEG [MPEG] frames as unit
/FM FM
The 'Internet radio station owner' frame contains the name of the
Status of this document
/A Analog transfer from media
[JFIF] JPEG File Interchange Format, version 1.02
4.2.1 TEXT Lyricist/Text writer
frame ID, size and encoding fields, with a 'price payed' field. The
$13 refrain end
The ID3v2 tag size is encoded with four bytes where the most
The 'Commercial information' frame is a URL pointing at a webpage
Technical committee / subcommittee: TC 68
if not identical to what is described in this document. The contents
8-bit single-byte coded graphic character sets, Part 1: Latin
The 'Time stamp' is set to zero if directly at the beginning of the
space character (making five characters), is intended for the
/9 9.5 cm/s
83.Swing
to the same group.
Data Format Specification version 3.3", RFC 1950, May 1996.
should be added.
of the text or lyrics in the recording. They are seperated with the
$02 Compressed audio on CD
5. The 'unsynchronisation scheme'
4.5. Music CD identifier
80.Folk
be one "MLLT" frame in each tag.
103.Opera
There is no fixed order of the frames' appearance in the tag,
84.Fast Fusion
'status messages' and the second byte is for encoding purposes. If an
4.4. Involved people list
4.2.1 TSRC ISRC (international standard recording code)
lyrics/text transcription' frame in each tag, but only one with the
1) Rename config.h.win32 to config.h
the introducuction of 'false syncsignals'.
formatted as in the "TYER" frame.
music in the file should be a cover of a previously released song.
Compiling on win32:

official wepage for the publisher.
100.Humour
4.25 COMR Commercial frame
database that may contain more information relevant to the content.
WOAF
contains a frame identifier, which is the frame that should be linked
4.2.1 TCOM Composer
4.2.1 TPE2 Band/orchestra/accompaniment
counter thus making the counter eight bits bigger. The counter must
frame's content, according to ISO-639-2 [ISO-639-2].
or assist in its implementation may be prepared, copied, published
consists of a description of the string, represented as a terminated
contains a terminated string with the involvement directly followed
This flag indicates wether or not the frame is enrypted. If set
72.Tribal
ID3v2 tag as compatible as possible with existing software. There is
following structure:
[URL] T. Berners-Lee, L. Masinter & M. McCahill, "Uniform Resource
$0F sustained noise end
4.3.1 WOAR Official artist/performer webpage
symbol' may optionally be followed by some group specific data, e.g.
/3 MPEG 1/2 layer III
4.7. MPEG location lookup table
frame header:
bytes. All unused flags must be cleared. The first byte is for
TCOP
78.Rock & Roll
These are the directories you'll be needing:
a content descriptor. The body consists of the actual text. The
6.Grunge
Also in there is a file called Id3lib.pas which has the interface to the dll
/A Analog transfer from media
/A Analog transfer from media
%x0000000 00000000
size of ten bytes in every frame. The size is calculated as frame

be used after every entry (name, event etc.) in a frame with the
62.Pop/Funk
one with the same contents. A linked frame is to be considered as
16-bit unicode 2.0 (ISO/IEC 10646-1:1993, UCS-2). Unicode strings
to the existing frame, after the center channel. The bass channel is
4.1. Unique file identifier
others, and derivative works that comment on or otherwise explain it
"POSS" frame in each tag.
Copyright (C) Martin Nilsson 1998. All Rights Reserved.
/AAC Advanced audio compression
picture is to attach.
begin with "T". Only text frame identifiers begin with "T", with the
Content descriptor $00 (00)
break something, e.g. a signature. If the contents are changed,
each tag.
66.New Wave
Text encoding $xx
4.26. Encryption method registration
audio file, frames with timecodes in different locations in the file
in a similar way to the predefined types in the "TMED" frame, but
Frame identifier $xx xx xx
followed by a Unicode NULL ($FF FE 00 00 or $FE FF 00 00).
Document: id3v2.3.0.txt 3rd February 1999
section 5.
specific webpage.
6. Copyright
115.Folklore
altered, so they won't be affected by the decoding process. Therefore

version number and a size descriptor in the ID3v2 header.
$FD audio end (start of silence)
TIT2
/AD ADD
amount of volume that should be returned to the next echo bounce. $00
The 'Official artist/performer webpage' frame is a URL pointing at
each in their individual "APIC" frame, but only one with the same
by comparing people's profiles. The frame is very simple. It contains
frame size. If ISO-8859-1 is used this byte should be $00, if Unicode
1. Table of contents
and
kind, provided that a reference to this document is included on all
This document describes the ID3v2.3.0, which is a more developed
[ISRC] ISO 3901:1986
$01 Absolute time, 32 bit sized, using MPEG frames as unit
The 'Content group description' frame is used if the sound belongs to
4.2.1 TDLY Playlist delay
The following genres is defined in ID3v1
character, but there may only be one currency of each type.
smaller than the size given in the head of the tag. A possible
%abc00000 %ijk00000
This flag indicates wether or not the frame is enrypted. If set
89.Bluegrass
part of a set the audio came from. This frame is used if the source
audiofile indeed is encrypted, the whole file may be considered
TEXT
TMED
/A Analog transfer from media
Locators (URL).", RFC 1738, December 1994.
4.28. Private frame
into this tag, a URL [URL] field, where a reference to the file where
"RBUF" frame in each tag.
How to start
4.7. MPEG location lookup table
45.Meditative
followed by a Unicode NULL ($FF FE 00 00 or $FE FF 00 00).
124.Euro-Hous without taking the proper means to compensate, e.g. recalculating
audio stream. In these cases, the size of the buffer can be
'Premix left to right' is the amount of left sound to be mixed in the
$49 44 33 yy yy xx zz zz zz zz
RX Remix
4.2.1 TRCK Track number/Position in set
'Method symbol' contains a value that is associated with this method
TIT2
syllable (or whatever size of text is considered to be convenient by
entered, 'Content descriptor' is $00 (00) only. Newline characters
Technical committee / subcommittee: JTC 1 / SC 29
The 'Buffer size' should be kept to a minimum. There may only be one
Contact URL $00
4.17. Play counter
The use of linked files should however be used sparingly since there
8.Jazz
4.4. Involved people list
be described with the 'Peak volume right' and 'Peak volume left'

34.Acid
Copyright (C) Martin Nilsson 1998. All Rights Reserved.
either used or reserved for future use.
And, last but not least, there is a delphi project in cvs
Milliseconds between reference $xx xx xx
4.25. Commercial frame
regarding the encrypted audio should be sent to the email address
four bytes absolute CD-frame address per track, and not with absolute
TCOM
3.3.1. Frame header flags
'recommended buffer size' frame should be included in every tag.
information about encryption method registration.
If nothing else is said a string is represented as ISO-8859-1
content. The most significant bit (MSB) of a byte is called 'bit 7'
the transaction, encoded according to ISO 4217 [ISO-4217] alphabetic
$01 32x32 pixels 'file icon' (PNG only)
/2.5 MPEG 2.5
'Frame size' and 'Encoding' follows 'MIME type' [MIME] represented as
4.15. Attached picture
media type, e.g. "(CD/A)" or "(VID/PAL/VHS)".
Extensions (MIME) Part One: Format of Internet Message Bodies",
$01 end of initial silence
TOWN
Terminating the start events such as "intro start" is not required.
4.16. General encapsulated object
3.3.2. Default flags
6) (add your code which uses id3lib)
appears in a file. Numbers preceded with $ are hexadecimal and
$01 Absolute time, 32 bit sized, using MPEG [MPEG] frames as unit
PCM Pulse Code Modulated audio
as the numerig content types, e.g. "(RX)".
The two biggest design goals were to be able to implement ID3v2
streamed.
The default settings for the frames described in this document can be
character is forbidden. In ISO-8859-1 a new line is represented, when
4.3. URL link frames
$01 end of initial silence
described in the "TALB" frame is divided into several mediums, e.g. a
The 'Original lyricist(s)/text writer(s)' frame is intended for the
The 'Size' frame contains the size of the audiofile in bytes,
[PNG] Portable Network Graphics, version 1.0
performer(s) of the original recording, if for example the music in
recommended by the server using this frame. If the 'embedded info
not be broken apart with a sync (both the syllable and the comma
three characters according to ISO-639-2. If more than one language is
The tempo descriptor is followed by a time stamp. Every time the
character, but there may only be one currency of each type.
in a similar way to the predefined types in the "TMED" frame, but
counter, intended to be increased with one for every time the file is
4.15. Attached picture
it is likely to not be readable. The flags field is defined as

The 'Original lyricist(s)/text writer(s)' frame is intended for the
music in the file should be a cover of a previously released song.
The 'Publisher' frame simply contains the name of the label or
The 'Official internet radio station homepage' contains a URL
Code [ISRC] (12 characters).
Text encoding $xx
4.2.2 TXXX User defined text information frame
database that may contain more information relevant to the content.
107.Booty Bass
This frame indicates if the actual audio stream is encrypted, and by
within "(" and ")" and are optionally followed by a text refinement,
/IV Type IV cassette (metal)
Reverb right (ms) $xx xx
adjust the audio. If the volume peak levels are known then this could
without parentheses. If this frame is not present audio type is
containing the order number of the audio-file on its original
17.Rock
URL
content type $03 - $04.
part of a set the audio came from. This frame is used if the source
$05 Leaflet page
/II Type II cassette (chrome)
31.Trance
represented as $00 00 02 01.
4.12. Relative volume adjustment
This is another subjective, alignment frame. It allows the user to
$12 Illustration
ID3v2 tag as compatible as possible with existing software. There is
$06 verse start

Bits for milliseconds dev. $xx
be one "EQUA" frame in each tag.
$14 theme end
Encoding: $00 ISO-8859-1 [ISO-8859-1] character set is used => $00
MPEG 2 layer I, II and III [MPEG] and MPEG 2.5. This value may not be
to the first giving a range from 2 - 510 BPM, since $00 and $01 is
occurring in front of the first syllable of a new word. This is also
file, since some media doesn't allow the desired length of the
Each reference consists of two parts; a certain number of bits, as
the types as ID3v1.1 did or, since the category list would be
three or higher it should simply ignore the whole tag. Version and
Text encoding $xx
/76 76 cm/s
60.Top 40
4.18 POPM Popularimeter
excluding the ID3v2 tag, represented as a numeric string.
This frame delivers information to the listener of how far into the
content types is defined in ID3v2 and is implemented in the same way
separating words should mark the beginning of a new word, thus
the frame is given, and additional ID data, if needed. Data should be
$01 is lyrics
each channel while the file is played. The purpose is to be able to
7) Compile.
The bitorder in ID3v2 is most significant bit first (MSB). The
TEXT
[ID3v2] Martin Nilsson, "ID3v2 informal standard".
91.Gothic Rock
ended with a ")" character. This is optionally followed by a
4.14. Reverb
29.Jazz+Funk
comment frame in each tag, but only one with the same language and
rewrite the entire file. The value of the padding bytes must be $00.
4.2.1 TPE1 Lead performer(s)/Soloist(s)
entered, 'Content descriptor' is $00 (00) only. Newline characters
Content descriptor $00 (00)
$11 mainpart end
The 'Buffer size' should be kept to a minimum. There may only be one
string containing the total numer of tracks/elements on the original
%11111111 111xxxxx
defined.
between the values in this frame. Three equal adjustments for three
4.22. Position synchronisation frame
/78 78.26 rpm
The 'Internet radio station owner' frame contains the name of the
strings may be omitted, leaving only their terminations. MIME type is
section 3.2.
The 'Internet radio station owner' frame contains the name of the
for this specific database implementation. Questions regarding the
$E0-$EF not predefined sync 0-F
$14 theme end
bytes. All unused flags must be cleared. The first byte is for
90.Avantgarde
CR Cover
$05 outro end
the software that encounters them. At the start of every frame there
$00.
unknown and the file, excluding the tag, is altered. This does not
attributes of the tag. These attributes are currently defined as
The header is:
$06 verse start
119.Freestyle
and distributed, in whole or in part, without restriction of any
in the audio file as text, this time, however, in sync with the
numerical value where "." is used as decimal seperator. In the price
4.4. Involved people list
mainpart of the audio. The BPM is an integer and represented as a
Flags $xx xx
part. The tempo is in BPM described with one or two bytes. If the
4.2.1 TORY Original release year
58.Cult
responsible for this specific encrypted audio file. Questions
35.House
be one "MLLT" frame in each tag.
Coding of moving pictures and associated audio for digital storage
Terminated strings are terminated with $00 if encoded with ISO-8859-1
begins with "W". All URL link frames have the following format:
reverb is applied symmetric). There may only be one "RVRB" frame in
$01 end of initial silence
/PAL PAL
4.27. Group identification registration
responsible for this specific encrypted audio file. Questions
recording(/source of sound) which the audio in the file is taken
TENC
Picture type: $00 Other
of information in the tag. The tag consists of a header, frames and
/78 78.26 rpm
numeric string containing the total number of parts in the set. E.g.
flags' should be set. This bit should only be set if the tag
is unavailable or has been removed, and must not be interpreted to
4.16. General encapsulated object
others, and derivative works that comment on or otherwise explain it
by a terminated string with a short description of the product. The

end of the ID3 tag), making the size of all the frames together
to the same group.
119.Freestyle
stage or on the screen in sync with the audio. The header includes a
To identify with which method a frame has been encrypted the
TPE1
TSIZ
Compressed
number of "PRIV" frames as low as possible.
be used after every entry (name, event etc.) in a frame with the
The 'Publisher' frame simply contains the name of the label or
4.2.2 TXXX User defined text information frame
Name of seller $00 (00)
120.Duet
(debug) /nodefaultlib:"MSVCRTD" or(release) /nodefaultlib:"MSVCRT"
IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF
Text encoding $xx
RX Remix
RAD Radio
nearest byte) for every equalisation band in the following format,
120.Duet
Owner identifier $00
follows.
binary picture data. This two last fields may be omitted if no
attributes of the tag. These attributes are currently defined as
4.15. Attached picture
4) Add /D ID3LIB_LINKOPTION=1 to your project options (settings, C/C++ tab)
representation of the adjustment. This is normally $10 (16 bits) for
subject to unsynchronisation.
kinds of alterations, including adding more padding and reordering
If the bass channel adjustment is present the following is appended
which uses the allready compiled dll.
frame identifiers begins with "W". Only URL link frame identifiers
header is considered separate from the header proper, and as such is
Group dependent data
Owner identifier $00
than one "AENC" frames in a tag, but only one with the same 'Owner
Description $00 (00)
$15-$DF reserved for future use
[PNG] Portable Network Graphics, version 1.0
This frame contains a picture directly related to the audio file.
information blocks, called frames, whose format need not be known to
63.Jungle
$14 theme end
16-bit unicode 2.0 (ISO/IEC 10646-1:1993, UCS-2). Unicode strings
4. Preserved if tag is altered, preserved if file is altered.
ID3 tag version 2.3.0
contains a, now corrected, false synchronisation. The bit should
117.Power Ballad

Reverb left (ms) $xx xx
4.2.2 TXXX User defined text information frame
with information such as where the album can be bought. There may be
Owner identifier $00
number of "PRIV" frames as low as possible.
4.15. Attached picture
/76 76 cm/s
$02 Absolute time, 32 bit sized, using milliseconds as unit
The Second one (id3lib/libprj) creates the .lib file for static linking.
4.2.1 TYER Year
The following type and refinements are defined:
information, such as equalisation curves, as well as related meta
A tag must contain at least one frame. A frame must be at least 1
audiofile in a similar way to the other "T"-frames. The frame body
WPAY
that its program uses and does not fit into the other frames. The

Peak volume bass $xx xx (xx ...)
header in the same order as the flags indicating the additions. I.e.
4.2.1 TOPE Original artist(s)/performer(s)
$05 outro end
This document describes the ID3v2.3.0, which is a more developed
exception of the "TXXX" frame. All the text information frames have
(debug) /nodefaultlib:"libcd" or(release) /nodefaultlib:"libc"
by a terminated string with a short description of the product. The
and MPEG-2.5, but may work with other types of encoded audio.
i.e. the beginning of the next frame. If this frame is used in the
directly related to the contents title (e.g. "Op. 16" or "Performed

frame, if present, to skip initial silence and silence at the end of
4.2.1 TOPE Original artist(s)/performer(s)
TDAT
syncsignal, no software will attempt to play the tag. If, for any
format of a correct sync that should be altered by ID3 encoders is as
but may be empty. There may be several pictures attached to one file,
Text encoding $xx
The three byte language field is used to describe the language of the
Size of padding $xx xx xx xx
/NTSC NTSC
$01 Standard CD album with other songs
long.
contains a terminated string with the involvement directly followed
characters 0-9 only.
to the first giving a range from 2 - 510 BPM, since $00 and $01 is
between every song in a playlist. The player should use the "ETC"
4.2.1 TALB Album/Movie/Show title
Lyrics/text
WOAR
string with a URL [URL] containing an email address, or a link to a

and
string, followed by the actual string. There may be more than one
Price string $00
$0C Lyricist/text writer
last thing is the ability to include a company logotype. The first of
All the other flags should be cleared. If one of these undefined
xx "glan" $00 xx xx "ces" $00 xx xx
The 'BPM' frame contains the number of beats per minute in the
WOAR
4.27 GRID Group identification registration
exception of the "TXXX" frame. All the text information frames have
in a similar way to the predefined types in the "TMED" frame, but
Reverb feedback, left to right $xx
information should be ignored and not be displayed. All URL link
Left to left means the sound from the left bounce to be played in the
4.6. Event timing codes
TPE4
4.2.1 TFLT File type
play. There may only be one "PCNT" frame in each tag. When the
should be sorted in chronological order. The sync can be considered
10.New Age
the beat description occurs. There may only be one "SYTC" frame in
Followed by a list of key events in the following format:
format YYYYMMDD, describing for how long the price is valid. After
MC MC (normal cassette)
single beat-stroke followed by a beat-free period.
4.19. Recommended buffer size
filename. The filename is case sensitive and includes its suffix.
4.2.1. Text information frames - details
21.Ska
'lock on to' the audio. Since the ID3v2 tag doesn't contain a valid
'bytes between reference' and 'milliseconds between reference' points
Bits for milliseconds dev. $xx
16.Reggae
28.Vocal
Frame identifier $xx xx xx
8-bit single-byte coded graphic character sets, Part 1: Latin
TENC
or, if signed, as proof. Note that the "USER" and "TOWN" frames are
This flag indicates wether or not the frame is enrypted. If set
88.Celtic
$08 interlude start
/9 9.5 cm/s
k - Grouping identity
106.Symphony
Description $00 (00)
must begin with the Unicode BOM ($FF FE or $FE FF) to identify the
B)***Your project wants to link id3lib static, and has mfc linked dynamic or has no MFC:
same language and content descriptor.
TLAN
4. Declared ID3v2 frames
The 'adjustment bits' field defines the number of bits used for
unsychronisation, including padding, excluding the header but not
$0D momentary unwanted noise (Snap, Crackle & Pop)
Text encoding $xx
in a tag, but only one with the same 'Owner identifier'.
ID3v2 tag as compatible as possible with existing software. There is
containing an email address, or a link to a location where an email
1 Frame is encrypted.
and distributed, in whole or in part, without restriction of any
4.23. Terms of use
LD Laserdisc
[UNICODE] ISO/IEC 10646-1:1993.
The version is followed by one the ID3v2 flags field, of which
their usage.
the user to say how much he wants to increase/decrease the volume on
4.27 GRID Group identification registration
TCOP
1 Frame should be discarded.
follows
Time stamp $xx (xx ...)
containing an email address, or a link to a location where an email
Do bear in mind, that if a compression scheme is used by the encoder,
divided into the following classes. The flags may be set differently
A few considerations regarding whitespace characters: Whitespace
the tag with this frame. The 'Owner identifier' is a null-terminated
The third bit (bit 5) should be used as an 'experimental
altered, so they won't be affected by the decoding process. Therefore
significant bit (bit 7) is set to zero in every byte, making a total
$01 Absolute time, 32 bit sized, using MPEG [MPEG] frames as unit
entered, 'Content descriptor' is $00 (00) only. Newline characters
represented as , or if newlines are
TIT1
Embedded info flag %0000000x
contains a frame identifier, which is the frame that should be linked

in a similar way to the predefined types in the "TMED" frame, but
The absence of this frame means only that the copyright information
73.Acid Punk
The 'Payment' frame is a URL pointing at a webpage that will handle
Size of padding $xx xx xx xx
Text encoding $xx
1 Frame should be discarded.
as the numerig content types, e.g. "(RX)".
Image format is the MIME type and subtype [MIME] for the image. In
Code [ISRC] (12 characters).
reverb is applied symmetric). There may only be one "RVRB" frame in
/WAC Wax cylinder
described.
be left zeroed. After the 'preview length' field follows optionally a
Owner identifier $00
Content type $xx
Tempo data

The version is followed by one the ID3v2 flags field, of which
three characters according to ISO-639-2. If more than one language is
software with ID3v2.2.0 and below support should encounter version
space character (making five characters), is intended for the
bytes. All unused flags must be cleared. The first byte is for
contains a terminated string with the involvement directly followed
The 'Part of a set' frame is a numeric string that describes which
and free for everyone to use, without the need to set the
4.2. Text information frames
possibility to put only a link to the image file by using the 'MIME
CD TOC
3.1. ID3v2 header
but it's an easier solution than if one tries to achieve the same
each tag.
4.2.1 TCOM Composer
Generic coding of moving pictures and associated audio information,
Picture data
organisation that encoded the audio file. This field may contain a
predefine an equalisation curve within the audio file. There may only
Picture type $xx
within "(" and ")" and are optionally followed by a text refinement,
3.3. ID3v2 frames overview
follows
Codes for the representation of names of languages, Part 2: Alpha-3
reverb is applied symmetric). There may only be one "RVRB" frame in
padded in the beginning (highest bits) when 'bits used for volume
There may be more than one "POPM" frame in each tag, but only one
[ISO-8859-1]. There may be more than one "WXXX" frame in each tag,
/II Type II cassette (chrome)
j - Encryption
Rating $xx
49.Gothic
frame header:
and
the types as ID3v1.1 did or, since the category list would be
a certain number of bits, as defined in 'bits for milliseconds
The three byte language field is used to describe the language of the
Data Format Specification version 3.3", RFC 1950, May 1996.
4.2.1 TRCK Track number/Position in set
4.22 POSS Position synchronisation frame
Contact URL $00
The 'File owner/licensee' frame contains the name of the owner or
77.Musical
the frame.
The 'time stamp' is set to zero or the whole sync is omitted if
4.2. Text information frames
a content description as terminated string, encoded as 'Encoding'.
allowed, with $0A only. Frames that allow different types of text
4.21. Linked information
TIT1
Sync identifier (terminator to above string) $00 (00)
None.
4.2.1 TCOP Copyright message
Text encoding $xx
followed by encoding, language and content descriptors and is ended

frame might be used. After the header follows one byte describing
TDAT
$12 verse end
Part 3: Audio.
After the 'Owner identifier', a pointer to an unencrypted part of the
TMED
None.
$01 Absolute time, 32 bit sized, using MPEG frames as unit
but may be empty. There may be several pictures attached to one file,
/DD DDD
of the seller as the last field in the frame. There may only be one

The frame ID made out of the characters capital A-Z and 0-9.
$06 Media (e.g. lable side of CD)
of the text or lyrics in the recording. They are seperated with the
involvement and so on. There may only be one "IPLS" frame in each
type declared as picture type $01 and $02 respectively. There is the
/9 9.5 cm/s
audio file, frames with timecodes in different locations in the file
used in the text their language codes should follow according to
33.Instrumental
70.Trailer
be at least 32-bits long to begin with.
The 'Lead artist(s)/Lead performer(s)/Soloist(s)/Performing group' is
the beat description occurs. There may only be one "SYTC" frame in
size descriptor that allows software to skip unknown frames.
112.Club
TPUB
This frame contains a brief description of the terms of use and
the first frame in the stream. The frame layout is:
The 'Original lyricist(s)/text writer(s)' frame is intended for the
Text encoding $xx
file, is 10 bytes as follows:
in the audio file as text, this time, however, in sync with the
/A Analog transfer from media
size of ten bytes in every frame. The size is calculated as frame
TDLY
altered, so they won't be affected by the decoding process. Therefore
/80 80 rpm
revoked.
/I ISDN
/A Analog transfer from media

between every song in a playlist. The player should use the "ETC"
'Frame size' and 'Encoding' follows 'MIME type' [MIME] represented as
$01 Absolute time, 32 bit sized, using MPEG frames as unit
increase for every reference. If this value is two then the first
124.Euro-Hous Frames that may be linked and need no additional data are "IPLS",
be one "RVAD" frame in each tag.
4.4. Involved people list
is an identifier that explains the frames' format and content, and a
Extensions (MIME) Part One: Format of Internet Message Bodies",
tags into the audio stream though. If the clients connects to
ID3v2 tag as compatible as possible with existing software. There is
audio stream. In these cases, the size of the buffer can be
/A Analog transfer from media
copyright holder of the original sound, not the audio file itself.
The 'Size' frame contains the size of the audiofile in bytes,
The header is:
bytes. These flags are described in section 3.3.1.
$01 end of initial silence
9. Author's Address
Size of padding $xx xx xx xx
/VHS VHS
Bits for bytes deviation $xx
altered functionallity.
[ISO-8859-1] characters in the range $20 - $FF. Such strings are
tempo in the music changes, a tempo descriptor may indicate this for
21.Ska
organisation that encoded the audio file. This field may contain a
contains a frame identifier, which is the frame that should be linked
Valid until
WOAR
4.26. Encryption method registration
Time stamp format $xx
/8CA 8-track tape cassette
'lock on to' the audio. Since the ID3v2 tag doesn't contain a valid
to ISO 4217 [ISO-4217] alphabetic currency code, followed by a
the same content.
revision will never be $FF.
[URL] T. Berners-Lee, L. Masinter & M. McCahill, "Uniform Resource
As the tag consists of a tag header and a tag body with one or more
exception of the "TXXX" frame. All the text information frames have
Bits for bytes deviation $xx
frames, all the frames consists of a frame header followed by one or
a larger category of sounds/music. For example, classical music is
4.3.1 WOAS Official audio source webpage
[ISO-8859-1] ISO/IEC DIS 8859-1.
Relative volume change, right back $xx xx (xx ...)
the beginning of every track on the CD should be described with a
102.Chanson
divided into the following classes. The flags may be set differently
containing an email address, or a link to a location where an email
then the first should be 'replaced' with the second.
as a terminated string encoded with ISO 8859-1 [ISO-8859-1]. The
frame ID, size and encoding fields, with a 'price payed' field. The
3.2. ID3v2 extended header
address can be found, that belongs to the organisation responsible
textstring. The description has a maximum length of 64 characters,
from.
Rating $xx
revision will never be $FF.
$E0-$EF not predefined sync 0-F
15.Rap
4. Preserved if tag is altered, preserved if file is altered.
part of the tag (i.e. only one "RVRB" frame allowed, whether it's
1) Rename config.h.win32 to config.h
The 'Subtitle/Description refinement' frame is used for information
the frame is given, and additional ID data, if needed. Data should be
of information in the tag. The tag consists of a header, frames and
revisions are backwards compatible while major versions are not. If
counter reaches all one's, one byte is inserted in front of the
but if you got it working on Borland or other compilers, drop me a mail, or better, add a patch
'Frame size' and 'Encoding' follows 'MIME type' [MIME] represented as
time. This frame requires a present and valid "TRCK" frame, even if
15.Rap
/6 mode 6, 44.1 kHz/16 bits, 'wide track' play
$01 Unicode [UNICODE] character set is used => $00 00 is
4. Declared ID3v2 frames
TRDA
The 'Software/Hardware and settings used for encoding' frame
Every tag that is picked up after the initial/first tag is to be
/I \\include /I \\include\\id3
The equalisation bands should be ordered increasingly with reference

The 'Playlist delay' defines the numbers of milliseconds of silence
$0F During performance
4.23. Terms of use frame
$01 Standard CD album with other songs
combination during the unsynchronisation.
same language and content descriptor.
organisation that encoded the audio file. This field may contain a
and free for everyone to use, without the need to set the
$01 Absolute time, 32 bit sized, using MPEG [MPEG] frames as unit
/6 mode 6, 44.1 kHz/16 bits, 'wide track' play
/II Type II cassette (chrome)
TSIZ
descriptor is entered, 'Content descriptor' is $00 (00) only.
play. There may only be one "PCNT" frame in each tag. When the
j - Encryption
4) Add /D ID3LIB_LINKOPTION=1 to your project options (settings, C/C++ tab)
The 'Software/Hardware and settings used for encoding' frame
the software that encounters them. At the start of every frame there

"Strangers in the night" $0A "Exchanging glances"
break something, e.g. a signature. If the contents are changed,
the file should be a cover of a previously released song. The text
decoding software uses a syncsignal, embedded in the audiostream, to
altered functionallity.
information, such as equalisation curves, as well as related meta
The ID3 tag described in this document is mainly targeted at files
2.Country
be at least 32-bits long to begin with.
size descriptor that allows software to skip unknown frames.
performer(s) of the original recording, if for example the music in
85.Bebob
70.Trailer
"Strang" $00 xx xx "ers" $00 xx xx " in" $00 xx xx " the" $00 xx xx
$0A variation start
The Second one (id3lib/libprj) creates the .lib file for static linking.
101.Speech
$49 44 33 yy yy xx zz zz zz zz
should be before the sync).
allowed in the comment text string. There may be more than one
/I Type I cassette (ferric/normal)
Language $xx xx xx
Bits for bytes deviation $xx
contains a terminated string with the involvement directly followed
4.15. Attached picture
but other types may be used, not for these types though. This is used
Every tag that is picked up after the initial/first tag is to be
Encryption data
recommended by the server using this frame. If the 'embedded info
which picture format is used. In the event that the MIME media type
symbol' contains a value that associates the frame with this group
The 'Buffer size' should be kept to a minimum. There may only be one
consists of a binary dump of the Table Of Contents, TOC, from the CD,
reserved. $00 is used to describe a beat-free time period, which is
This is a more subjective function than the previous ones. It allows
$F0-$FC reserved for future use
$01 Standard CD album with other songs
The 'Subtitle/Description refinement' frame is used for information
TPE1
$0C time change
The purpose of this frame is to specify how good an audio file is.
beginning of the file.
$01 Unicode [UNICODE] character set is used => $00 00 is
information, such as title, performer, copyright etc.

organisation responsible for this grouping. Questions regarding the
header is a descriptor of how much the 'frame counter' should
This frame is indended for any kind of full text information that
$0D Recording Location
optional padding. A field is a piece of information; one value, a
Text encoding $xx
76.Retro
in a tag, but only one with the same 'Owner identifier'.
without knowledge in why the frame was flagged read only and
[JFIF] JPEG File Interchange Format, version 1.02
encoded. Hardware refers to hardware encoders, not the computer on
4.9. Unsychronised lyrics/text transcription
In the frame header the size descriptor is followed by two flags
transmission or coding problems resulting in interruptions in the
This frame enables several competing offers in the same tag by
This is a more subjective function than the previous ones. It allows
by new software. Unsynchronisation may only be made with MPEG 2 layer
If a frame is longer than it should be, e.g. having more fields than
c - Experimental indicator
$02 is text transcription
audio stream. In these cases, the size of the buffer can be
This frames is always four characters long (until the year 10000).
And the third one (id3lib/id3com) creates a dll with com interface. A Visual basic demo using it is included.
$02 intro start
predefined media types found in the list below. References are made
1 Frame is encrypted.
In this frame any type of file can be encapsulated. After the header,
40.AlternRock
other vocal activities. The head includes an encoding descriptor and
beginning of a file the value is always 0. There may only be one
Owner identifier $00
As the tag consists of a tag header and a tag body with one or more
the frames and the headers, in other words the padding. The extended
A. Appendix A - Genre List from ID3v1
4.20. Audio encryption
Text encoding $xx
The following type and refinements are defined:
4.3.1 WCOP Copyright/Legal information
RX Remix
organisation that encoded the audio file. This field may contain a

revoked.
Content descriptor $00 (00)
There may be more than one "POPM" frame in each tag, but only one
of the seller as the last field in the frame. There may only be one
Generic coding of moving pictures and associated audio information,
counter thus making the counter eight bits bigger. The counter must
be left zeroed. After the 'preview length' field follows optionally a
/A Analog transfer from media
Unicode strings which are NULL-terminated may have the Unicode BOM
/5 mode 5, 44.1 kHz/16 bits, linear
out bytes and milliseconds respectively.
85.Bebob
67.Psychadelic
software with ID3v2.2.0 and below support should encounter version
starts. It is represented as a string with a maximum length of three
3.3.2. Default flags
Distribution of this document is unlimited.
DVD DVD
The ownership frame might be used as a reminder of a made transaction
Text encoding $xx
28.Vocal
The second bit (bit 6) indicates whether or not the header is
The following type and refinements are defined:
5) Add the following include dirs to your program:
3.2. ID3v2 extended header
Text encoding $xx
string containing the total numer of tracks/elements on the original

Picture type $xx
79.Hard Rock
audio file, frames with timecodes in different locations in the file
the process of paying for this file.
ID3v2 version $03 00
4.27 GRID Group identification registration
/A Analog transfer from media
type declared as picture type $01 and $02 respectively. There is the
in a project. The 'Involved people list' is a frame containing the
DCC DCC
frame, the 3rd reference the 6th frame etc. In a similar way the
indicates usage.
The ID3v2 tag header, which should be the first information in the
[ID3v2] Martin Nilsson, "ID3v2 informal standard".
the piece (e.g. "Adagio", "Hurricane Donna").
and MPEG-2.5, but may work with other types of encoded audio.
URL $00
4.28. Private frame
of the original recording (or source of sound), if for example the
in a tag if the audio contains more than one performer, but not with
Bits for bytes deviation $xx
The header is:
The third one is not too much tested, it was created outside this project but
/I Type I cassette (ferric/normal)
revision will never be $FF.
frame identifiers begins with "W". Only URL link frame identifiers
webpage where the terms of use and ownership of the file is

61.Christian Rap
/71 71.29 rpm
the frame is given, and additional ID data, if needed. Data should be
(debug) /nodefaultlib:"MSVCRTD" or(release) /nodefaultlib:"MSVCRT"
WPAY
The 'Initial key' frame contains the musical key in which the sound
playlist that features better audiofiles more often than others or it
additional information. This information will be added to the frame
4.1. Unique file identifier
be at least 32-bits long to begin with.
one byte indicating with which method it was encrypted will be
$49 44 33 yy yy xx zz zz zz zz
bytes. These flags are described in section 3.3.1.
This is another subjective, alignment frame. It allows the user to
The frame ID is followed by a size descriptor, making a total header
Reverb feedback, left to right $xx
TLAN
Extensions (MIME) Part One: Format of Internet Message Bodies",
byte big, excluding the header.
%abc00000 %ijk00000
13.Pop
frame size. If ISO-8859-1 is used this byte should be $00, if Unicode
different programs may require different 'nodefaultlib' 's, or none at all, these worked for me.
TDLY
The 'Subtitle/Description refinement' frame is used for information
The 'Content group description' frame is used if the sound belongs to
86.Latin
4.19. Recommended buffer size
This frame delivers information to the listener of how far into the
follows
59.Gangsta
play. There may only be one "PCNT" frame in each tag. When the
subsequent frequencies. A frequency should only be described once in
4.2.1 TIT1 Content group description

/80 80 rpm
For applications like streaming audio it might be an idea to embed
reverb is applied symmetric). There may only be one "RVRB" frame in
subject to unsynchronisation.
The 'Lyricist(s)/Text writer(s)' frame is intended for the writer(s)
$0F sustained noise end
Thijmen
played. The email is a terminated string. The rating is 1-255 where
Text encoding $xx
$07 refrain start
4.3.2 WXXX User defined URL link frame
/DD DDD
$01 Absolute time, 32 bit sized, using MPEG [MPEG] frames as unit
starts. It is represented as a string with a maximum length of three
4.3.1 WORS Official internet radio station homepage
with information such as where the album can be bought. There may be
and distributed, in whole or in part, without restriction of any
96.Big Band
Abolute time means that every stamp contains the time from the
Where yy is less than $FF, xx is the 'flags' byte and zz is less than
file or alone in a binary file. It is recommended that this method is
4.24. Ownership frame
as a numeric string.
thijmen@id3lib.org
4.3.1 WCOP Copyright/Legal information
music in the file should be a cover of a previously released song.
4.18 POPM Popularimeter
and the least significant bit (LSB) is called 'bit 0'.
47.Instrumental Rock
should not be used for the actual database queries. The string
A few considerations regarding whitespace characters: Whitespace
The 'File owner/licensee' frame contains the name of the owner or
frames or enlarge existing frames within the tag without having to
For applications like streaming audio it might be an idea to embed
4.10 SYLT Synchronized lyric/text
explosion on-stage, turning on your screensaver etc.
How to start
4.26 ENCR Encryption method registration
break something, e.g. a signature. If the contents are changed,
copyright holder of the original sound, not the audio file itself.
Sometimes the server from which a audio file is streamed is aware of
does not fit in any other frame. It consists of a frame header
4.10 SYLT Synchronized lyric/text
To indicate usage of the unsynchronisation, the first bit in 'ID3
The absence of this frame means only that the copyright information
[ISO-8859-1] characters in the range $20 - $FF. Such strings are
standard [ID3v2]. The informal standard is released so that
encoding have a text encoding description byte directly after the
not be modified in any way and reissued as the original document.
4.2.1 TLEN Length
$09 theme start
$12 verse end
60.Top 40
The 'Publishers official webpage' frame is a URL pointing at the
The 'Size' frame contains the size of the audiofile in bytes,
audio is delivered when bought according to the following list:
content descriptor. There may only be one picture with the picture
$04 Stream over the Internet
Sometimes the server from which a audio file is streamed is aware of
represented as $00 00 02 01.
Description $00 (00)
$05 Leaflet page
between the values in this frame. Three equal adjustments for three
TPE3
various ways, such as musicians and technicians, the 'Text
7. References
exception of the "TXXX" frame. All the text information frames have
padded in the beginning (highest bits) when 'bits used for volume
information frame of its kind in an tag. If the textstring is
should not be used for the actual database queries. The string
Bits used for volume descr. $xx

RFC 2045, November 1996.
4.24. Ownership frame
Position $xx (xx ...)
/33 33.33 rpm
4.2.1 TIT2 Title/songname/content description
The original location is http://sourceforge.net/projects/id3com
The default settings for the frames described in this document can be
Software that isn't told otherwise may safely remove such frames. The
by a terminated string with the involvee followed by a new
124.Euro-Hous $01 Absolute time, 32 bit sized, using MPEG [MPEG] frames as unit
4.2.1 TPE3 Conductor/performer refinement
79.Hard Rock
to the existing frame, after the center channel. The bass channel is
For a more accurate description of the tempo of a musical piece this
characters. The ground keys are represented with "A","B","C","D","E",
DIG Other digital media
channel and bit 1 is used to indicate the left channel. 1 is
So far, it has only been confirmed it compiles on visual C 6.0 (service pack 5),
4.8. Synced tempo codes
114.Samba
MIME type $00
Compressed
Valid until
consists of a binary dump of the Table Of Contents, TOC, from the CD,
revision will never be $FF.
reserved. $00 is used to describe a beat-free time period, which is
/AD ADD
The 'Encoded by' frame contains the name of the person or
Reverb feedback, left to left $xx
4.2.1 TEXT Lyricist/Text writer
i.e. the beginning of the next frame. If this frame is used in the
65.Cabaret
This frame is intended for music that comes from a CD, so that the CD
ID3v2 size 4 * %0xxxxxxx
content descriptor, represented with as terminated textstring. If no
1 Frame is encrypted.
/AAC Advanced audio compression
reserved. $00 is used to describe a beat-free time period, which is
[MPEG] ISO/IEC 11172-3:1993.
each channel while the file is played. The purpose is to be able to
frame but only with different contents. It is recommended to keep the
This frame is indended for any kind of full text information that
/3 mode 3, 32 kHz/12 bits, nonlinear, low speed
4) Add /D ID3LIB_LINKOPTION=1 to your project options (settings, C/C++ tab)
This document is an informal standard and replaces the ID3v2.2.0
information about encryption method registration.
5) Add the following include dirs to your program:
In the frame header the size descriptor is followed by two flags
containing an email address, or a link to a location where an email
correct parsing of the tag information, hence the extended header is
5.Funk
This flag tells the software what to do with this frame if it is
4) Add /D ID3LIB_LINKOPTION=3 to your project options (settings, C/C++ tab) (*note this is a different option than above)
6) (add your code which uses id3lib)
$01 Absolute time, 32 bit sized, using MPEG frames as unit
content type $03 - $04.
header in the same order as the flags indicating the additions. I.e.
4.19. Recommended buffer size
This frame indicates if the actual audio stream is encrypted, and by
4.2.1 TCON Content type

unsychronisation, including padding, excluding the header but not
The 'Content group description' frame is used if the sound belongs to
the user to say how much he wants to increase/decrease the volume on
decoding software uses a syncsignal, embedded in the audiostream, to
$F0-$FC reserved for future use
code. Technical committee / subcommittee: TC 37 / SC 2
9) distribute your program including id3lib.dll
byteorder in multibyte numbers is most significant byte first (e.g.
$0B Composer
follows:
frames begin with a null-terminated string with a URL [URL]
4.19. Recommended buffer size
bundling all needed information. That makes this frame rather complex
starts. It is represented as a string with a maximum length of three
101.Speech
See section 3.3.1, flag j for more information.
Premix right to left $xx
In the frame header the size descriptor is followed by two flags
string with a URL [URL] containing an email address, or a link to a
Size of padding $xx xx xx xx
4.2.1 TPE4 Interpreted, remixed, or otherwise modified by
/6 mode 6, 44.1 kHz/16 bits, 'wide track' play
If a total revision of the ID3v2 tag should be needed, there is a
Abstract
are allowed in the text. There may be more than one 'Unsynchronised
that is a contact URL, with which the user can contact the seller,
byteorder in multibyte numbers is most significant byte first (e.g.
52.Electronic
LD Laserdisc
/4 mode 4, 32 kHz/12 bits, 4 channels
/9 9.5 cm/s
Terminated text to be synced (typically a syllable)
as a terminated string encoded with ISO 8859-1 [ISO-8859-1]. The
described in the "TALB" frame is divided into several mediums, e.g. a
such order: UFID, TIT2, MCDI, TRCK ...
ID3v2 size 4 * %0xxxxxxx
/78 78.26 rpm
only one containing the same symbol and only one containing the same
4.3.1 WORS Official internet radio station homepage
$01 Absolute time, 32 bit sized, using MPEG [MPEG] frames as unit
4.28. Private frame
/IV Type IV cassette (metal)
revisions are backwards compatible while major versions are not. If
RAD Radio
4.2.1 TEXT Lyricist/Text writer
Encapsulated object
Identifier
be left zeroed. After the 'preview length' field follows optionally a
2) include prj/id3lib.dsp and zlib/prj/zlib.dsp to your workspace (*note this is a different id3lib than above)
(C) is one character showing a C in a circle.
writers are seperated with the "/" character.
2.Country
All URLs [URL] may be relative, e.g. "picture.png", "../doc.txt".
4.17 PCNT Play counter
This has the side effect that all $FF 00 combinations have to be
$0C time change

/I Type I cassette (ferric/normal)

$00 Other
WOAS
here: http://sourceforge.net/tracker/?group_id=979&atid=300979 with the (e.g.) borland project files.
information from another ID3v2 tag that might reside in another audio
impossible to maintain with accurate and up to date categories,
97.Chorus
predefine an equalisation curve within the audio file. There may only
124.Euro-Hous c - Experimental indicator
4.2.1 TPUB Publisher
$15-$DF reserved for future use
Counter $xx xx xx xx (xx ...)
URL
4.5 MCDI Music CD identifier
Increment/decrement %00xxxxxx
Picture type $xx
4.12. Relative volume adjustment
k - Grouping identity
Extended Flags $xx xx
/II Type II cassette (chrome)
within "(" and ")" and are optionally followed by a text refinement,
frame header:
the player. All tempo descriptors should be sorted in chronological
Rating $xx
music in the file should be a cover of a previously released song.
'Content descriptor' is a terminated string. If no descriptor is
the frame.
allowed, with $0A only. Frames that allow different types of text
unsynchronised lyrics/text transcription in one major way. Each
This flag indicates whether or not the frame is compressed.
Preview start $xx xx
kinds. Reverb left/right is the delay between every bounce in ms.
The frame ID made out of the characters capital A-Z and 0-9.
Locators (URL).", RFC 1738, December 1994.
TLEN
defined.
information like artist, album and more. There may only be one text
URL containing an email address, or a link to a location where an
frame in each tag, but only one with the same content descriptor.
long.
into this tag, a URL [URL] field, where a reference to the file where
character, but there may only be one currency of each type.
live at Wembley").
entered, 'Content descriptor' is $00 (00) only. Newline characters
format YYYYMMDD, describing for how long the price is valid. After
/IV Type IV cassette (metal)
The 'Title/Songname/Content description' frame is the actual name of
terms might be available through the "WCOP" frame. Newlines are
for the frame. Questions regarding the frame should be sent to the
Identifier
$02 Absolute time, 32 bit sized, using milliseconds as unit
/I Type I cassette (ferric/normal)
more information about the people behind a remix and similar
followed by a termination ($00 (00)) all the following information
followed by a Unicode NULL ($FF FE 00 00 or $FE FF 00 00).
CD TOC
/A Analog transfer from media
unknown and the tag is altered in any way. This applies to all
Technical committee / subcommittee: TC 68
each tag.
106.Symphony
indicates usage.
Lyrics/text
Text encoding $xx
This datablock is then optionally followed by a volume definition for
considered as an update of the previous one. E.g. if there is a
/FM FM
In the frame header the size descriptor is followed by two flags
$15-$DF reserved for future use
TORY
Text encoding $xx
99.Acoustic
4.2.1 TSIZ Size
$02 Other file icon
followed by a Unicode NULL ($FF FE 00 00 or $FE FF 00 00).
textstring is followed by a termination ($00 (00)) all the following
2. Conventions in this document
/2 MPEG 1/2 layer II
Universal Multiple-Octet Coded Character Set (UCS), Part 1:
15.Rap
4.2.1 TRCK Track number/Position in set
channel and bit 1 is used to indicate the left channel. 1 is
altered functionallity.
/SVHS S-VHS
3) make your project dependend on id3lib, and make id3lib dependend on zlib
should be sorted in chronological order. The sync can be considered
Generic coding of moving pictures and associated audio information,
The 'Publisher' frame simply contains the name of the label or
points. There may be more than one "LINK" frame in a tag, but only
Rating $xx
decoding a compressed, 'unsynchronised' file, the 'unsynchronisation
numerical string.
and "image/jpeg" are allowed. This format string is followed by the
An example: The "USLT" passage
4.4 IPLS Involved people list
5) Add the following include dirs to your program:
their usage.
/I Type I cassette (ferric/normal)
WCOP
This frame is intended for one-string text information concerning the
good to use in conjunction with this one. The frame begins, after the
unknown flag is set in the first byte the frame may not be changed
Language $xx xx xx
$FF one more byte of events follows (all the following bytes with
/I \\include /I \\include\\id3
should be used when interoperability is wanted. Description is a
The version is followed by one the ID3v2 flags field, of which
unsynchronisation is used (see section 5 for details); a set bit
Some flags indicates that the frame header is extended with
between the values in this frame. Three equal adjustments for three
4.12. Relative volume adjustment
reason, coincidence make a syncsignal appear within the tag it will
There may be more than one "POPM" frame in each tag, but only one

A. Appendix A - Genre List from ID3v1
string according to encoding> if newlines are allowed. Any empty
4.2.1 TLEN Length
'milliseconds between reference' and the reality. The number of bits
as a numeric string.
1) Rename config.h.win32 to config.h
TEXT
4.27. Group identification registration
Technical committee / subcommittee: TC 68
it doesn't seem to be maintained anymore. I've included it as a service.
c - Experimental indicator
"TIT2" frame in the first received tag and one in the second tag,
apply when the audio is completely replaced with other audio data.
grouping should be sent to the indicated email address. The 'Group
'Premix left to right' is the amount of left sound to be mixed in the
4.20. Audio encryption
The use of linked files should however be used sparingly since there
format YYYYMMDD, describing for how long the price is valid. After
Technical committee / subcommittee: JTC 1 / SC 29
91.Gothic Rock
chronological order. The type of event is as follows:
$0C time change

and
Premix left to right $xx
Method symbol $xx


recording. This may be extended with a "/" character and a numeric
the artists official webpage. There may be more than one "WOAR" frame
directly related to the contents title (e.g. "Op. 16" or "Performed
/38 38 cm/s
$0F sustained noise end
publisher.
or, if no other data follows, be completely omitted. There may only
"TIT2" frame in the first received tag and one in the second tag,
significance concerning the recognition of the file. An example of
4.9 USLT Unsychronized lyric/text transcription
$13 Band/artist logotype
$06 As note sheets in a book with other sheets
Peak volume left $xx xx (xx ...)
3.3. ID3v2 frames overview
audio stream. In these cases, the size of the buffer can be
such order: UFID, TIT2, MCDI, TRCK ...
if found more suitable by the software.
'decompressed size' appended to the frame header.
Tempo data
4) Add /D ID3LIB_LINKOPTION=1 to your project options (settings, C/C++ tab)
method byte. These additions to the frame header, while not included
id3lib/libprj
3.1. ID3v2 header
information, price information or plain ordinary news can be added to
This is simply a counter of the number of times a file has been
TKEY
The 'Publishers official webpage' frame is a URL pointing at the
containing an email address, or a link to a location where an email
character.
tempo codes. Each tempo code consists of one tempo part and one time
Peak volume left back $xx xx (xx ...)
to the existing frame, after the center channel. The bass channel is
$0E During recording
This frame indicates if the actual audio stream is encrypted, and by
The purpose of this frame is to specify how good an audio file is.
/33 33.33 rpm
Text encoding $xx
explosion on-stage, turning on your screensaver etc.
Valid until
Since standardisation of such a database is beyond this document, all
between what is said in 'bytes between reference' and the reality and
The 'Commercial information' frame is a URL pointing at a webpage
This flag indicates wether or not the frame is enrypted. If set
/II Type II cassette (chrome)
performers are seperated with the "/" character.
Sync identifier (terminator to above string) $00 (00)

"F" and "G" and halfkeys represented with "b" and "#". Minor is
indicator'. This flag should always be set when the tag is in an
33.Instrumental
The 'Recording dates' frame is a intended to be used as complement to
subject to unsynchronisation.
65.Cabaret
Position $xx (xx ...)
and
method must be used somewhere in the tag. See section 3.3.1, flag j
byte big, excluding the header.
name is omitted, "image/" will be implied. Currently only "image/png"
How to start
[ZLIB] P. Deutsch, Aladdin Enterprises & J-L. Gailly, "ZLIB
%x0000000 00000000
96.Big Band
3. ID3v2 overview
denoting where in the sound file it belongs. Each sync thus has the
frame, the 3rd reference the 6th frame etc. In a similar way the
[MIME] Freed, N. and N. Borenstein, "Multipurpose Internet Mail
(representing up to 256MB) are used in the size description to avoid
contains a terminated string with the involvement directly followed
[CDDB] Compact Disc Data Base
not the same as a music-free time period. $01 is used to indicate one
4.22 POSS Position synchronisation frame
part of a set the audio came from. This frame is used if the source
to ISO 4217 [ISO-4217] alphabetic currency code, followed by a
The 'Original filename' frame contains the preferred filename for the
104.Chamber Music
4.20. Audio encryption
The 'Official audio source webpage' frame is a URL pointing at the
the audio to match the 'Playlist delay' time. The time is represented

82.National Folk
TDLY
The 'Official audio source webpage' frame is a URL pointing at the
its origin and contents. The information may be technical
/80 80 rpm
always an ISO-8859-1 text string. There may be more than one "GEOB"
to the existing frame, after the left and right back channels. The
WOAS
Group symbol $xx
scheme' should be parsed first, decompression afterwards.
URL
numeric string containing the total number of parts in the set. E.g.
numerical string.
with a "(" character it should be replaced with "((" in the same way
content. The most significant bit (MSB) of a byte is called 'bit 7'
/II Type II cassette (chrome)
the types as ID3v1.1 did or, since the category list would be
This is followed by 2 bytes + ('adjustment bits' rounded up to the
containing an email address, or a link to a location where an email
official wepage for the publisher.

$0C time change
28.Vocal
experimental stage.
4.24. Ownership frame
followed by a one byte 'received as' field. It describes how the
6) (add your code which uses id3lib)
The last thing in the frame is the actual object. The first two
cover of a previously released song, was released. The field is
without taking the proper means to compensate, e.g. recalculating
$05 Leaflet page
This document describes the ID3v2.3.0, which is a more developed
$FE audio file ends
Text encoding $xx
file or alone in a binary file. It is recommended that this method is
This is another way of incorporating the words, said or sung lyrics,
50.Darkwave
which is a header of 4 bytes and then 8 bytes/track on the CD plus 8
field. If Peakvolume is not known these fields could be left zeroed
follows
described.
4.10. Synchronised lyrics/text
%x0000000 00000000
/MW MW
/SECAM SECAM
should be added.
3) make your project dependend on id3lib, and make id3lib dependend on zlib
frame but only with different contents. It is recommended to keep the
$FE audio file ends
/76 76 cm/s
/I ISDN
media type, e.g. "(CD/A)" or "(VID/PAL/VHS)".
circumstances when the risk of file seperation is low. The frame
from.
Group symbol $xx
information about the performers in the recording.
'Method symbol' contains a value that is associated with this method
115.Folklore
reduction on the first bounce, 50% of that on the second and so on.
This is followed by 2 bytes + ('adjustment bits' rounded up to the
Picture MIME type $00
This frame is intended for music that comes from a CD, so that the CD
header is a descriptor of how much the 'frame counter' should
defined in 'bits for bytes deviation', that describes the difference
be described with the 'Peak volume right' and 'Peak volume left'
5) Add the following include dirs to your program:
If the center channel adjustment is present the following is appended
only.
2) include libprj/id3lib.dsp and zlib/prj/zlib.dsp to your workspace
60.Top 40
The 'Part of a set' frame is a numeric string that describes which
milliseconds deviation', must be a multiple of four. There may only
used for the main artist(s). They are seperated with the "/"
$12345678 would be encoded $12 34 56 78).
experimental stage.
$0C Lyricist/text writer
Relative volume change, bass $xx xx (xx ...)
/I \\include /I \\include\\id3
4.2.2. User defined text information frame
'Owner identifier' is a null-terminated string with a URL [URL]
others, and derivative works that comment on or otherwise explain it
by new software. Unsynchronisation may only be made with MPEG 2 layer
4.2.1 TCON Content type
Preview start $xx xx
Relative volume change, right back $xx xx (xx ...)
4.15. Attached picture
followed by a Unicode NULL ($FF FE 00 00 or $FE FF 00 00).
evolved from the ID3 tagging system. The ID3v2 offers a flexible way
that its program uses and does not fit into the other frames. The
DAT DAT
/SVHS S-VHS
RX Remix
The 'File owner/licensee' frame contains the name of the owner or
80.Folk
milliseconds deviation', must be a multiple of four. There may only
MC MC (normal cassette)
described in the "TALB" frame is divided into several mediums, e.g. a
which picture format is used. In the event that the MIME media type
Increment/decrement %00xxxxxx
might have used the same identifier as you. All other identifiers are
In the increment/decrement field bit 2 is used to indicate the right
in a project. The 'Involved people list' is a frame containing the
the frames and the headers, in other words the padding. The extended
of the seller as the last field in the frame. There may only be one
The 'Owner identifier' is then followed by the actual identifier,
$12 verse end
WOAR
'Premix right to left' does the same thing, but right to left.
An example: The "USLT" passage
Text encoding $xx
containing an email address, or a link to a location where an email
Counter $xx xx xx xx (xx ...)
and MPEG-2.5, but may work with other types of encoded audio.

starts. It is represented as a string with a maximum length of three
3.3.2. Default flags
allowed in the text. There may only be one "USER" frame in a tag.
"/" character.
6) (add your code which uses id3lib)
change the volume constantly. This frame may also be used to balance
If this flag is set four bytes of CRC-32 data is appended to the
combination during the unsynchronisation.
Peak volume bass $xx xx (xx ...)
ID3v2/file identifier "ID3"
strings may be omitted, leaving only their terminations. MIME type is
unknown and the tag is altered in any way. This applies to all
$FD audio end (start of silence)
All URLs [URL] may be relative, e.g. "picture.png", "../doc.txt".
information, such as equalisation curves, as well as related meta
7. References
text writer(s) of the original recording, if for example the music in
9) distribute your program including id3lib.dll
1 Frame is encrypted.
$00 Other
Abolute time means that every stamp contains the time from the
increase for every reference. If this value is two then the first
all the $FF 00 combinations have to be replaced with the $FF 00 00
good to use in conjunction with this one. The frame begins, after the
of language descriptor directly followed by a content descriptor as
content type $03 - $04.
audio file, frames with timecodes in different locations in the file
4.2.2. User defined text information frame
4.7 MLLT MPEG location lookup table
$01 Absolute time, 32 bit sized, using MPEG [MPEG] frames as unit
other vocal activities. The head includes an encoding descriptor and
every transmission with a tag, then this tag should include a
three or higher it should simply ignore the whole tag. Version and
channel and bit 1 is used to indicate the left channel. 1 is
Text encoding $xx
[ISO-4217] ISO 4217:1995.
87.Revival
All the other flags should be cleared. If one of these undefined

be left zeroed. After the 'preview length' field follows optionally a

want to synchronise your music to something, like setting of an
rewrite the entire file. The value of the padding bytes must be $00.
Size of padding $xx xx xx xx
4.2.1 TENC Encoded by
header in the same order as the flags indicating the additions. I.e.
The first criterion is met by the simple fact that the MPEG [MPEG]
short description of the picture, represented as a terminated
[ID3v2] Martin Nilsson, "ID3v2 informal standard".
62.Pop/Funk
Peak volume bass $xx xx (xx ...)
53.Pop-Folk
/2 MPEG 1/2 layer II
TSSE
encryption method must be registered in the tag with this frame. The
without parentheses. If this frame is not present audio type is
TCOP
the left and right back channels. If this information is appended to
character date string (YYYYMMDD) followed by a string with the name
4.8. Synced tempo codes
occurring in front of the first syllable of a new word. This is also
(MS recommend you distribute it in your programs dir and not in system(32) to avoid version conficts)
belongs to a set of frames a group identifier must be registered in
4) Add /D ID3LIB_LINKOPTION=1 to your project options (settings, C/C++ tab)
The tempo descriptor is followed by a time stamp. Every time the
4.21. Linked information
4.2.2. User defined text information frame
14.R&B
belongs to a set of frames a group identifier must be registered in
/WAC Wax cylinder
This document describes the ID3v2.3.0, which is a more developed
method must be used somewhere in the tag. See section 3.3.1, flag j
Text encoding $xx
then the first should be 'replaced' with the second.
Reverb left (ms) $xx xx
recommended by the server using this frame. If the 'embedded info
The 'Official internet radio station homepage' contains a URL
This frame indicates if the actual audio stream is encrypted, and by
The ID3v2 tag size is the size of the complete tag after
So far, it has only been confirmed it compiles on visual C 6.0 (service pack 5),
Reverb feedback, left to left $xx
datablock required for decryption of the audio. There may be more
/BETA BETAMAX
in the audio file as text, this time, however, in sync with the
frame, the 3rd reference the 6th frame etc. In a similar way the
TEL Telephone
part of the tag and has the same restrictions as if it was a physical
4.17. Play counter
short description of the picture, represented as a terminated
channel and bit 1 is used to indicate the left channel. 1 is
grouping should be sent to the indicated email address. The 'Group
/I Type I cassette (ferric/normal)
80.Folk
The 'Content group description' frame is used if the sound belongs to
Extended header size $xx xx xx xx
"F" and "G" and halfkeys represented with "b" and "#". Minor is
/76 76.59 rpm
Content type: $00 is other
The first one (id3lib/prj) creates the standard dll (no COM interface)
A) ***Your project wants to link id3lib static, and has mfc linked static:
Technical committee / subcommittee: JTC 1 / SC 2
flags' should be set. This bit should only be set if the tag
adjust the audio. If the volume peak levels are known then this could
Language $xx xx xx
The 'Recording dates' frame is a intended to be used as complement to
$F0-$FC reserved for future use
bits) for MPEG 2 layer I, II and III [MPEG] and MPEG 2.5. This value
good to use in conjunction with this one. The frame begins, after the
as in the "TCO" frame. Predefined refinements is appended after the
$02 Absolute time, 32 bit sized, using milliseconds as unit
4.2.1 TOAL Original album/movie/show title
98.Easy Listening
%11111111 111xxxxx
Reverb feedback, left to left $xx
$10 Movie/video screen capture
This frame is intended for URL [URL] links concerning the audiofile
33.Instrumental
Relative volume change, center $xx xx (xx ...)
Peak volume left back $xx xx (xx ...)
then the first should be 'replaced' with the second.
defined.
/A Analog transfer from media
$FE audio file ends
DAT DAT
ID3v2 flags %abc00000
See section 3.3.1, flag j for more information.
TEXT
bits) for MPEG 2 layer I, II and III [MPEG] and MPEG 2.5. This value
'decompressed size' appended to the frame header.
/4 4.75 cm/s (normal speed for a two sided cassette)
This frame is intended for one-string text information concerning the
Increment/decrement %00xxxxxx
id3lib/id3com
numbers preceded with % are binary. $xx is used to indicate a byte
In the frame header the size descriptor is followed by two flags
picture is to attach.
although it is desired that the frames are arranged in order of
frame is intended to be read only. Changing the contents might
The frame ID made out of the characters capital A-Z and 0-9.
the beginning of every track on the CD should be described with a
audio can be specified. The 'Preview start' and 'Preview length' is
Frame ID $xx xx xx xx (four characters)
excluding "TXXX" described in 4.2.2.>
$12 Illustration
of the seller as the last field in the frame. There may only be one
After the 'Owner identifier', a pointer to an unencrypted part of the
74.Acid Jazz
None.
'Premix left to right' is the amount of left sound to be mixed in the
section 3.2.
A. Appendix A - Genre List from ID3v1
organisation that encoded the audio file. This field may contain a
29.Jazz+Funk
Bits for milliseconds dev. $xx
Description $00 (00)
representation of the adjustment. This is normally $10 (16 bits) for
WPAY
$11 A bright coloured fish
kinds. Reverb left/right is the delay between every bounce in ms.
The 'Lyricist(s)/Text writer(s)' frame is intended for the writer(s)
audiofile in a similar way to the other "T"-frames. The frame body
end of the ID3 tag), making the size of all the frames together
Abstract
4.4. Involved people list
Newline ($0A) characters are allowed in all "SYLT" frames and should
4.27 GRID Group identification registration
reverb is applied symmetric). There may only be one "RVRB" frame in
Where the 'Extended header size', currently 6 or 10 bytes, excludes
This flag indicates whether or not the frame is compressed.
containing an email address, or a link to a location where an email
right before any reverb is applied, where $00 id 0% and $FF is 100%.
Name of seller $00 (00)
The 'Not predefined sync's ($E0-EF) are for user events. You might
beginning of the file.
recording(/source of sound) which the audio in the file is taken
Software that isn't told otherwise may safely remove such frames. The
(debug) /nodefaultlib:"MSVCRTD" or(release) /nodefaultlib:"MSVCRT"
pointing at the homepage of the internet radio station.
The 'Interpreted, remixed, or otherwise modified by' frame contains
4.3.1. URL link frames - details
4.2.1 TENC Encoded by
TPE2
$0A variation start
characters 0-9 only.
A tag is the whole tag described in this document. A frame is a block
TORY
optional.
purpose of this padding is to allow for adding a few additional
(representing up to 256MB) are used in the size description to avoid
byte is inserted after the first false synchronisation byte. The
each channel while the file is played. The purpose is to be able to
allowed in the comment text string. There may be more than one
Technical committee / subcommittee: JTC 1 / SC 29
The first one (id3lib/prj) creates the standard dll (no COM interface)
the audio to match the 'Playlist delay' time. The time is represented
or, if signed, as proof. Note that the "USER" and "TOWN" frames are
/SVHS S-VHS
significance concerning the recognition of the file. An example of
85.Bebob
Where yy is less than $FF, xx is the 'flags' byte and zz is less than
others, and derivative works that comment on or otherwise explain it
numerical string.
$12 verse end
encryption method should be sent to the indicated email address. The
x - CRC data present
Abstract
four bytes absolute CD-frame address per track, and not with absolute
Rating $xx
strings may be omitted, leaving only their terminations. MIME type is
$02 Absolute time, 32 bit sized, using milliseconds as unit
Text encoding $xx
Adjustment $xx (xx ...)
text writer(s) of the original recording, if for example the music in
Do bear in mind, that if a compression scheme is used by the encoder,

Rating $xx
The text information frames are the most important frames, containing
4.26. Encryption method registration
frame ID, size and encoding fields, with a 'price payed' field. The
MPG MPEG Audio
/33 33.33 rpm
/I \\include /I \\include\\id3
2. Discarded if tag is altered, preserved if file is altered.
See section 3.3.1, flag j for more information.
implementors could have a set standard before a formal standard is
54.Eurodance
(debug) /nodefaultlib:"libcd" or(release) /nodefaultlib:"libc"
1) Rename config.h.win32 to config.h
IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF
"F" and "G" and halfkeys represented with "b" and "#". Minor is
version number and a size descriptor in the ID3v2 header.
4.10. Synchronised lyrics/text
last thing is the ability to include a company logotype. The first of
text writer(s) of the original recording, if for example the music in
indicator'. This flag should always be set when the tag is in an
ID3v2 size 4 * %0xxxxxxx
100.Humour
section 5.
The header is:
Adjustment bits $xx
The 'Content type', which previously was stored as a one byte numeric
Value
text information frames and the URL link frames.
C)***Your project wants to link id3lib dynamic: (instructions below for vc)
includes the used audio encoder and its settings when the file was
4.11. Comments
77.Musical
$10 Movie/video screen capture
kinds of alterations, including adding more padding and reordering
25.Euro-Techno
encryption method must be registered in the tag with this frame. The
mean that the sound is public domain. Every time this field is
throughout the whole tag. Values below $80 are reserved. The 'Group
This document and translations of it may be copied and furnished to
69.Showtunes

Owner identifier $00
4.27 GRID Group identification registration
Adjustment $xx (xx ...)
Lyrics/text
4. Declared ID3v2 frames
To keep space waste as low as possible this frame may be used to link
'Premix left to right' is the amount of left sound to be mixed in the
$01 Absolute time, 32 bit sized, using MPEG frames as unit
the CD's only got one track. There may only be one "MCDI" frame in
Increment/decrement %00xxxxxx
ID3v2 flags %abc00000
[ISO-8859-1] characters in the range $20 - $FF. Such strings are
37.Sound Clip
address can be found, that belongs to the organisation responsible
(debug) /nodefaultlib:"msvcprtd" or(release) /nodefaultlib:"msvcprt"
The 'Publishers official webpage' frame is a URL pointing at the
(debug) /nodefaultlib:"libcd" or(release) /nodefaultlib:"libc"
of storing information about an audio file within itself to determine
TPE2
the piece (e.g. "Adagio", "Hurricane Donna").
as a numeric string.
Text encoding $xx
$0E sustained noise
/PAL PAL
The 'bits used for volume description' field is normally $10 (16
the player. All tempo descriptors should be sorted in chronological
part. The tempo is in BPM described with one or two bytes. If the
tag, except when stated otherwise in the frame description. If the
The 'ISRC' frame should contain the International Standard Recording
This flag indicates whether or not this frame belongs in a group
121.Punk Rock
6.Grunge
The 'Track number/Position in set' frame is a numeric string
Encryption data
The ID3v2 tag size is the size of the complete tag after
/DD DDD
combination during the unsynchronisation.
The 'Buffer size' should be kept to a minimum. There may only be one
or, if no other data follows, be completely omitted. There may only
If a frame is longer than it should be, e.g. having more fields than
1) Rename config.h.win32 to config.h

27.Trip-Hop
$06 is trivia/'pop up' information
in a similar way to the other "W"-frames. The frame body consists
tags into the audio stream though. If the clients connects to
$02 Compressed audio on CD
starts. It is represented as a string with a maximum length of three
MC MC (normal cassette)
parser that does not know the flags function.
15.Rap
single beat-stroke followed by a beat-free period.
individual connections like HTTP and there is a possibility to begin
RX Remix
the piece (e.g. "Adagio", "Hurricane Donna").
version of the ID3v2 informal standard [ID3v2] (version 2.2.0),
36.Game
Adjustment bits $xx
in a tag if the audio contains more than one performer, but not with
Where yy is less than $FF, xx is the 'flags' byte and zz is less than
4.21. Linked information
$0B Composer
to the existing frame, after the left and right back channels. The
4.11 COMM Comments
and MPEG-2.5, but may work with other types of encoded audio.
4.21. Linked information
increase for every reference. If this value is two then the first
is the risk of separation of files.
4.3.1. URL link frames - details
In this frame any type of file can be encapsulated. After the header,
3. ID3v2 overview
symbol' contains a value that associates the frame with this group
which is a header of 4 bytes and then 8 bytes/track on the CD plus 8
4.2.1 TOPE Original artist(s)/performer(s)
circumstances when the risk of file seperation is low. The frame
TLAN
directly related to the contents title (e.g. "Op. 16" or "Performed

x - CRC data present
[ISO-8859-1] characters in the range $20 - $FF. Such strings are
although it is desired that the frames are arranged in order of
None.
$10 Movie/video screen capture
CD CD
the first frame in the stream. The frame layout is:

followed by encoding, language and content descriptors and is ended
WCOP
the types as ID3v1.1 did or, since the category list would be
The 'Encoded by' frame contains the name of the person or
$06 Media (e.g. lable side of CD)
e.g. "(MC) with four channels". If a text refinement should begin
9.Metal
the beginning of every track on the CD should be described with a
A few considerations regarding whitespace characters: Whitespace
4.2.1 TSSE Software/Hardware and settings used for encoding
The frame ID made out of the characters capital A-Z and 0-9.
recommended by the server using this frame. If the 'embedded info
4.7 MLLT MPEG location lookup table
TEL Telephone
The 'bits used for volume description' field is normally $10 (16
67.Psychadelic
The default settings for the frames described in this document can be
their usage.
ID and additional data
92.Progressive Rock
Code [ISRC] (12 characters).
Abstract
points. There may be more than one "LINK" frame in a tag, but only
Reverb bounces, left $xx
41.Bass
of a description of the string, represented as a terminated string,
The 'Band/Orchestra/Accompaniment' frame is used for additional
95.Slow Rock
frame size. If ISO-8859-1 is used this byte should be $00, if Unicode
TDAT
The default settings for the frames described in this document can be
address can be found, that belongs to the organisation responsible
which time stamp format should be used. Then follows one or more
4.2.1 TPE2 Band/orchestra/accompaniment
20.Alternative
sync identifier.
Technical committee / subcommittee: TC 68
If this flag is set four bytes of CRC-32 data is appended to the
20.Alternative
The 'Commercial information' frame is a URL pointing at a webpage
0 Frame is not encrypted.
TCOM
value only, is now a numeric string. You may use one or several of
TRDA
4.2.1. Text information frames - details
71.Lo-Fi
1 Frame should be discarded.
can figure out any genre)" or "(55)((I think...)". The following new
The frame ID is followed by a size descriptor, making a total header
bundling all needed information. That makes this frame rather complex
TOWN
unsynchronisation is used (see section 5 for details); a set bit
content descriptor, represented with as terminated textstring. If no
The three byte language field is used to describe the language of the
/76 76 cm/s

4.2.1 TIME Time
The 'Time' frame is a numeric string in the HHMM format containing
$80.
Offset to next tag $xx xx xx xx
in every reference, i.e. 'bits for bytes deviation'+'bits for
without taking the proper means to compensate, e.g. recalculating
2) include libprj/id3lib.dsp and zlib/prj/zlib.dsp to your workspace
described in frames. If no part is unencrypted, these fields should
does not fit in any other frame. It consists of a frame header
Where the 'Extended header size', currently 6 or 10 bytes, excludes
frame ID, size and encoding fields, with a 'price payed' field. The
followed by a termination ($00 (00)) all the following information
audio stream. In these cases, the size of the buffer can be
often sorted in different musical sections (e.g. "Piano Concerto",
8.Jazz
Picture data
a content descriptor. The body consists of the actual text. The
ownership of the file. More detailed information concerning the legal
used for the main artist(s). They are seperated with the "/"
false synchronisations in the tag, at least one byte of padding

4.2.1 TBPM BPM (beats per minute)
sync identifier.
1) Rename config.h.win32 to config.h
In this frame any type of file can be encapsulated. After the header,
The 'Media type' frame describes from which media the sound
TEL Telephone
$E0-$EF not predefined sync 0-F
TFLT
official webpage for the source of the audio file, e.g. a movie.
If a total revision of the ID3v2 tag should be needed, there is a
$80.
ID3 tag version 2.3.0
The 'Official internet radio station homepage' contains a URL
Time stamp format $xx
2.Country

None.
4) Add /D ID3LIB_LINKOPTION=1 to your project options (settings, C/C++ tab)
occurring in front of the first syllable of a new word. This is also
[PNG] Portable Network Graphics, version 1.0
maximum size described in 'Buffer size' may occur in the audiostream.
/I ISDN
music in the file should be a cover of a previously released song.
Followed by a list of key events in the following format:
CD TOC
The Second one (id3lib/libprj) creates the .lib file for static linking.
the transaction, encoded according to ISO 4217 [ISO-4217] alphabetic
the frames.
$01 Absolute time, 32 bit sized, using MPEG [MPEG] frames as unit
character date string (YYYYMMDD) followed by a string with the name
specific webpage.
ANA Other analog media
address can be found, that belongs to the organisation responsible
16-bit unicode 2.0 (ISO/IEC 10646-1:1993, UCS-2). Unicode strings
4.20. Audio encryption
frame size. If ISO-8859-1 is used this byte should be $00, if Unicode
string with a URL [URL] containing an email address, or a link to a
4.2.1 TDAT Date
93.Psychedelic Rock
Codes for the representation of currencies and funds.
4.12 RVAD Relative volume adjustment
"(" followed by a number from the genres list (appendix A.) and
107.Booty Bass
revision will never be $FF.
e.g. "(MC) with four channels". If a text refinement should begin
frames, all the frames consists of a frame header followed by one or
24.Soundtrack
105.Sonata
The 'Year' frame is a numeric string with a year of the recording.
content descriptor. There may only be one picture with the picture
center channel is represented by bit 4 in the increase/decrease
the content descriptor as additional ID data.
23.Pranks
MIME type $00
field.
Status of this document
2. Conventions in this document
field. If Peakvolume is not known these fields could be left zeroed
first byte has the value $FF, one more byte follows, which is added
should be ignored and not be displayed. All text frame identifiers
Peak volume center $xx xx (xx ...)
4.12. Relative volume adjustment
'recommended buffer size' frame. If the client is connected to a
begin with a "(" character it should be replaced with "((", e.g. "((I
/PAL PAL
The text information frames are the most important frames, containing
Counter $xx xx xx xx (xx ...)
Peak volume right back $xx xx (xx ...)
a - Tag alter preservation
Identifiers beginning with "X", "Y" and "Z" are for experimental use
section 5.
be taken care of by the 'unsynchronisation scheme' described in
If this flag is set four bytes of CRC-32 data is appended to the
There may be more than one "SYLT" frame in each tag, but only one
53.Pop-Folk
information like artist, album and more. There may only be one text
MD MiniDisc
character date string (YYYYMMDD) followed by a string with the name
TPE3
amount of volume that should be returned to the next echo bounce. $00
4.2.2 TXXX User defined text information frame
TIT3
last thing is the ability to include a company logotype. The first of
encryption method should be sent to the indicated email address. The
is an identifier that explains the frames' format and content, and a
ownership of the file. More detailed information concerning the legal
4.23 USER Terms of use
4. Declared ID3v2 frames
4.3.1 WPAY Payment
If a frame is longer than it should be, e.g. having more fields than
4.2.1 TDAT Date
in the frame header size but are included in the 'frame size' field,
/I \\include /I \\include\\id3
Text encoding $xx
$04 Stream over the Internet
"POSS" frame in each tag.
3.3. ID3v2 frames overview
This frame is intended for music that comes from a CD, so that the CD
if not identical to what is described in this document. The contents
This frame's purpose is to be able to identify the audio file in a
The 'Copyright/Legal information' frame is a URL pointing at a
tag, except when stated otherwise in the frame description. If the
Owner identifier $00
8-bit single-byte coded graphic character sets, Part 1: Latin
Technical committee / subcommittee: JTC 1 / SC 29
1) Rename config.h.win32 to config.h
81.Folk-Rock
$49 44 33 yy yy xx zz zz zz zz
A. Appendix A - Genre List from ID3v1
5. The 'unsynchronisation scheme'
$02 intro start
(debug) /nodefaultlib:"msvcprtd" or(release) /nodefaultlib:"msvcprt"
This frame indicates if the actual audio stream is encrypted, and by
Codes for the representation of names of languages, Part 2: Alpha-3
Reverb feedback, right to right $xx
unknown and the file, excluding the tag, is altered. This does not
long.
[ISO-8859-1]. There may be more than one "WXXX" frame in each tag,
individual connections like HTTP and there is a possibility to begin
Time stamp $xx (xx ...)
ISO/IEC 13818-3:1995
frame header:
c - Experimental indicator
4.28. Private frame
None.
Group dependent data
encoding have a text encoding description byte directly after the
The frame ID is followed by a size descriptor, making a total header
3.3.1. Frame header flags
4.28. PRIV Private frame
Frequency (lower 15 bits)
4.2.1 TRCK Track number/Position in set
Frequency (lower 15 bits)
Where time stamp format is:
26.Ambient
all the $FF 00 combinations have to be replaced with the $FF 00 00
beginning of the file.
unsynchronisation is used (see section 5 for details); a set bit
descriptor is entered, 'Content descriptor' is $00 (00) only.
/33 33.33 rpm
$49 44 33 yy yy xx zz zz zz zz
/2 MPEG 1/2 layer II
And should be replaced with:
lyrics/text transcription' frame in each tag, but only one with the
Sometimes the server from which a audio file is streamed is aware of
103.Opera
followed by the actual URL. The URL is always encoded with ISO-8859-1
$12345678 would be encoded $12 34 56 78).
byte is inserted after the first false synchronisation byte. The
each tag.
described in the "TALB" frame is divided into several mediums, e.g. a
$0A variation start
$10 Movie/video screen capture
impossible to maintain with accurate and up to date categories,
out bytes and milliseconds respectively.
Newline ($0A) characters are allowed in all "SYLT" frames and should
Time stamp format $xx
124.Euro-Hous 116.Ballad
frames or enlarge existing frames within the tag without having to
TRCK
of the text or lyrics in the recording. They are seperated with the
left speaker, while left to right means sound from the left bounce to
$04 is events (e.g. "Don Quijote enters the stage")
revoked.
content descriptor, represented with as terminated textstring. If no
71.Lo-Fi
the tag. There may only be one URL [URL] link frame of its kind in an
4.8 SYTC Synchronized tempo codes
byteorder in multibyte numbers is most significant byte first (e.g.
followed by a one byte 'received as' field. It describes how the
frame but only with different contents. It is recommended to keep the
The second criterion has made a more noticeable impact on the design
$07 Lead artist/lead performer/soloist
ANA Other analog media
7) Try to compile, and see if you need any of the following:
56.Southern Rock
4.3.1. URL link frames - details
Reverb left (ms) $xx xx
Text encoding $xx
This document describes the ID3v2.3.0, which is a more developed
4.3.1 WPAY Payment
Yet another subjective one. You may here adjust echoes of different
$0F sustained noise end
name is omitted, "image/" will be implied. Currently only "image/png"
This frame indicates if the actual audio stream is encrypted, and by
recording(/source of sound) which the audio in the file is taken
information, such as title, performer, copyright etc.
descriptor is entered, 'Content descriptor' is $00 (00) only.
which time stamp format should be used. Then follows one or more
4.2.1 TCON Content type
circumstances when the risk of file seperation is low. The frame
more fields containing the actual information. The layout of the
/2.5 MPEG 2.5
TMED
each tag.
25.Euro-Techno
Abstract
Method symbol $xx
the audio is MPEG encoded. If the position of the next tag is known,
copyright message, if the audio file also is copyrighted by the
Increment/decrement %x (MSB of the Frequency)
The 'Original album/movie/show title' frame is intended for the title
This frame is intended for one-string text information concerning the
15.Rap
83.Swing
Every tag that is picked up after the initial/first tag is to be
The 'Owner identifier' is then followed by the actual identifier,
organisation responsible for this grouping. Questions regarding the
4.2.1 TFLT File type
Counter $xx xx xx xx (xx ...)
Coding of moving pictures and associated audio for digital storage
content type $03 - $04.
parser that does not know the flags function.
107.Booty Bass
Language $xx xx xx
The following frames are declared in this draft.
Relative volume change, center $xx xx (xx ...)
The last thing in the frame is the actual object. The first two
4. Declared ID3v2 frames
52.Electronic
30.Fusion
information, such as title, performer, copyright etc.
organisation responsible for this grouping. Questions regarding the
is an identifier that explains the frames' format and content, and a
a larger category of sounds/music. For example, classical music is
58.Cult
4.2.1 TRSO Internet radio station owner
THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED
document, all "AENC" frames begin with a terminated string with a
the first frame in the stream. The frame layout is:

possibility to put only a link to the image file by using the 'MIME
ISO/IEC 13818-3:1995
symbol' may optionally be followed by some group specific data, e.g.
$02 Absolute time, 32 bit sized, using milliseconds as unit
TOWN
37.Sound Clip
and the least significant bit (LSB) is called 'bit 0'.
1.Classic Rock
For a more accurate description of the tempo of a musical piece this
/I ISDN
4.27. Group identification registration
4.6. Event timing codes
7) Try to compile, and see if you need any of the following:
The 'Time' frame is a numeric string in the HHMM format containing
4.3.1. URL link frames - details
4.2.1 TCOM Composer
4.17. Play counter
4.27 GRID Group identification registration
47.Instrumental Rock
The 'Official audio source webpage' frame is a URL pointing at the
/A Analog transfer from media
4.3.1 WCOP Copyright/Legal information
The 'Official internet radio station homepage' contains a URL
WOAR
such order: UFID, TIT2, MCDI, TRCK ...
WPAY
of information in the tag. The tag consists of a header, frames and
significant bit (bit 7) is set to zero in every byte, making a total
The "COMM", "SYLT" and "USLT" frames may be linked with three bytes
4.22 POSS Position synchronisation frame
textstring is followed by a termination ($00 (00)) all the following
66.New Wave
Premix right to left $xx
stage or on the screen in sync with the audio. The header includes a
The extended header contains information that is not vital to the
ended with a ")" character. This is optionally followed by a
/76 76 cm/s
109.Porn Groove
comment frame in each tag, but only one with the same language and
from.
TCOM
16-bit unicode 2.0 (ISO/IEC 10646-1:1993, UCS-2). Unicode strings
Milliseconds between reference $xx xx xx
$10 intro end
ended with a ")" character. This is optionally followed by a
$02 Absolute time, 32 bit sized, using milliseconds as unit
ANA Other analog media
starts. It is represented as a string with a maximum length of three
'decompressed size' appended to the frame header.
4.9 USLT Unsychronized lyric/text transcription
milliseconds deviation', must be a multiple of four. There may only
for the frame. Questions regarding the frame should be sent to the
should be sorted in chronological order. The sync can be considered
4.5. Music CD Identifier
version of the ID3v2 informal standard [ID3v2] (version 2.2.0),
maximum size described in 'Buffer size' may occur in the audiostream.
character, but there may only be one currency of each type.
i - Compression
audio is delivered when bought according to the following list:
/A Analog transfer from media
/SVHS S-VHS
syllable (or whatever size of text is considered to be convenient by
same language and content descriptor.
be played in the right speaker.
is used it should be $01. Strings dependent on encoding is
tag, except when stated otherwise in the frame description. If the
wanted it may be omitted. When the counter reaches all one's, one
A) ***Your project wants to link id3lib static, and has mfc linked static:
which a program was run.
for this specific encryption method. Questions regarding the
content descriptor.
See section 3.3.1, flag j for more information.
one with the same contents. A linked frame is to be considered as
subject to unsynchronisation.
65.Cabaret
3. ID3v2 overview
4.16 GEOB General encapsulated object
section 5.
Technical committee / subcommittee: JTC 1 / SC 29
/6 mode 6, 44.1 kHz/16 bits, 'wide track' play
$11 A bright coloured fish
The 'Time' frame is a numeric string in the HHMM format containing
9. Author's Address
75.Polka
stage or on the screen in sync with the audio. The header includes a
occurring in front of the first syllable of a new word. This is also
to the existing frame, after the center channel. The bass channel is
The 'Original album/movie/show title' frame is intended for the title
The "COMM", "SYLT" and "USLT" frames may be linked with three bytes
4.4 IPLS Involved people list
41.Bass
MD MiniDisc
The ID3v2 tag size is encoded with four bytes where the most
$02 Absolute time, 32 bit sized, using milliseconds as unit
internet radio station from which the audio is streamed.
24.Soundtrack
60.Top 40
41.Bass
xx "glan" $00 xx xx "ces" $00 xx xx
4.21. Linked information
2. Discarded if tag is altered, preserved if file is altered.
8) dump id3lib.dll in your programs project dir.
$13 refrain end
a - Tag alter preservation
/80 80 rpm
THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED
first byte of ID3v2 version is it's major version, while the second
$FE audio file ends
TRSO
i - Compression
possibility to put only a link to the image file by using the 'MIME
the frames.
and MPEG-2.5, but may work with other types of encoded audio.
The 'Owner identifier' is then followed by the actual identifier,
follows
5) Add the following include dirs to your program:
frame have been made in a later version of the ID3v2 standard. This
The following genres are Winamp extensions
/VHS VHS
3. ID3v2 overview
/76 76 cm/s
19.Industrial
beginning of the file.
media at up to about 1,5 Mbit/s, Part 3: Audio.
textstring. The description has a maximum length of 64 characters,
C)***Your project wants to link id3lib dynamic: (instructions below for vc)
between what is said in 'bytes between reference' and the reality and
'Owner identifier' must be non-empty (more than just a termination).
whom. Since standardisation of such encrypion scheme is beyond this
75.Polka
4.14 RVRB Reverb
4.2.1 TRCK Track number/Position in set
single beat-stroke followed by a beat-free period.
WCOM
C)***Your project wants to link id3lib dynamic: (instructions below for vc)
behaviour from present software/hardware.
which a program was run.
38.Gospel
constructed by one three character currency code, encoded according
The "TXXX", "APIC", "GEOB" and "AENC" frames may be linked with
amount of volume that should be returned to the next echo bounce. $00
3.2. ID3v2 extended header
The 'Conductor' frame is used for the name of the conductor.
$08 Artist/performer
Deviation in milliseconds %xxx....
69.Showtunes
without the bit cleared. If an unknown flag is set in the second byte
5. The 'unsynchronisation scheme'
The 'Copyright message' frame, which must begin with a year and a
112.Club
TEL Telephone
TPE1
TSIZ
followed by a termination ($00 (00)) all the following information
Reverb bounces, right $xx
This document and the information contained herein is provided on an
TPE4
$02 Compressed audio on CD
Owner identifier $00
followed by a Unicode NULL ($FF FE 00 00 or $FE FF 00 00).
syncsignal, no software will attempt to play the tag. If, for any
Rating $xx
4.3.1 WORS Official internet radio station homepage
2. Discarded if tag is altered, preserved if file is altered.
/76 76 cm/s
WCOP
be left zeroed. After the 'preview length' field follows optionally a
The following genres is defined in ID3v1
made. $FF equals an infinite number of bounces. Feedback is the
frame but only with different contents. It is recommended to keep the
type declared as picture type $01 and $02 respectively. There is the
4.3. URL link frames
4.10. Synchronised lyrics/text
space character (making five characters), is intended for the
0.Blues
14.R&B
There may only be one "ETCO" frame in each tag.
/33 33.33 rpm
98.Easy Listening

the introducuction of 'false syncsignals'.
$02 Absolute time, 32 bit sized, using milliseconds as unit
68.Rave
located directly at the beginning of the sound. All time stamps
string containing the total numer of tracks/elements on the original
If nothing else is said a string is represented as ISO-8859-1
/71 71.29 rpm
114.Samba
frame identifiers begins with "W". Only URL link frame identifiers
method byte. These additions to the frame header, while not included
4.5. Music CD Identifier
8. Appendix
4.2.1 TPOS Part of a set
each channel while the file is played. The purpose is to be able to
containing an email address, or a link to a location where an email
might be useful. The ID3v2 frame includes references that the
'Owner identifier' must be non-empty (more than just a termination).
115.Folklore
method must be used somewhere in the tag. See section 3.3.1, flag j
MIME type $00
ISO/IEC DIS 13818-3
which picture format is used. In the event that the MIME media type
40.AlternRock
$03 File over the Internet
mainpart of the audio. The BPM is an integer and represented as a
method must be used somewhere in the tag. See section 3.3.1, flag j
None.
4.2.1 TDLY Playlist delay
first byte has the value $FF, one more byte follows, which is added
part of a set the audio came from. This frame is used if the source
%11111111 00000000 111xxxxx
This document and the information contained herein is provided on an
4.2.1 TKEY Initial key
Abolute time means that every stamp contains the time from the
4.15 APIC Attached picture
a certain number of bits, as defined in 'bits for milliseconds
119.Freestyle
2) include prj/id3lib.dsp and zlib/prj/zlib.dsp to your workspace (*note this is a different id3lib than above)
"AS IS" basis and THE AUTHORS DISCLAIMS ALL WARRANTIES, EXPRESS OR
or, if no other data follows, be completely omitted. There may only
48.Ethnic
Abolute time means that every stamp contains the time from the
1 Frame should be discarded.
Owner identifier $00
implementors could have a set standard before a formal standard is
Left to left means the sound from the left bounce to be played in the
TPOS
the same content.
The 'Owner identifier' is a null-terminated string with a URL [URL]
currently only three flags are used.
the CD's only got one track. There may only be one "MCDI" frame in
4.2.1. Text information frames - details
apply when the audio is completely replaced with other audio data.
with unknown content. %x is used to indicate a bit with unknown
Document: id3v2.3.0.txt 3rd February 1999
nearest byte) for every equalisation band in the following format,
parser that does not know the flags function.
58.Cult
WOAS
all the $FF 00 combinations have to be replaced with the $FF 00 00
"MCID", "ETCO", "MLLT", "SYTC", "RVAD", "EQUA", "RVRB", "RBUF", the
a certain number of bits, as defined in 'bits for milliseconds
such copies and derivative works. However, this document itself may
Code [ISRC] (12 characters).
4.9 USLT Unsychronized lyric/text transcription
if not identical to what is described in this document. The contents
frame in each tag, but only one with the same content descriptor.
4.2.1 TIT1 Content group description
12.Other
Sync identifier (terminator to above string) $00 (00)

4.2.1 TMED Media type
3.2. ID3v2 extended header
The 'Media type' frame describes from which media the sound
displayed the field must be preceded with "Copyright " (C) " ", where
should be before the sync).
WOAF
milliseconds, represented as a numeric string.
Short content descrip. $00 (00)
$09 theme start
audiofile indeed is encrypted, the whole file may be considered
format of a correct sync that should be altered by ID3 encoders is as
numerical string using "." as the decimal separator. Next is an 8

In this frame any type of file can be encapsulated. After the header,
4.2.1 TRCK Track number/Position in set
121.Punk Rock
numbers preceded with % are binary. $xx is used to indicate a byte
the email address to the user, one rating byte and a four byte play
8-bit single-byte coded graphic character sets, Part 1: Latin
revoked.
numerical string.
'Premix right to left' does the same thing, but right to left.
6) (add your code which uses id3lib)
Codes for the representation of names of languages, Part 2: Alpha-3
Relative volume change, left $xx xx (xx ...)
122.Drum Solo
channel and bit 1 is used to indicate the left channel. 1 is
The 'Copyright/Legal information' frame is a URL pointing at a
TLEN
combination during the unsynchronisation.
the frames and the headers, in other words the padding. The extended
Tempo data
$01 Absolute time, 32 bit sized, using MPEG frames as unit
entered, 'Content descriptor' is $00 (00) only. Newline characters
4.8 SYTC Synchronized tempo codes
TYER
denoting where in the sound file it belongs. Each sync thus has the
Document: id3v2.3.0.txt 3rd February 1999
grouping should be sent to the indicated email address. The 'Group
such order: UFID, TIT2, MCDI, TRCK ...
4.25 COMR Commercial frame
/1 MPEG 1/2 layer I
4.18. Popularimeter
4.27 GRID Group identification registration
TOWN
Size of padding $xx xx xx xx
the artists official webpage. There may be more than one "WOAR" frame
4.3. URL link frames
Picture MIME type $00
91.Gothic Rock
TRSN
consists of a binary dump of the Table Of Contents, TOC, from the CD,
left speaker, while left to right means sound from the left bounce to
"1/2".
Content descriptor $00 (00)
TFLT
Locators (URL).", RFC 1738, December 1994.
are not subject to encryption or compression.
with the same email address.
The 'bits used for volume description' field is normally $10 (16
4.18. Popularimeter
4.2.1 TBPM BPM (beats per minute)
beginning of a file the value is always 0. There may only be one
/II Type II cassette (chrome)
right before any reverb is applied, where $00 id 0% and $FF is 100%.

byte is its revision number. In this case this is ID3v2.3.0. All
4.10 SYLT Synchronized lyric/text
Method symbol $xx
[ID3v2] Martin Nilsson, "ID3v2 informal standard".
4.2.1 TRSO Internet radio station owner
without parentheses. If this frame is not present audio type is
$0F sustained noise end
value only, is now a numeric string. You may use one or several of
formatted as in the "TYER" frame.
containing an email address, or a link to a location where an email
4.16. General encapsulated object
4.2.1 TYER Year
After the 'Owner identifier', a pointer to an unencrypted part of the
here: http://sourceforge.net/tracker/?group_id=979&atid=300979 with the (e.g.) borland project files.
method byte. These additions to the frame header, while not included
"Strangers in the night" $0A "Exchanging glances"
The equalisation bands should be ordered increasingly with reference
Text encoding $xx
'Content descriptor' is a terminated string. If no descriptor is
consists of a binary dump of the Table Of Contents, TOC, from the CD,
4.7 MLLT MPEG location lookup table
107.Booty Bass
indicates usage.
4.21 AENC Audio encryption
The 'BPM' frame contains the number of beats per minute in the
The three byte language field is used to describe the language of the
The only purpose of the 'unsynchronisation scheme' is to make the
77.Musical
define your own.
the time for the recording. This field is always four characters
field. If Peakvolume is not known these fields could be left zeroed
The 'Internet radio station owner' frame contains the name of the
"POSS" frame in each tag.
22.Death Metal
With these frames dynamic data such as webpages with touring
ownership of the file. More detailed information concerning the legal
and $00 00 if encoded as unicode. If nothing else is said newline
each in their individual "APIC" frame, but only one with the same
the email address to the user, one rating byte and a four byte play
There may be more than one "POPM" frame in each tag, but only one
MC MC (normal cassette)
/A Analog transfer from media
4.14 RVRB Reverb
B)***Your project wants to link id3lib static, and has mfc linked dynamic or has no MFC:
81.Folk-Rock
This is another subjective, alignment frame. It allows the user to


4.2.1 TCOP Copyright message
Document: id3v2.3.0.txt 3rd February 1999
described in frames. If no part is unencrypted, these fields should
in combination with the "TYER" frame.
'Method symbol' contains a value that is associated with this method
is the risk of separation of files.
0 Frame should be preserved.
TCON
its origin and contents. The information may be technical
%11111111 00000000 111xxxxx
DAT DAT
Frequency (lower 15 bits)
4.3.2 WXXX User defined URL link frame

represented as , or if newlines are
section 3.2.
Buffer size $xx xx xx
4.7. MPEG location lookup table
WOAS
WOAS
$09 theme start
"(" followed by a number from the genres list (appendix A.) and
Time stamp format $xx
grouping should be sent to the indicated email address. The 'Group
Picture data
represented as "m". Example "Cbm". Off key is represented with an "o"
character, but there may only be one currency of each type.
[PNG] Portable Network Graphics, version 1.0
frame identifiers begins with "W". Only URL link frame identifiers
78.Rock & Roll
(representing up to 256MB) are used in the size description to avoid
$01 Standard CD album with other songs
8. Appendix
MPEG frames between reference $xx xx
46.Instrumental Pop
2. Conventions in this document
$04 outro start
Reverb feedback, left to right $xx
in a tag, but only one with the same 'Owner identifier'.
between the values in this frame. Three equal adjustments for three
4.1. Unique file identifier
$05 Leaflet page
filename is case sensitive and is encoded as 'Encoding'. Then follows
each tag.
$FD audio end (start of silence)
4.4. Involved people list
j - Encryption
Codes for the representation of names of languages, Part 2: Alpha-3
the date for the recording. This field is always four characters
44.Space
followed by a one byte 'received as' field. It describes how the
If the last byte in the tag is $FF, and there is a need to eliminate
$06 is trivia/'pop up' information
beginning of the file.
The text that follows the frame header differs from that of the
People list strings
and "image/jpeg" are allowed. This format string is followed by the
email address can be found, that belongs to the organisation
4.2.2 TXXX User defined text information frame
This datablock is then optionally followed by a volume definition for
Value
4.11. Comments
TPE1
[ISO-8859-1]. There may be more than one "WXXX" frame in each tag,
WCOM
8-bit single-byte coded graphic character sets, Part 1: Latin
a larger category of sounds/music. For example, classical music is
1. Discarded if tag is altered, discarded if file is altered.

'recommended buffer size' frame should be included in every tag.
The 'Content group description' frame is used if the sound belongs to
grouping should be sent to the indicated email address. The 'Group
'Frame size' and 'Encoding' follows 'MIME type' [MIME] represented as
The ID3v2 tag header, which should be the first information in the
amount of volume that should be returned to the next echo bounce. $00
increase for every reference. If this value is two then the first
93.Psychedelic Rock
TOWN
1 is worst and 255 is best. 0 is unknown. If no personal counter is
/DD DDD
be played in the right speaker.
$00 padding (has no meaning)
beginning of the file.
If nothing else is said a string is represented as ISO-8859-1
The private data
/9 9.5 cm/s
binary picture data. This two last fields may be omitted if no
The 'Copyright/Legal information' frame is a URL pointing at a
increase for every reference. If this value is two then the first
4.18 POPM Popularimeter
is unavailable or has been removed, and must not be interpreted to
should be sorted in chronological order. The sync can be considered
$06 is trivia/'pop up' information
Left to left means the sound from the left bounce to be played in the
Compiling on win32:
$11 mainpart end
43.Punk
header in the same order as the flags indicating the additions. I.e.
4.25. Commercial frame
Encoding: $00 ISO-8859-1 [ISO-8859-1] character set is used => $00
to the first giving a range from 2 - 510 BPM, since $00 and $01 is
sync identifier.
WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
This has the side effect that all $FF 00 combinations have to be
4.2.1 TLAN Language(s)
throughout the whole tag. Values below $80 are reserved. The 'Group
alphabet No. 1. Technical committee / subcommittee: JTC 1 / SC 2
4.4 IPLS Involved people list
file, since some media doesn't allow the desired length of the
the event that the MIME media type name is omitted, "image/" will be
114.Samba
45.Meditative

sync identifier.
the frame is given, and additional ID data, if needed. Data should be
Offset to next tag $xx xx xx xx

3) make your project dependend on id3lib, and make id3lib dependend on zlib
4.23. Terms of use
altered, so they won't be affected by the decoding process. Therefore
7) Compile.
$00.
flag' is true (1) then this indicates that an ID3 tag with the
[ISO-8859-1]. There may be more than one "WXXX" frame in each tag,
4.2.1 TOLY Original lyricist(s)/text writer(s)
contains a frame identifier, which is the frame that should be linked
between every song in a playlist. The player should use the "ETC"
%11111111 00000000 111xxxxx
6. Copyright
Received as $xx
The 'Playlist delay' defines the numbers of milliseconds of silence
Valid until
The "COMM", "SYLT" and "USLT" frames may be linked with three bytes
120.Duet
format YYYYMMDD, describing for how long the price is valid. After
refinement, e.g. "(21)" or "(4)Eurodisco". Several references can be
91.Gothic Rock
"TIT2" frame in the first received tag and one in the second tag,
although it is desired that the frames are arranged in order of
as flexible and expandable as possible.
beginning of a file the value is always 0. There may only be one
kind, provided that a reference to this document is included on all
Technical committee / subcommittee: TC 68
Description $00 (00)
The 'Original filename' frame contains the preferred filename for the
MIME type $00
24.Soundtrack
4.12. Relative volume adjustment
the piece (e.g. "Adagio", "Hurricane Donna").
Owner identifier $00
Data Format Specification version 3.3", RFC 1950, May 1996.
the beginning of every track on the CD should be described with a
thijmen@id3lib.org
beginning of the file.
22.Death Metal
4.3.1 WOAR Official artist/performer webpage
Time stamp format $xx
The header is:
revoked.
There is no fixed order of the frames' appearance in the tag,
between the values in this frame. Three equal adjustments for three
65.Cabaret
playlist that features better audiofiles more often than others or it
The 'Official audio file webpage' frame is a URL pointing at a file
[ZLIB] P. Deutsch, Aladdin Enterprises & J-L. Gailly, "ZLIB

out bytes and milliseconds respectively.
or assist in its implementation may be prepared, copied, published
in a similar way to the predefined types in the "TMED" frame, but
type declared as picture type $01 and $02 respectively. There is the
reduction on the first bounce, 50% of that on the second and so on.
TPE2
database should be sent to the indicated email address. The URL
single beat-stroke followed by a beat-free period.
Frame identifier $xx xx xx
[JFIF] JPEG File Interchange Format, version 1.02
Text encoding $xx
Codes for the representation of names of languages, Part 2: Alpha-3
'Frame size' and 'Encoding' follows 'MIME type' [MIME] represented as
ISO/IEC DIS 13818-3
the audio is MPEG encoded. If the position of the next tag is known,
'Premix right to left' does the same thing, but right to left.
There may be more than one "SYLT" frame in each tag, but only one
TOPE
each in their individual "APIC" frame, but only one with the same
4.2.1 TDAT Date
played. The email is a terminated string. The rating is 1-255 where
the tag. There may only be one URL [URL] link frame of its kind in an

TPE3
for this specific encryption method. Questions regarding the
must begin with the Unicode BOM ($FF FE or $FE FF) to identify the
MPG MPEG Audio
constructed by one three character currency code, encoded according
audio. It might also be used to describing events e.g. occurring on a
Newline ($0A) characters are allowed in all "SYLT" frames and should
14.R&B
Distribution of this document is unlimited.
0 Frame is not compressed.
b - File alter preservation
7.Hip-Hop
break something, e.g. a signature. If the contents are changed,
contains a terminated string with the involvement directly followed
milliseconds deviation', must be a multiple of four. There may only

as in the "TCO" frame. Predefined refinements is appended after the
The 'Media type' frame describes from which media the sound
the left and right back channels. If this information is appended to
could be used to profile a person's taste and find other 'good' files
in the audio file as text, this time, however, in sync with the
webpage where the terms of use and ownership of the file is
Group symbol $xx
tag.
Also in there is a file called Id3lib.pas which has the interface to the dll

15.Rap
Technical committee / subcommittee: TC 46 / SC 9
4.2.1 TYER Year
defined in 'bits for bytes deviation', that describes the difference
is an identifier that explains the frames' format and content, and a
Short content descrip. $00 (00)
other vocal activities. The head includes an encoding descriptor and
4.2.1 TSRC ISRC (international standard recording code)
may be several "ENCR" frames in a tag but only one containing the
The extended header contains information that is not vital to the
align all files to a reference volume, so that you don't have to
70.Trailer
here: http://sourceforge.net/tracker/?group_id=979&atid=300979 with the (e.g.) borland project files.
streamed.
and
DCC DCC
4.10. Synchronised lyrics/text
linked or not).
sound or after the previous event. All events should be sorted in
WOAS
4.2.2 TXXX User defined text information frame
Description $00 (00)
4.7 MLLT MPEG location lookup table
75.Polka
8. Appendix
address can be found, that belongs to the organisation responsible
The 'adjustment bits' field defines the number of bits used for
4.2.1 TPE1 Lead performer(s)/Soloist(s)
$12 verse end
So far, it has only been confirmed it compiles on visual C 6.0 (service pack 5),
size excluding frame header (frame size - 10).
Software that isn't told otherwise may safely remove such frames. The

70.Trailer
useless.
4.2.1 TENC Encoded by
$09 Conductor
entered, 'Content descriptor' is $00 (00) only. Newline characters
each in their individual "APIC" frame, but only one with the same
URL $00
In such case the tag should reside between two MPEG [MPEG] frames, if
The 'Length' frame contains the length of the audiofile in
id3lib/id3com
5. The 'unsynchronisation scheme'
6. Copyright
The 'Lyricist(s)/Text writer(s)' frame is intended for the writer(s)
4.2. Text information frames
$02 Absolute time, 32 bit sized, using milliseconds as unit
part. The tempo is in BPM described with one or two bytes. If the
11.Oldies
Relative volume change, right $xx xx (xx ...)
119.Freestyle
$0F During performance
subject to unsynchronisation.
56.Southern Rock
Abolute time means that every stamp contains the time from the
4.2.1 TSSE Software/Hardware and settings used for encoding
To indicate usage of the unsynchronisation, the first bit in 'ID3
Group symbol $xx
4) Add /D ID3LIB_LINKOPTION=3 to your project options (settings, C/C++ tab) (*note this is a different option than above)
4.20. Audio encryption
description' is not a multiple of eight.
without the bit cleared. If an unknown flag is set in the second byte
2. Conventions in this document

4.1. Unique file identifier
in the audio file as text, this time, however, in sync with the
$00 Other
$E0-$EF not predefined sync 0-F
Technical committee / subcommittee: TC 46 / SC 9
If nothing else is said a string is represented as ISO-8859-1
$08 interlude start
thijmen@id3lib.org
Reverb bounces left/right is the number of bounces that should be
The 'Owner identifier' is then followed by the actual identifier,
/II Type II cassette (chrome)
$49 44 33 yy yy xx zz zz zz zz
3.3.2. Default flags
The first three bytes of the tag are always "ID3" to indicate that
Part 3: Audio (Revision of ISO/IEC 13818-3:1995)
frame ID, size and encoding fields, with a 'price payed' field. The
within "(" and ")" and are optionally followed by a text refinement,
publisher.
"1/2".
/A Analog transfer from media
database that may contain more information relevant to the content.
/NTSC NTSC
TPE3
specified. If a $00 is found directly after the 'Frame size' and the
4.2.1 TSSE Software/Hardware and settings used for encoding
If a total revision of the ID3v2 tag should be needed, there is a
tempo in the music changes, a tempo descriptor may indicate this for
experimental bit in the tag header. Have in mind that someone else
$09 theme start
$08 Artist/performer
This frame enables grouping of otherwise unrelated frames. This can
software with ID3v2.2.0 and below support should encounter version

representation of the adjustment. This is normally $10 (16 bits) for

Valid until
recording. E.g. "4/9".
"RBUF" frame in each tag.
$00 padding (has no meaning)
79.Hard Rock
0 Frame should be preserved.
padded in the beginning (highest bits) when 'bits used for volume
$03 File over the Internet
Email to user $00
This frame enables several competing offers in the same tag by
this is an ID3v2 tag, directly followed by the two version bytes. The
Size of padding $xx xx xx xx
TALB
Time stamp $xx (xx ...)
should be used when interoperability is wanted. Description is a
84.Fast Fusion
Reverb bounces left/right is the number of bounces that should be
DAT DAT
$05 outro end
Whenever a false synchronisation is found within the tag, one zeroed
information, such as title, performer, copyright etc.
file or alone in a binary file. It is recommended that this method is
information, such as equalisation curves, as well as related meta
a certain number of bits, as defined in 'bits for milliseconds
follows:
89.Bluegrass
Frame identifier $xx xx xx
useless.
byteorder in multibyte numbers is most significant byte first (e.g.
4.2.1 TSRC ISRC (international standard recording code)
version of the ID3v2 informal standard [ID3v2] (version 2.2.0),
THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED
The 'Original album/movie/show title' frame is intended for the title
$11 A bright coloured fish
4.15. Attached picture

Time stamp format $xx
purpose of this padding is to allow for adding a few additional
$06 is trivia/'pop up' information
Terminated text to be synced (typically a syllable)
117.Power Ballad
byte is its revision number. In this case this is ID3v2.3.0. All
but may be empty. There may be several pictures attached to one file,

This frame is intended for URL [URL] links concerning the audiofile
each channel while the file is played. The purpose is to be able to
size of ten bytes in every frame. The size is calculated as frame
The 'Lead artist(s)/Lead performer(s)/Soloist(s)/Performing group' is
'Premix right to left' does the same thing, but right to left.
'Owner identifier' is a null-terminated string with a URL [URL]
deviation', that describes the difference between what is said in
a - Tag alter preservation
The actual text
This frame's purpose is to be able to identify the audio file in a
3.2. ID3v2 extended header
altered functionallity.
occurring in front of the first syllable of a new word. This is also
textstring is followed by a termination ($00 (00)) all the following
$00.
syncsignal, no software will attempt to play the tag. If, for any
[URL] T. Berners-Lee, L. Masinter & M. McCahill, "Uniform Resource
TIT3
48.Ethnic
The default settings for the frames described in this document can be
If this flag is set four bytes of CRC-32 data is appended to the
between the values in this frame. Three equal adjustments for three
audiofile in a similar way to the other "T"-frames. The frame body
with the same language and content descriptor.
TEL Telephone
in a tag, but only one with the same 'Owner identifier'.
Locators (URL).", RFC 1738, December 1994.
encoding have a text encoding description byte directly after the
4.2.1 TBPM BPM (beats per minute)
/A Analog transfer from media
THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED
type declared as picture type $01 and $02 respectively. There is the
$05 outro end

denoting where in the sound file it belongs. Each sync thus has the
/3 mode 3, 32 kHz/12 bits, nonlinear, low speed
representation of the adjustment. This is normally $10 (16 bits) for
The text that follows the frame header differs from that of the
'milliseconds between reference' and the reality. The number of bits
105.Sonata
occurring in front of the first syllable of a new word. This is also
altered, so they won't be affected by the decoding process. Therefore
sound or after the previous event. All events should be sorted in
4.2.1. Text information frames - details
$0D momentary unwanted noise (Snap, Crackle & Pop)
$02 Absolute time, 32 bit sized, using milliseconds as unit
/38 38 cm/s
4.14 RVRB Reverb

Bits used for volume descr. $xx
the date for the recording. This field is always four characters
The tempo descriptor is followed by a time stamp. Every time the
made in the same frame, e.g. "(51)(39)". If the refinement should
textstring. The description has a maximum length of 64 characters,
4.21. Linked information
method byte. These additions to the frame header, while not included
The 'File owner/licensee' frame contains the name of the owner or
TPE1
Increment/decrement %x (MSB of the Frequency)
which uses the allready compiled dll.
The 'ISRC' frame should contain the International Standard Recording
Content descriptor $00 (00)
official wepage for the publisher.
The 'Time' frame is a numeric string in the HHMM format containing
This frame enables grouping of otherwise unrelated frames. This can
1 is worst and 255 is best. 0 is unknown. If no personal counter is
and
/A Analog transfer from media
without disturbing old software too much and that ID3v2 should be
The 'Subtitle/Description refinement' frame is used for information
The increment/decrement bit is 1 for increment and 0 for decrement.
in every reference, i.e. 'bits for bytes deviation'+'bits for
/2 MPEG 1/2 layer II
/A Analog transfer from media
The first three bytes of the tag are always "ID3" to indicate that
/NTSC NTSC
audio can be specified. The 'Preview start' and 'Preview length' is
the time for the recording. This field is always four characters
3.3.1. Frame header flags
22.Death Metal
ownership of the file. More detailed information concerning the legal
flag' is true (1) then this indicates that an ID3 tag with the
Text encoding $xx
format YYYYMMDD, describing for how long the price is valid. After

The default settings for the frames described in this document can be
WCOM
containing an email address, or a link to a location where an email
If a frame is longer than it should be, e.g. having more fields than

Technical committee / subcommittee: TC 68
different programs may require different 'nodefaultlib' 's, or none at all, these worked for me.
After the 'Owner identifier', a pointer to an unencrypted part of the
be used after every entry (name, event etc.) in a frame with the
There may be more than one "SYLT" frame in each tag, but only one
ISO/IEC DIS 13818-3
directly related to the contents title (e.g. "Op. 16" or "Performed
8. Appendix
This frame is intended for one-string text information concerning the
$09 theme start
Encoding: $00 ISO-8859-1 [ISO-8859-1] character set is used => $00
4) Add /D ID3LIB_LINKOPTION=1 to your project options (settings, C/C++ tab)

4.5 MCDI Music CD identifier
audiofile in a similar way to the other "T"-frames. The frame body
"TIT2" frame in the first received tag and one in the second tag,
giving a frequency range of 0 - 32767Hz:
Short content descrip. $00 (00)

This frame is intended for music that comes from a CD, so that the CD
decoding a compressed, 'unsynchronised' file, the 'unsynchronisation
byte is inserted after the first false synchronisation byte. The
The first one (id3lib/prj) creates the standard dll (no COM interface)
'Premix left to right' is the amount of left sound to be mixed in the
might be useful. The ID3v2 frame includes references that the
/45 45 rpm
Text encoding $xx
Before you compile, you'll need to rename id3lib/config.h.win32 to id3lib/config.h
rewrite the entire file. The value of the padding bytes must be $00.
IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF
If the center channel adjustment is present the following is appended
4.6 ETCO Event timing codes
and position is where in the audio the listener starts to receive,
117.Power Ballad
4.18 POPM Popularimeter
Image format is the MIME type and subtype [MIME] for the image. In
Peak volume right $xx xx (xx ...)
is 0%, $FF is 100%. If this value were $7F, there would be 50% volume
VID Video
the file should be a cover of a previously released song. The text
each in their individual "APIC" frame, but only one with the same
The ID3v2 tag size is encoded with four bytes where the most
reason, coincidence make a syncsignal appear within the tag it will
with unknown content. %x is used to indicate a bit with unknown
/2 MPEG 1/2 layer II
(debug) /nodefaultlib:"msvcprtd" or(release) /nodefaultlib:"msvcprt"
4.23. Terms of use frame
may not be $00. The volume is always represented with whole bytes,
throughout the whole tag. Values below $80 are reserved. The 'Group
This datablock is then optionally followed by a volume definition for
TCOP
The 'Lyricist(s)/Text writer(s)' frame is intended for the writer(s)
between every song in a playlist. The player should use the "ETC"
TIME
4.16. General encapsulated object
frame header:
right before any reverb is applied, where $00 id 0% and $FF is 100%.
it doesn't seem to be maintained anymore. I've included it as a service.
35.House
$15-$DF reserved for future use

88.Celtic
Text encoding $xx
"Strang" $00 xx xx "ers" $00 xx xx " in" $00 xx xx " the" $00 xx xx
30.Fusion
this is an ID3v2 tag, directly followed by the two version bytes. The
as in the "TCO" frame. Predefined refinements is appended after the
/AD ADD
Owner identifier $00
subsequent frequencies. A frequency should only be described once in
63.Jungle
would be "SYLT" encoded as:
WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
$FE audio file ends
increment and 0 is decrement.
represented as , or if newlines are

Valid until
[ID3v2] Martin Nilsson, "ID3v2 informal standard".
Distribution of this document is unlimited.
3) make your project dependend on id3lib, and make id3lib dependend on zlib
25.Euro-Techno
IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF
This has the side effect that all $FF 00 combinations have to be
the content descriptor as additional ID data.
13.Pop
the software that encounters them. At the start of every frame there
frame size. If ISO-8859-1 is used this byte should be $00, if Unicode
$05 outro end
Bit 7 in the 'ID3v2 flags' indicates whether or not
implied. The "image/png" [PNG] or "image/jpeg" [JFIF] picture format
combination during the unsynchronisation.
4.10. Synchronised lyrics/text
individual connections like HTTP and there is a possibility to begin
parser that does not know the flags function.
[ISRC] ISO 3901:1986
"TIT2" frame in the first received tag and one in the second tag,
Content description $00 (00)
4.19. Recommended buffer size
address can be found, that belongs to the organisation responsible
60.Top 40
This document and translations of it may be copied and furnished to
112.Club
break something, e.g. a signature. If the contents are changed,
value only, is now a numeric string. You may use one or several of
4.10 SYLT Synchronized lyric/text
The extended flags are a secondary flag set which describes further
"1/2".
$12 Illustration
revision will never be $FF.
/I \\include /I \\include\\id3
whom. Since standardisation of such encrypion scheme is beyond this
string according to encoding> if newlines are allowed. Any empty
81.Folk-Rock
The 'Track number/Position in set' frame is a numeric string
with the same email address.
such order: UFID, TIT2, MCDI, TRCK ...
4.24 OWNE Ownership frame
RX Remix
experimental stage.
If a frame is longer than it should be, e.g. having more fields than
sync identifier.
with the same email address.
extended header. The CRC should be calculated before
regarding the encrypted audio should be sent to the email address
copyright holder of the original sound, not the audio file itself.
string according to encoding> if newlines are allowed. Any empty
0 Frame is not encrypted.
containing an email address, or a link to a location where an email
"POSS" frame in each tag.
linked or not).
/VHS VHS
57.Comedy
The 'Content group description' frame is used if the sound belongs to
50.Darkwave
filename is case sensitive and is encoded as 'Encoding'. Then follows
35.House
explosion on-stage, turning on your screensaver etc.
The following type and refinements are defined:
unsychronisation, including padding, excluding the header but not
displayed the field must be preceded with "Copyright " (C) " ", where
not be broken apart with a sync (both the syllable and the comma
4.2.1 TCOP Copyright message
VQF Transform-domain Weighted Interleave Vector Quantization
to ISO 4217 [ISO-4217] alphabetic currency code, followed by a
Buffer size $xx xx xx
textstring is followed by a termination ($00 (00)) all the following
Price string $00
without parentheses. If this frame is not present audio type is
4.17. Play counter
byte is inserted after the first false synchronisation byte. The
that its program uses and does not fit into the other frames. The
71.Lo-Fi
16.Reggae
appended to the frame header. See section 4.26. for more
TOPE
VQF Transform-domain Weighted Interleave Vector Quantization
may be several "ENCR" frames in a tag but only one containing the
the player. All tempo descriptors should be sorted in chronological
56.Southern Rock
more information about the people behind a remix and similar
j - Encryption
k - Grouping identity
For applications like streaming audio it might be an idea to embed
None.
Unicode strings which are NULL-terminated may have the Unicode BOM
"AS IS" basis and THE AUTHORS DISCLAIMS ALL WARRANTIES, EXPRESS OR
4.12 RVAD Relative volume adjustment
this is an ID3v2 tag, directly followed by the two version bytes. The
last thing is the ability to include a company logotype. The first of
useless.
4.4. Involved people list
textstring. The description has a maximum length of 64 characters,
4.10. Synchronised lyrics/text
3) make your project dependend on id3lib, and make id3lib dependend on zlib

mainpart of the audio. The BPM is an integer and represented as a
without disturbing old software too much and that ID3v2 should be
names of those involved, and how they were involved. The body simply
byte order.
This is simply a counter of the number of times a file has been
4.3.2. User defined URL link frame
decoding software uses a syncsignal, embedded in the audiostream, to
lyrics/text transcription' frame in each tag, but only one with the
time. This frame requires a present and valid "TRCK" frame, even if
WOAR
TPE1
into this tag, a URL [URL] field, where a reference to the file where
the event that the MIME media type name is omitted, "image/" will be
The limited permissions granted above are perpetual and will not be
18.Techno
Text encoding $xx
5.Funk
for this specific database implementation. Questions regarding the
4.20. Audio encryption
descriptor is entered, 'Content descriptor' is $00 (00) only.
3. ID3v2 overview
This frames is always four characters long (until the year 10000).
For a more accurate description of the tempo of a musical piece this
4.3.1 WORS Official internet radio station homepage
tempo in the music changes, a tempo descriptor may indicate this for
itself. The 'Size of padding' is simply the total tag size excluding
A) ***Your project wants to link id3lib static, and has mfc linked static:
left speaker, while left to right means sound from the left bounce to
music in the file should be a cover of a previously released song.
unknown and the tag is altered in any way. This applies to all
0 Frame does not contain group information
characters. The ground keys are represented with "A","B","C","D","E",
Text encoding $xx
by new software. Unsynchronisation may only be made with MPEG 2 layer
unsychronisation, including padding, excluding the header but not
B)***Your project wants to link id3lib static, and has mfc linked dynamic or has no MFC:
In the frame header the size descriptor is followed by two flags
byte is inserted after the first false synchronisation byte. The
If the center channel adjustment is present the following is appended
Image format is the MIME type and subtype [MIME] for the image. In
In the examples, text within "" is a text string exactly as it
for the frame. Questions regarding the frame should be sent to the
Time stamp format is:
These are the directories you'll be needing:
The header is:

104.Chamber Music
be played in the right speaker.
could be used to profile a person's taste and find other 'good' files
58.Cult
currency code. Concatenated to this is the actual price payed, as a
ISO/IEC 13818-3:1995

size of ten bytes in every frame. The size is calculated as frame
music in the file should be a cover of a previously released song.
string containing the total numer of tracks/elements on the original
[ISO-4217] ISO 4217:1995.
impossible to maintain with accurate and up to date categories,
4.3.1. URL link frames - details
If none you try work, revert to C)
4.8 SYTC Synchronized tempo codes
sound or after the previous event. All events should be sorted in
/I \\include /I \\include\\id3
1 is worst and 255 is best. 0 is unknown. If no personal counter is
19.Industrial
or, if signed, as proof. Note that the "USER" and "TOWN" frames are
reserved. $00 is used to describe a beat-free time period, which is
The 'Length' frame contains the length of the audiofile in

contains a terminated string with the involvement directly followed
frames or enlarge existing frames within the tag without having to
4.2.1 TKEY Initial key
header in the next. This field may be omitted. Embedded tags are
encryption method should be sent to the indicated email address. The
content descriptor.
should not be used for the actual database queries. The string
only be clear if the tag does not contain any false synchronisations.
made in the same frame, e.g. "(51)(39)". If the refinement should
/9 9.5 cm/s
Milliseconds between reference $xx xx xx
81.Folk-Rock
played. The email is a terminated string. The rating is 1-255 where
that is a contact URL, with which the user can contact the seller,
References to the ID3v1 genres can be made by, as first byte, enter
for the frame. Questions regarding the frame should be sent to the
A tag must contain at least one frame. A frame must be at least 1
significance concerning the recognition of the file. An example of
The first three bytes of the tag are always "ID3" to indicate that
$0A Band/Orchestra
the unsynchronisation scheme should be applied *afterwards*. When
beginning of the file.
The ID3v2 tag size is the size of the complete tag after
the tag with this frame. The 'Owner identifier' is a null-terminated
lyrics spoken or sung in the audio. The language is represented with
[CDDB] Compact Disc Data Base
currency code. Concatenated to this is the actual price payed, as a
The 'Lead artist(s)/Lead performer(s)/Soloist(s)/Performing group' is

4.5 MCDI Music CD identifier
frames or enlarge existing frames within the tag without having to
44.Space
excluding the ID3v2 tag, represented as a numeric string.
In this frame any type of file can be encapsulated. After the header,
The first criterion is met by the simple fact that the MPEG [MPEG]
Where yy is less than $FF, xx is the 'flags' byte and zz is less than
$02 Absolute time, 32 bit sized, using milliseconds as unit
'lock on to' the audio. Since the ID3v2 tag doesn't contain a valid
Whenever a false synchronisation is found within the tag, one zeroed
'lock on to' the audio. Since the ID3v2 tag doesn't contain a valid
1) Rename config.h.win32 to config.h
4.3.1 WPAY Payment
numbers preceded with % are binary. $xx is used to indicate a byte
correct parsing of the tag information, hence the extended header is
to the same group.
/78 78.26 rpm
4.22. Position synchronisation frame
And, last but not least, there is a delphi project in cvs
location where an email address can be found, that belongs to the
80.Folk
4) Add /D ID3LIB_LINKOPTION=3 to your project options (settings, C/C++ tab) (*note this is a different option than above)
$03 mainpart start
Reverb bounces, left $xx
/PAL PAL
They are seperated with the "/" character.
ANA Other analog media
the first frame in the stream. The frame layout is:
/A Analog transfer from media
/76 76.59 rpm
this is an ID3v2 tag, directly followed by the two version bytes. The
4.2.1 TPOS Part of a set
4.5 MCDI Music CD identifier
version of the ID3v2 informal standard [ID3v2] (version 2.2.0),
frames or enlarge existing frames within the tag without having to
the frame.
lyrics spoken or sung in the audio. The language is represented with
The bitorder in ID3v2 is most significant bit first (MSB). The
4.26. Encryption method registration
4.27. Group identification registration
Setting both premix to $FF would result in a mono output (if the
3.Dance
representation of the adjustment. This is normally $10 (16 bits) for
This frame's purpose is to be able to identify the audio file in a
MD MiniDisc
specific webpage.
4.25 COMR Commercial frame
/38 38 cm/s
4.22 POSS Position synchronisation frame
The 'Copyright/Legal information' frame is a URL pointing at a
/AD ADD
The 'Title/Songname/Content description' frame is the actual name of
'Premix right to left' does the same thing, but right to left.
Relative volume change, bass $xx xx (xx ...)
4.3.1 WORS Official internet radio station homepage
$01 end of initial silence
4.23. Terms of use
4.28. Private frame
which a program was run.
tempo in the music changes, a tempo descriptor may indicate this for
bundling all needed information. That makes this frame rather complex
Text encoding $xx
4) Add /D ID3LIB_LINKOPTION=1 to your project options (settings, C/C++ tab)
4.2.1 TPE3 Conductor/performer refinement
(representing up to 256MB) are used in the size description to avoid
$02 is text transcription
the audio is MPEG encoded. If the position of the next tag is known,
Where time stamp format is:
audio stream. In these cases, the size of the buffer can be
bytes. These flags are described in section 3.3.1.
it doesn't seem to be maintained anymore. I've included it as a service.
Size $xx xx xx xx
TPE4
$01 is lyrics
field.
organisation responsible for this grouping. Questions regarding the
unknown flag is set in the first byte the frame may not be changed
24.Soundtrack
$00.
the types as ID3v1.1 did or, since the category list would be
1) Rename config.h.win32 to config.h
defined in 'bits for bytes deviation', that describes the difference
standard [ID3v2]. The informal standard is released so that
(MS recommend you distribute it in your programs dir and not in system(32) to avoid version conficts)
character date string (YYYYMMDD) followed by a string with the name
"Weather - Hurricane").
space character (making five characters), is intended for the
circumstances when the risk of file seperation is low. The frame

can be identified in databases such as the CDDB [CDDB]. The frame
TCON
26.Ambient
linked or not).
c - Experimental indicator
122.Drum Solo
of language descriptor directly followed by a content descriptor as
(debug) /nodefaultlib:"libcmtd" or(release) /nodefaultlib:"libcmt"
is unavailable or has been removed, and must not be interpreted to
Lyrics/text
$01 Standard CD album with other songs
THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED

it is likely to not be readable. The flags field is defined as
j - Encryption
should be before the sync).
14.R&B
should be added.
kind, provided that a reference to this document is included on all

excluding the extended header (total tag size - 10). Only 28 bits
0 Frame is not compressed.
ID3v2 flags %abc00000
The 'Original release year' frame is intended for the year when the
$12 Illustration
Since there might be a lot of people contributing to an audio file in
"/" character.
/3 mode 3, 32 kHz/12 bits, nonlinear, low speed
61.Christian Rap

be used after every entry (name, event etc.) in a frame with the
121.Punk Rock
I, II and III and MPEG 2.5 files.
'milliseconds between reference' and the reality. The number of bits
4.10. Synchronised lyrics/text
others, and derivative works that comment on or otherwise explain it
54.Eurodance
"MCID", "ETCO", "MLLT", "SYTC", "RVAD", "EQUA", "RVRB", "RBUF", the
If the bass channel adjustment is present the following is appended
B)***Your project wants to link id3lib static, and has mfc linked dynamic or has no MFC:
sound or after the previous event. All events should be sorted in
REE Reel
attributes of the tag. These attributes are currently defined as
In the increment/decrement field bit 2 is used to indicate the right
Universal Multiple-Octet Coded Character Set (UCS), Part 1:
TSRC
4.20. Audio encryption
WPUB
The frame ID is followed by a size descriptor, making a total header
Before you compile, you'll need to rename id3lib/config.h.win32 to id3lib/config.h
made. $FF equals an infinite number of bounces. Feedback is the
the introducuction of 'false syncsignals'.
TIT2
implementors could have a set standard before a formal standard is
email address can be found, that belongs to the organisation
throughout the whole tag. Values below $80 are reserved. The 'Group
the date for the recording. This field is always four characters
The 'Copyright/Legal information' frame is a URL pointing at a
reserved. $00 is used to describe a beat-free time period, which is
b - File alter preservation
/I Type I cassette (ferric/normal)
whom. Since standardisation of such encrypion scheme is beyond this
ID3v2 flags %abc00000
$0B Composer
address can be found, that belongs to the organisation responsible
WPUB
frame ID, size and encoding fields, with a 'price payed' field. The
Peak volume bass $xx xx (xx ...)
begin with a "(" character it should be replaced with "((", e.g. "((I
The 'Lead artist(s)/Lead performer(s)/Soloist(s)/Performing group' is
4.8 SYTC Synchronized tempo codes
retrieved from the first tag found in the file to which this link
beginning of a file the value is always 0. There may only be one

the audio to match the 'Playlist delay' time. The time is represented
reverb is applied symmetric). There may only be one "RVRB" frame in
exception of the "TXXX" frame. All the text information frames have
Terminating the start events such as "intro start" is not required.
3.3.1. Frame header flags
valid for new line characters. A syllable followed by a comma should
with a "(" character it should be replaced with "((" in the same way
4.8. Synced tempo codes
$09 theme start
contains a terminated string with the involvement directly followed
flags' should be set. This bit should only be set if the tag
allowed in the comment text string. There may be more than one
75.Polka
4.2.2. User defined text information frame
All URLs [URL] may be relative, e.g. "picture.png", "../doc.txt".
$00 padding (has no meaning)
The ownership frame might be used as a reminder of a made transaction
A. Appendix A - Genre List from ID3v1
part of a set the audio came from. This frame is used if the source
c - Read only
$02 intro start
encoded with MPEG-1/2 layer I, MPEG-1/2 layer II, MPEG-1/2 layer III
[ISO-8859-1]. There may be more than one "WXXX" frame in each tag,
attributes of the tag. These attributes are currently defined as
Whenever a false synchronisation is found within the tag, one zeroed
TPE1
and position is where in the audio the listener starts to receive,
reserved. $00 is used to describe a beat-free time period, which is
nearest byte) for every equalisation band in the following format,
LD Laserdisc
in every reference, i.e. 'bits for bytes deviation'+'bits for
points. There may be more than one "LINK" frame in a tag, but only
4.20. Audio encryption
Language $xx xx xx
whom. Since standardisation of such encrypion scheme is beyond this

MIME type $00
and "image/jpeg" are allowed. This format string is followed by the
Type of event $xx
first three characters of this field contains the currency used for
TLEN
time. This frame requires a present and valid "TRCK" frame, even if
[PNG] Portable Network Graphics, version 1.0
The three byte language field is used to describe the language of the
4.2.1 TRSN Internet radio station name
out bytes and milliseconds respectively.
3.3.1. Frame header flags
address can be found, that belongs to the organisation responsible
for this specific database implementation. Questions regarding the
$01 Standard CD album with other songs
database that may contain more information relevant to the content.
1) Rename config.h.win32 to config.h
c - Read only
TPE4

111.Slow Jam
recording(/source of sound) which the audio in the file is taken
15.Rap
4.2.1 TIT3 Subtitle/Description refinement
4.21. Linked information
72.Tribal
$14 Publisher/Studio logotype
'offset to next tag' may be used. The offset is calculated from the
The two biggest design goals were to be able to implement ID3v2
4.2.1 TMED Media type
4.2.1 TSIZ Size
Bit 7 in the 'ID3v2 flags' indicates whether or not
string according to encoding> if newlines are allowed. Any empty
4.2.1 TIT1 Content group description
a content description as terminated string, encoded as 'Encoding'.
TRSO
The limited permissions granted above are perpetual and will not be
The first three bytes of the tag are always "ID3" to indicate that
Owner identifier $00
The third one is not too much tested, it was created outside this project but
TSSE
set. The formal standard will use another version or revision number
Peak volume right $xx xx (xx ...)
74.Acid Jazz
86.Latin
Terminating the start events such as "intro start" is not required.
The actual text

The 'Playlist delay' defines the numbers of milliseconds of silence
DCC DCC
/1 MPEG 1/2 layer I
27.Trip-Hop
0.Blues
if found more suitable by the software.
and the least significant bit (LSB) is called 'bit 0'.
$02 Compressed audio on CD
audio file, frames with timecodes in different locations in the file
Followed by a list of key events in the following format:
$12 Illustration
"Strangers in the night" $0A "Exchanging glances"
order. The first beat-stroke in a time-period is at the same time as
Abolute time means that every stamp contains the time from the
TSIZ
consists of a description of the string, represented as a terminated
predefined media types found in the list below. References are made

4.3.2. User defined URL link frame
Generic coding of moving pictures and associated audio information,
$09 Conductor
Before you compile, you'll need to rename id3lib/config.h.win32 to id3lib/config.h
$0F sustained noise end
tempo codes. Each tempo code consists of one tempo part and one time
"AS IS" basis and THE AUTHORS DISCLAIMS ALL WARRANTIES, EXPRESS OR
The ownership frame might be used as a reminder of a made transaction
the left and right back channels. If this information is appended to
This frame is used to contain information from a software producer
The 'Original filename' frame contains the preferred filename for the
Owner identifier $00
audio. It might also be used to describing events e.g. occurring on a
110.Satire
%11111111 00000000 111xxxxx
Text encoding $xx
section 5.
/I Type I cassette (ferric/normal)
69.Showtunes
$05 Leaflet page
Description $00 (00)
chronological order. The type of event is as follows:
/II Type II cassette (chrome)
The 'Date' frame is a numeric string in the DDMM format containing
Seller logo
(debug) /nodefaultlib:"msvcprtd" or(release) /nodefaultlib:"msvcprt"
information like artist, album and more. There may only be one text
all the $FF 00 combinations have to be replaced with the $FF 00 00
"F" and "G" and halfkeys represented with "b" and "#". Minor is
$02 Other file icon
audio stream. In these cases, the size of the buffer can be
content descriptor, represented with as terminated textstring. If no
VQF Transform-domain Weighted Interleave Vector Quantization
4.7 MLLT MPEG location lookup table
tag.
5. The 'unsynchronisation scheme'
WCOM
id3lib/id3com
Counter $xx xx xx xx (xx ...)
"F" and "G" and halfkeys represented with "b" and "#". Minor is
increase for every reference. If this value is two then the first
Then for every reference the following data is included;
82.National Folk
useless.
This frame delivers information to the listener of how far into the
Time stamp $xx (xx ...)
Reverb left (ms) $xx xx
4.3.1. URL link frames - details
$0A Band/Orchestra
Buffer size $xx xx xx
101.Speech
information about encryption method registration.
ID3v2/file identifier "ID3"
content. The most significant bit (MSB) of a byte is called 'bit 7'
The 'Media type' frame describes from which media the sound
Code [ISRC] (12 characters).
tags into the audio stream though. If the clients connects to
represented as $00 00 02 01.
TOAL
"(" followed by a number from the genres list (appendix A.) and
To indicate usage of the unsynchronisation, the first bit in 'ID3
All URLs [URL] may be relative, e.g. "picture.png", "../doc.txt".
j - Encryption
The rest of the frames.
numerical string using "." as the decimal separator. Next is an 8
is 0%, $FF is 100%. If this value were $7F, there would be 50% volume
The following frames are declared in this draft.
displayed the field must be preceded with "Copyright " (C) " ", where
The 'Length' frame contains the length of the audiofile in
34.Acid
and MPEG-2.5, but may work with other types of encoded audio.
the four bytes of decompressed size will preceed the encryption
string several prices may be concatenated, seperated by a "/"
The 'File owner/licensee' frame contains the name of the owner or
and
/3 mode 3, 32 kHz/12 bits, nonlinear, low speed
the frame.
occurring in front of the first syllable of a new word. This is also
The 'Album/Movie/Show title' frame is intended for the title of the
Owner identifier $00
34.Acid
4.18. Popularimeter
The 'bits used for volume description' field is normally $10 (16
9. Author's Address
45.Meditative
Terminated strings are terminated with $00 if encoded with ISO-8859-1
The rest of the frames.
Preview start $xx xx
individual connections like HTTP and there is a possibility to begin
The 'time stamp' is set to zero or the whole sync is omitted if
Group dependent data
Thijmen
The increment/decrement bit is 1 for increment and 0 for decrement.
Lyrics/text
The second criterion has made a more noticeable impact on the design
1) Rename config.h.win32 to config.h
audio can be specified. The 'Preview start' and 'Preview length' is
22.Death Metal
Language $xx xx xx
Reverb feedback, left to right $xx
only.
i.e. the beginning of the next frame. If this frame is used in the
Price payed $00
unsynchronisation on the data between the extended header and the
audio. It might also be used to describing events e.g. occurring on a
The first one (id3lib/prj) creates the standard dll (no COM interface)
defined.
without knowledge in why the frame was flagged read only and
The absence of this frame means only that the copyright information
This flag, if set, tells the software that the contents of this
the same content.
The 'Buffer size' should be kept to a minimum. There may only be one
$04 Cover (back)
it is likely to not be readable. The flags field is defined as
in every reference, i.e. 'bits for bytes deviation'+'bits for
individual connections like HTTP and there is a possibility to begin
The frame ID is followed by a size descriptor, making a total header
TENC
If this flag is set four bytes of CRC-32 data is appended to the
94.Symphonic Rock
audiofile in a similar way to the other "T"-frames. The frame body
4.3.2. User defined URL link frame
header in the next. This field may be omitted. Embedded tags are

Data Format Specification version 3.3", RFC 1950, May 1996.
The 'BPM' frame contains the number of beats per minute in the
4.28. PRIV Private frame
67.Psychadelic
(debug) /nodefaultlib:"libcd" or(release) /nodefaultlib:"libc"
13.Pop
the audio is MPEG encoded. If the position of the next tag is known,
Generic coding of moving pictures and associated audio information,

be played in the right speaker.
one with the same contents. A linked frame is to be considered as
and MPEG-2.5, but may work with other types of encoded audio.
/PAL PAL
4.11 COMM Comments
music in the file should be a cover of a previously released song.
altered, so they won't be affected by the decoding process. Therefore

between every song in a playlist. The player should use the "ETC"
email address can be found, that belongs to the organisation
The original location is http://sourceforge.net/projects/id3com
9. Author's Address
4.5. Music CD identifier
The 'Buffer size' should be kept to a minimum. There may only be one
apply when the audio is completely replaced with other audio data.
Picture type: $00 Other
11.Oldies
The absence of this frame means only that the copyright information
the types as ID3v1.1 did or, since the category list would be
The tempo descriptor is followed by a time stamp. Every time the
/I Type I cassette (ferric/normal)
/76 76 cm/s

appended to the frame header. See section 4.26. for more
string etc. A numeric string is a string that consists of the
Size $xx xx xx xx
smaller than the size given in the head of the tag. A possible
be described with the 'Peak volume right' and 'Peak volume left'
The three byte language field is used to describe the language of the
%11111111 00000000 111xxxxx
The 'Payment' frame is a URL pointing at a webpage that will handle
$01 end of initial silence
of language descriptor directly followed by a content descriptor as
The bitorder in ID3v2 is most significant bit first (MSB). The
The frame ID made out of the characters capital A-Z and 0-9.
whom. Since standardisation of such encrypion scheme is beyond this
used in the text their language codes should follow according to
header is considered separate from the header proper, and as such is
unknown and the file, excluding the tag, is altered. This does not
but may be empty. There may be several pictures attached to one file,
could be used to profile a person's taste and find other 'good' files
Text encoding $xx
TLAN
"(" followed by a number from the genres list (appendix A.) and
$08 Non-musical merchandise
4.23. Terms of use
4.3.1 WCOM Commercial information
The first one (id3lib/prj) creates the standard dll (no COM interface)
41.Bass
terms might be available through the "WCOP" frame. Newlines are
The 'Subtitle/Description refinement' frame is used for information
'Premix right to left' does the same thing, but right to left.
$02 Absolute time, 32 bit sized, using milliseconds as unit
4.3.1. URL link frames - details
The 'Original lyricist(s)/text writer(s)' frame is intended for the
URL $00
milliseconds deviation', must be a multiple of four. There may only
The "TXXX", "APIC", "GEOB" and "AENC" frames may be linked with
MPEG frames between reference $xx xx
/III Type III cassette (ferric chrome)
There may only be one "ETCO" frame in each tag.
Text encoding $xx

The 'Official artist/performer webpage' frame is a URL pointing at
Reverb feedback, left to right $xx
WOAS
/WAC Wax cylinder
Content type $xx
xx "glan" $00 xx xx "ces" $00 xx xx
4.2.1 TORY Original release year
International Standard Recording Code (ISRC).
divided into the following classes. The flags may be set differently
82.National Folk
as flexible and expandable as possible.
significant bit (bit 7) is set to zero in every byte, making a total
excluding "TXXX" described in 4.2.2.>
54.Eurodance
described in the "TALB" frame is divided into several mediums, e.g. a
padding, i.e. the frames and only the frames.
Identifier
/I \\include /I \\include\\id3
Reverb left (ms) $xx xx
bytes. All unused flags must be cleared. The first byte is for
which time stamp format should be used. Then follows one or more
4.21 AENC Audio encryption
behaviour from present software/hardware.
explosion on-stage, turning on your screensaver etc.
TSSE
87.Revival
content descriptor. There may only be one picture with the picture
Compressed
content descriptor.
Picture data
i.e. the beginning of the next frame. If this frame is used in the
RAD Radio
Compiling on win32:
In such case the tag should reside between two MPEG [MPEG] frames, if
k - Grouping identity
Codes for the representation of names of languages, Part 2: Alpha-3
4.2.1 TDLY Playlist delay
$03 File over the Internet
4.2.1 TPE2 Band/orchestra/accompaniment
throughout the whole tag. Values below $80 are reserved. The 'Group
All numeric strings and URLs [URL] are always encoded as ISO-8859-1.
8. Appendix
cover of a previously released song, was released. The field is
the same content.
for this specific encryption method. Questions regarding the
sync identifier.
includes the used audio encoder and its settings when the file was
$02 intro start
1) Rename config.h.win32 to config.h
76.Retro
datablock required for decryption of the audio. There may be more
105.Sonata
2) include libprj/id3lib.dsp and zlib/prj/zlib.dsp to your workspace
numeric string containing the total number of parts in the set. E.g.
4.3.2 WXXX User defined URL link frame
$01 end of initial silence
In this frame any type of file can be encapsulated. After the header,
The 'Not predefined sync's ($E0-EF) are for user events. You might
See section 3.3.1, flag j for more information.
The following genres is defined in ID3v1
$12 Illustration
such copies and derivative works. However, this document itself may
4.21 LINK Linked information
(debug) /nodefaultlib:"MSVCRTD" or(release) /nodefaultlib:"MSVCRT"
Informal standard M. Nilsson
Technical committee / subcommittee: TC 68
ID3v2 tag as compatible as possible with existing software. There is
its origin and contents. The information may be technical
$02 Other file icon
MIME type $00
4.2.1 TSRC ISRC (international standard recording code)
Unicode strings which are NULL-terminated may have the Unicode BOM
This datablock is then optionally followed by a volume definition for
ID3v2 tag as compatible as possible with existing software. There is
Rating $xx
Time stamp format $xx
This is another subjective, alignment frame. It allows the user to
15.Rap
5.Funk
Encapsulated object
4.2.1 TPE4 Interpreted, remixed, or otherwise modified by
containing an email address, or a link to a location where an email
TPOS
be played in the right speaker.
TORY

begins with "W". All URL link frames have the following format:
filename. The filename is case sensitive and includes its suffix.
without taking the proper means to compensate, e.g. recalculating
frame but only with different contents. It is recommended to keep the
encryption method must be registered in the tag with this frame. The
The 'Official artist/performer webpage' frame is a URL pointing at
This flag indicates whether or not the frame is compressed.
The following type and refinements are defined:
circumstances when the risk of file seperation is low. The frame
as flexible and expandable as possible.
Picture type $xx
combination during the unsynchronisation.
flags are set that might mean that the tag is not readable for a
An example: The "USLT" passage
This is another way of incorporating the words, said or sung lyrics,
k - Grouping identity
3) make your project dependend on id3lib, and make id3lib dependend on zlib
first byte of ID3v2 version is it's major version, while the second
$07 refrain start
4.2.1 TRCK Track number/Position in set
part of a set the audio came from. This frame is used if the source
decoding software uses a syncsignal, embedded in the audiostream, to
4.3.1 WOAR Official artist/performer webpage
If nothing else is said a string is represented as ISO-8859-1
The 'Original artist(s)/performer(s)' frame is intended for the
encoding have a text encoding description byte directly after the
rewrite the entire file. The value of the padding bytes must be $00.
Followed by a list of key events in the following format:
followed by a termination ($00 (00)) all the following information
Language $xx xx xx
with the actual comment as a text string. Newline characters are
6.Grunge
responsible for this specific encrypted audio file. Questions
Frequency (lower 15 bits)
of the text or lyrics in the recording. They are seperated with the
(debug) /nodefaultlib:"libcd" or(release) /nodefaultlib:"libc"
The 'Content group description' frame is used if the sound belongs to
frame might be used. After the header follows one byte describing
PCM Pulse Code Modulated audio
Time stamp format $xx
[MIME] Freed, N. and N. Borenstein, "Multipurpose Internet Mail
/MW MW
The 'Language(s)' frame should contain the languages of the text or
frame ID, size and encoding fields, with a 'price payed' field. The
header in the same order as the flags indicating the additions. I.e.
4.10. Synchronised lyrics/text
which uses the allready compiled dll.
but only one with the same description.
[UNICODE] ISO/IEC 10646-1:1993.
The 'Band/Orchestra/Accompaniment' frame is used for additional
described in 4.3.2.>
37.Sound Clip
starts. It is represented as a string with a maximum length of three
11.Oldies
Do bear in mind, that if a compression scheme is used by the encoder,
4.14. Reverb
is sync identifier.
within "(" and ")" and are optionally followed by a text refinement,
Where yy is less than $FF, xx is the 'flags' byte and zz is less than
This frames is always four characters long (until the year 10000).
audio file, frames with timecodes in different locations in the file
is used it should be $01. Strings dependent on encoding is
62.Pop/Funk
no use in 'unsynchronising' tags if the file is only to be processed

(representing up to 256MB) are used in the size description to avoid
Where time stamp format is:
Premix right to left $xx
picture is to attach.
Text encoding $xx
of 28 bits. The zeroed bits are ignored, so a 257 bytes long tag is
the introducuction of 'false syncsignals'.
a larger category of sounds/music. For example, classical music is
frame but only with different contents. It is recommended to keep the
$14 theme end
4.26 ENCR Encryption method registration
Followed by a list of key events in the following format:
The 'time stamp' is set to zero or the whole sync is omitted if
good to use in conjunction with this one. The frame begins, after the
4.2.1 TCOM Composer
i.e. the beginning of the next frame. If this frame is used in the
Software that isn't told otherwise may safely remove such frames. The
Offset to next tag $xx xx xx xx
This flag tells the software what to do with this frame if it is
"Strang" $00 xx xx "ers" $00 xx xx " in" $00 xx xx " the" $00 xx xx
encoder.
Where yy is less than $FF, xx is the 'flags' byte and zz is less than
4.6 ETCO Event timing codes
Software that isn't told otherwise may safely remove such frames. The
characters. The ground keys are represented with "A","B","C","D","E",
81.Folk-Rock
Text encoding $xx
5) Add the following include dirs to your program:
This flag tells the software what to do with this frame if it is
out bytes and milliseconds respectively.
should not be used for the actual database queries. The string
contains a, now corrected, false synchronisation. The bit should
106.Symphony
size excluding frame header (frame size - 10).
Frames that may be linked and need no additional data are "IPLS",
"AS IS" basis and THE AUTHORS DISCLAIMS ALL WARRANTIES, EXPRESS OR
4.8. Synchronised tempo codes
music in the file should be a cover of a previously released song.
information, such as equalisation curves, as well as related meta
official wepage for the publisher.
be played in the right speaker.
/3 mode 3, 32 kHz/12 bits, nonlinear, low speed
such order: UFID, TIT2, MCDI, TRCK ...
only one containing the same symbol and only one containing the same

The two biggest design goals were to be able to implement ID3v2
lyrics spoken or sung in the audio. The language is represented with
4.27 GRID Group identification registration
Identifiers beginning with "X", "Y" and "Z" are for experimental use
reference points out the second frame, the 2nd reference the 4th
reference points out the second frame, the 2nd reference the 4th
and distributed, in whole or in part, without restriction of any
103.Opera
first byte of ID3v2 version is it's major version, while the second
play. There may only be one "PCNT" frame in each tag. When the
A) ***Your project wants to link id3lib static, and has mfc linked static:
The 'Copyright message' frame, which must begin with a year and a
80.Folk
The 'Internet radio station name' frame contains the name of the
Locators (URL).", RFC 1738, December 1994.
4. Declared ID3v2 frames
$05 As note sheets
each tag.
belongs to a set of frames a group identifier must be registered in
4.3. URL link frames
description' is not a multiple of eight.
into this tag, a URL [URL] field, where a reference to the file where
explosion on-stage, turning on your screensaver etc.
the types as ID3v1.1 did or, since the category list would be
id3lib/libprj
retrieved from the first tag found in the file to which this link
"TIT2" frame in the first received tag and one in the second tag,
35.House
in a project. The 'Involved people list' is a frame containing the
This flag tells the software what to do with this frame if it is
frame is intended to be read only. Changing the contents might
2.Country
0 Frame is not encrypted.
Relative volume change, bass $xx xx (xx ...)
4.15. Attached picture
Owner identifier $00
4.2.1 TALB Album/Movie/Show title
TKEY
Where the 'Extended header size', currently 6 or 10 bytes, excludes
$10 intro end
24.Soundtrack
them is the 'Picture MIME type' field containing information about
out bytes and milliseconds respectively.
Preview start $xx xx
but it's an easier solution than if one tries to achieve the same
(C) is one character showing a C in a circle.
The 'Content group description' frame is used if the sound belongs to
MIME type $00
followed by an extended header. The extended header is described in
only one containing the same symbol and only one containing the same
3. ID3v2 overview
$02 intro start
The third one is not too much tested, it was created outside this project but
27.Trip-Hop
ID3v2 flags %abc00000
Size of padding $xx xx xx xx
Buffer size $xx xx xx
4.2.1 TRSO Internet radio station owner
followed by the actual URL. The URL is always encoded with ISO-8859-1
4.3.1 WCOM Commercial information
a content descriptor. The body consists of the actual text. The
The 'Original release year' frame is intended for the year when the
Since standardisation of such a database is beyond this document, all
A. Appendix A - Genre List from ID3v1
$00.
deviation', that describes the difference between what is said in
$02 Other file icon
of 28 bits. The zeroed bits are ignored, so a 257 bytes long tag is
and "image/jpeg" are allowed. This format string is followed by the
6) (add your code which uses id3lib)
'bytes between reference' and 'milliseconds between reference' points
followed by encoding, language and content descriptors and is ended
(debug) /nodefaultlib:"MSVCRTD" or(release) /nodefaultlib:"MSVCRT"
the file should be a cover of a previously released song. The
$05 is chord (e.g. "Bb F Fsus")
with the same email address.
91.Gothic Rock
$12345678 would be encoded $12 34 56 78).
follows
this is an ID3v2 tag, directly followed by the two version bytes. The
in the frame header size but are included in the 'frame size' field,
4.3.2. User defined URL link frame

35.House
4.26. Encryption method registration

which uses the allready compiled dll.
of a description of the string, represented as a terminated string,
not be broken apart with a sync (both the syllable and the comma
They are seperated with the "/" character.
allowed in the text. There may only be one "USER" frame in a tag.
None.
represented as , or 39.Noise
TDAT
want to synchronise your music to something, like setting of an
if found more suitable by the software.
/SECAM SECAM
begins with "W". All URL link frames have the following format:
TRCK
The bitorder in ID3v2 is most significant bit first (MSB). The
URL $00
4.2.1 TOPE Original artist(s)/performer(s)
ISO/IEC 13818-3:1995
4.14 RVRB Reverb
4.11 COMM Comments
be one "RVAD" frame in each tag.
4.17. Play counter
27.Trip-Hop
but other types may be used, not for these types though. This is used
TDAT
unknown and the file, excluding the tag, is altered. This does not
syncsignal, no software will attempt to play the tag. If, for any
/71 71.29 rpm
Time stamp format $xx
number of "PRIV" frames as low as possible.
114.Samba
Relative volume change, center $xx xx (xx ...)
4.8. Synced tempo codes
104.Chamber Music
/BETA BETAMAX
Code [ISRC] (12 characters).
names of those involved, and how they were involved. The body simply
/9 9.5 cm/s
every transmission with a tag, then this tag should include a
textstring. The description has a maximum length of 64 characters,
more than one "WCOM" frame in a tag, but not with the same content.
For applications like streaming audio it might be an idea to embed

VQF Transform-domain Weighted Interleave Vector Quantization
lyrics spoken or sung in the audio. The language is represented with
43.Punk
counter, intended to be increased with one for every time the file is
The 'BPM' frame contains the number of beats per minute in the
52.Electronic
Terminating the start events such as "intro start" is not required.
content descriptor.
recording. This may be extended with a "/" character and a numeric
None.
94.Symphonic Rock
URL $00
a digital signature. There may be several "GRID" frames in a tag but
of language descriptor directly followed by a content descriptor as
/A Analog transfer from media
(debug) /nodefaultlib:"MSVCRTD" or(release) /nodefaultlib:"MSVCRT"
4.4. Involved people list
TKEY
as a validator of the subsequent string.
The 'Publisher' frame simply contains the name of the label or
in a similar way to the predefined types in the "TMED" frame, but
Total frame CRC $xx xx xx xx
4.18 POPM Popularimeter
CD CD
WCOM
Abolute time means that every stamp contains the time from the
81.Folk-Rock
different programs may require different 'nodefaultlib' 's, or none at all, these worked for me.
Every tag that is picked up after the initial/first tag is to be
/5 mode 5, 44.1 kHz/16 bits, linear
exception of the "TXXX" frame. All the text information frames have
4.3.1. URL link frames - details
If a frame is longer than it should be, e.g. having more fields than
the content descriptor as additional ID data.
Terminating the start events such as "intro start" is not required.
symbol' may optionally be followed by encryption specific data. There
And should be replaced with:
CR Cover
should be ignored and not be displayed. All text frame identifiers
flag' is true (1) then this indicates that an ID3 tag with the
MC MC (normal cassette)
Since there might be a lot of people contributing to an audio file in
4.3.1 WCOM Commercial information
URL containing an email address, or a link to a location where an
This is a more subjective function than the previous ones. It allows
RX Remix
last thing is the ability to include a company logotype. The first of
official wepage for the publisher.
0 Frame should be preserved.
the artists official webpage. There may be more than one "WOAR" frame
Identifiers beginning with "X", "Y" and "Z" are for experimental use
by new software. Unsynchronisation may only be made with MPEG 2 layer
size descriptor that allows software to skip unknown frames.
audio stream he picked up; in effect, it states the time offset of
sound or after the previous event. All events should be sorted in
4.5. Music CD Identifier
"F" and "G" and halfkeys represented with "b" and "#". Minor is
0 Frame does not contain group information
This document is an informal standard and replaces the ID3v2.2.0
46.Instrumental Pop
Text encoding $xx
$01 Absolute time, 32 bit sized, using MPEG frames as unit
(debug) /nodefaultlib:"MSVCRTD" or(release) /nodefaultlib:"MSVCRT"
The following genres are Winamp extensions
experimental stage.
allowed, in the frame descriptions. All Unicode strings [UNICODE] use
4.23. Terms of use
bundling all needed information. That makes this frame rather complex
must begin with the Unicode BOM ($FF FE or $FE FF) to identify the
TOWN
consists of a binary dump of the Table Of Contents, TOC, from the CD,
64.Native American
terms might be available through the "WCOP" frame. Newlines are
the beat description occurs. There may only be one "SYTC" frame in
the beat description occurs. There may only be one "SYTC" frame in
'Owner identifier' is a null-terminated string with a URL [URL]
version of the ID3v2 informal standard [ID3v2] (version 2.2.0),
the encoder) is a null terminated string followed by a time stamp
1 is worst and 255 is best. 0 is unknown. If no personal counter is
frame might be used. After the header follows one byte describing
indicated email address. The tag may contain more than one "PRIV"
WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
Text encoding $xx
TRDA
4.2.1 TPE3 Conductor/performer refinement
$09 theme start
An ID3v2 tag can be detected with the following pattern:
originated. This may be a text string or a reference to the
77.Musical
only one containing the same symbol and only one containing the same
6. Copyright
The 'Conductor' frame is used for the name of the conductor.
"OWNE" frame in a tag.
$10 Movie/video screen capture
apply when the audio is completely replaced with other audio data.
/I \\include /I \\include\\id3
Premix right to left $xx
described in the "TALB" frame is divided into several mediums, e.g. a
[PNG] Portable Network Graphics, version 1.0
a content description as terminated string, encoded as 'Encoding'.
VID Video
4.2.1 TALB Album/Movie/Show title
URL containing an email address, or a link to a location where an
the file should be a cover of a previously released song. The
frame might be used. After the header follows one byte describing
$00 Other
or, if no other data follows, be completely omitted. There may only
4.3.1 WCOP Copyright/Legal information
They are seperated with the "/" character.
the process of paying for this file.
$01 Absolute time, 32 bit sized, using MPEG [MPEG] frames as unit
same language and content descriptor.
The 'Track number/Position in set' frame is a numeric string
is used it should be $01. Strings dependent on encoding is
evolved from the ID3 tagging system. The ID3v2 offers a flexible way
/3 MPEG 1/2 layer III
The 'Part of a set' frame is a numeric string that describes which
/2.5 MPEG 2.5
4.11 COMM Comments
2) include prj/id3lib.dsp and zlib/prj/zlib.dsp to your workspace (*note this is a different id3lib than above)
[ISO-8859-1]. There may be more than one "WXXX" frame in each tag,
62.Pop/Funk
name is omitted, "image/" will be implied. Currently only "image/png"
the frame is given, and additional ID data, if needed. Data should be
[ID3v2] Martin Nilsson, "ID3v2 informal standard".
TFLT
THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED
The 'Interpreted, remixed, or otherwise modified by' frame contains
The 'Owner identifier' is a null-terminated string with a URL [URL]
numerical string using "." as the decimal separator. Next is an 8
"OWNE" frame in a tag.
binary picture data. This two last fields may be omitted if no
character.
the first frame in the stream. The frame layout is:
/AAC Advanced audio compression
40.AlternRock
4.19. Recommended buffer size
[ZLIB] P. Deutsch, Aladdin Enterprises & J-L. Gailly, "ZLIB
MIME type $00
containing an email address, or a link to a location where an email
unsychronisation, including padding, excluding the header but not
the first frame in the stream. The frame layout is:
65.Cabaret
[ID3v2] Martin Nilsson, "ID3v2 informal standard".
If this flag is set four bytes of CRC-32 data is appended to the
People list strings
Abolute time means that every stamp contains the time from the
The 'adjustment bits' field defines the number of bits used for
Price string $00
They are seperated with the "/" character.

software with ID3v2.2.0 and below support should encounter version
Then for every reference the following data is included;
/80 80 rpm
This flag indicates whether or not this frame belongs in a group
$06 is trivia/'pop up' information
value only, is now a numeric string. You may use one or several of
In the examples, text within "" is a text string exactly as it
Increment/decrement %00xxxxxx
three characters according to ISO-639-2. If more than one language is
id3lib/prj
93.Psychedelic Rock
text information frames and the URL link frames.
sound or after the previous event. All events should be sorted in
4.24. Ownership frame
music in the file should be a cover of a previously released song.
datablock required for decryption of the audio. There may be more
Reverb bounces left/right is the number of bounces that should be
be one "EQUA" frame in each tag.
occurring in front of the first syllable of a new word. This is also
the frame.
$06 As note sheets in a book with other sheets

[MIME] Freed, N. and N. Borenstein, "Multipurpose Internet Mail

Extended Flags $xx xx
$01 Unicode [UNICODE] character set is used => $00 00 is
/AA AAD
$09 Conductor
subsequent frequencies. A frequency should only be described once in
" night" $00 xx xx 0A "Ex" $00 xx xx "chang" $00 xx xx "ing" $00 xx
if found more suitable by the software.
The 'Copyright/Legal information' frame is a URL pointing at a
are not subject to encryption or compression.
only one containing the same symbol and only one containing the same
not the same as a music-free time period. $01 is used to indicate one
/I Type I cassette (ferric/normal)
can be identified in databases such as the CDDB [CDDB]. The frame
wanted it may be omitted. When the counter reaches all one's, one
TBPM
picture is to attach.
symbol' contains a value that associates the frame with this group
string with a URL [URL] containing an email address, or a link to a
not be modified in any way and reissued as the original document.
bytes for the 'lead out' making a maximum of 804 bytes. The offset to
TT Turntable records
5) Add the following include dirs to your program:
Adjustment bits $xx
appended to the frame header. See section 4.26. for more

frame identifiers begins with "W". Only URL link frame identifiers
55.Dream
WOAR
and the least significant bit (LSB) is called 'bit 0'.

16-bit unicode 2.0 (ISO/IEC 10646-1:1993, UCS-2). Unicode strings
TDAT
the frames and the headers, in other words the padding. The extended
This frame enables several competing offers in the same tag by
87.Revival
121.Punk Rock
the same content.
All numeric strings and URLs [URL] are always encoded as ISO-8859-1.
4.13. Equalisation
followed by a termination ($00 (00)) all the following information
each tag.

symbol' contains a value that associates the frame with this group
4.23. Terms of use frame
52.Electronic
CD CD
The 'Content type', which previously was stored as a one byte numeric
11.Oldies
4.15. Attached picture
This document and the information contained herein is provided on an
such copies and derivative works. However, this document itself may
Relative volume change, bass $xx xx (xx ...)
others, and derivative works that comment on or otherwise explain it
out bytes and milliseconds respectively.
If none you try work, revert to C)
120.Duet
The 'Album/Movie/Show title' frame is intended for the title of the
4.2.1 TSRC ISRC (international standard recording code)
$0A Band/Orchestra
82.National Folk

id3lib/prj
TOLY
Encoding: $00 ISO-8859-1 [ISO-8859-1] character set is used => $00
[MIME] Freed, N. and N. Borenstein, "Multipurpose Internet Mail
The first one (id3lib/prj) creates the standard dll (no COM interface)
"AS IS" basis and THE AUTHORS DISCLAIMS ALL WARRANTIES, EXPRESS OR
Reverb bounces, right $xx
beginning of the file.
$13 Band/artist logotype
counter thus making the counter eight bits bigger. The counter must
"F" and "G" and halfkeys represented with "b" and "#". Minor is
TRDA
The 'Copyright/Legal information' frame is a URL pointing at a
$08 interlude start

Description $00 (00)
as a validator of the subsequent string.
the file should be a cover of a previously released song. The

circumstances when the risk of file seperation is low. The frame
the beginning of every track on the CD should be described with a
which time stamp format should be used. Then follows one or more
it doesn't seem to be maintained anymore. I've included it as a service.
Encoding: $00 ISO-8859-1 [ISO-8859-1] character set is used => $00
100.Humour
a - Tag alter preservation
4.2.1 TDLY Playlist delay
represented as "m". Example "Cbm". Off key is represented with an "o"
4.2.1 TPOS Part of a set
may be several "ENCR" frames in a tag but only one containing the
This document describes the ID3v2.3.0, which is a more developed
4.3.1 WPUB Publishers official webpage
4) Add /D ID3LIB_LINKOPTION=1 to your project options (settings, C/C++ tab)
be used after every entry (name, event etc.) in a frame with the
section 3.2.
a - Unsynchronisation
additional ID data.
characters 0-9 only.
performer(s) of the original recording, if for example the music in
significance concerning the recognition of the file. An example of
Code [ISRC] (12 characters).
space character (making five characters), is intended for the
The ID3v2 tag size is encoded with four bytes where the most
1) Rename config.h.win32 to config.h
$07 Lead artist/lead performer/soloist
is reflected by the revision number in the header of the tag.
97.Chorus
TOWN
Encryption data
$05 outro end
Picture data
false synchronisations in the tag, at least one byte of padding
tags into the audio stream though. If the clients connects to
/2 mode 2, 32 kHz/16 bits, linear
TSSE
4.26. Encryption method registration
padded in the beginning (highest bits) when 'bits used for volume
14.R&B

/A Analog transfer from media
TRCK
Technical committee / subcommittee: TC 46 / SC 9
95.Slow Rock
part. The tempo is in BPM described with one or two bytes. If the
/WAC Wax cylinder
Text encoding $xx
4.15. Attached picture
3.3.1. Frame header flags

to the same group.
4.3.1 WPUB Publishers official webpage
5.Funk
The 'Content type', which previously was stored as a one byte numeric
with the actual comment as a text string. Newline characters are
only used when the files are stored on a CD-ROM or other
4.3.2 WXXX User defined URL link frame
The version is followed by one the ID3v2 flags field, of which
TCOM
The 'Title/Songname/Content description' frame is the actual name of
Locators (URL).", RFC 1738, December 1994.
be left zeroed. After the 'preview length' field follows optionally a
114.Samba
without taking the proper means to compensate, e.g. recalculating
This has the side effect that all $FF 00 combinations have to be
Encoding: $00 ISO-8859-1 [ISO-8859-1] character set is used => $00
/III Type III cassette (ferric chrome)
first byte of ID3v2 version is it's major version, while the second
URL containing an email address, or a link to a location where an
numeric string containing the total number of parts in the set. E.g.
follows
4.21 AENC Audio encryption
4.2.1 TCOM Composer
organisation that encoded the audio file. This field may contain a
35.House
optional.
Tempo data
5) Add the following include dirs to your program:
4.5 MCDI Music CD identifier
$06 verse start
first byte has the value $FF, one more byte follows, which is added
should be before the sync).
4.2.1 TCON Content type
of language descriptor directly followed by a content descriptor as
revoked.
not be broken apart with a sync (both the syllable and the comma
/1 standard, 48 kHz/16 bits, linear
This has the side effect that all $FF 00 combinations have to be
information frame of its kind in an tag. If the textstring is
The 'Composer(s)' frame is intended for the name of the composer(s).
35.House
$02 Absolute time, 32 bit sized, using milliseconds as unit
by a terminated string with a short description of the product. The
16-bit unicode 2.0 (ISO/IEC 10646-1:1993, UCS-2). Unicode strings
43.Punk
The 'Internet radio station name' frame contains the name of the
/DD DDD
The 'Internet radio station owner' frame contains the name of the
The 'Original lyricist(s)/text writer(s)' frame is intended for the
file or alone in a binary file. It is recommended that this method is
(debug) /nodefaultlib:"MSVCRTD" or(release) /nodefaultlib:"MSVCRT"
be at least 32-bits long to begin with.
RAD Radio
88.Celtic
4.4. Involved people list
81.Folk-Rock
in a similar way to the other "W"-frames. The frame body consists
TMED
$03 mainpart start
4.2.1 TOFN Original filename
$14 theme end
of the seller as the last field in the frame. There may only be one
address can be found, that belongs to the organisation responsible
4.2.1 TPUB Publisher
in a tag, but only one with the same 'Owner identifier'.
information, such as equalisation curves, as well as related meta
$04 Cover (back)
without disturbing old software too much and that ID3v2 should be
originated. This may be a text string or a reference to the
4.7 MLLT MPEG location lookup table
The first one (id3lib/prj) creates the standard dll (no COM interface)
The 'Internet radio station name' frame contains the name of the
88.Celtic
Encryption info
25.Euro-Techno
Contact URL $00
Premix left to right $xx

be one "MLLT" frame in each tag.
TOLY
So far, it has only been confirmed it compiles on visual C 6.0 (service pack 5),
4.Disco
such copies and derivative works. However, this document itself may
4.24 OWNE Ownership frame
TLAN

valid for new line characters. A syllable followed by a comma should
The 'Track number/Position in set' frame is a numeric string
122.Drum Solo
and the least significant bit (LSB) is called 'bit 0'.
which may be up to 64 bytes. There may be more than one "UFID" frame
The header is:

This flag tells the software what to do with this frame if it is
1.Classic Rock
This is another subjective, alignment frame. It allows the user to
TV Television
optional.
42.Soul
Whenever a false synchronisation is found within the tag, one zeroed
$03 Cover (front)
which time stamp format should be used. Then follows one or more
[UNICODE] ISO/IEC 10646-1:1993.
allowed in the text. There may only be one "USER" frame in a tag.
WOAS
which uses the allready compiled dll.
47.Instrumental Rock
4.17. Play counter
4.19 RBUF Recommended buffer size
contains a, now corrected, false synchronisation. The bit should
audiofile in a similar way to the other "T"-frames. The frame body
possibility to put only a link to the image file by using the 'MIME
URL
address can be found, that belongs to the organisation responsible
numerical string using "." as the decimal separator. Next is an 8
with a "(" character it should be replaced with "((" in the same way
16-bit unicode 2.0 (ISO/IEC 10646-1:1993, UCS-2). Unicode strings
URL $00
information, price information or plain ordinary news can be added to
the file should be a cover of a previously released song. The text
The following type and refinements are defined:
always an ISO-8859-1 text string. There may be more than one "GEOB"
the beginning of every track on the CD should be described with a
/I \\include /I \\include\\id3
98.Easy Listening
byte is inserted in front of the counter thus making the counter
of the original recording (or source of sound), if for example the
appended to the frame header. See section 4.26. for more
the beginning of every track on the CD should be described with a
/II Type II cassette (chrome)
4.24. Ownership frame
occurring in front of the first syllable of a new word. This is also
This frame enables grouping of otherwise unrelated frames. This can
altered functionallity.
4.2.1. Text information frames - details
"Strangers in the night" $0A "Exchanging glances"
(debug) /nodefaultlib:"msvcprtd" or(release) /nodefaultlib:"msvcprt"
TIT3
41.Bass
This datablock is then optionally followed by a volume definition for
content type $03 - $04.
This frame is intended for URL [URL] links concerning the audiofile
91.Gothic Rock
frame header:
Relative volume change, right $xx xx (xx ...)
to frequency. All frequencies don't have to be declared. The
tag.
by a terminated string with a short description of the product. The
/I Type I cassette (ferric/normal)
kind, provided that a reference to this document is included on all
section 5.
represented by bit 5 in the increase/decrease field.
4.3.1. URL link frames - details
recommended by the server using this frame. If the 'embedded info
4.4. Involved people list
audio is delivered when bought according to the following list:
character.
4.16. General encapsulated object
/FM FM
105.Sonata
4.2.1 TSSE Software/Hardware and settings used for encoding
[UNICODE] ISO/IEC 10646-1:1993.
This is followed by 2 bytes + ('adjustment bits' rounded up to the
result with several frames. The frame begins, after the frame ID,
assumed to be "MPG".
CR Cover
is unavailable or has been removed, and must not be interpreted to
Thijmen
Relative volume change, left back $xx xx (xx ...)
TIT1
reduction on the first bounce, 50% of that on the second and so on.
Every tag that is picked up after the initial/first tag is to be
the software that encounters them. At the start of every frame there
out bytes and milliseconds respectively.
/33 33.33 rpm
11.Oldies
120.Duet
The 'Original lyricist(s)/text writer(s)' frame is intended for the
playlist that features better audiofiles more often than others or it
ISO/IEC 13818-3:1995
j - Encryption
Reverb bounces, left $xx
DCC DCC
63.Jungle
Encoding: $00 ISO-8859-1 [ISO-8859-1] character set is used => $00
MD MiniDisc
optional padding. A field is a piece of information; one value, a
31.Trance
contains a frame identifier, which is the frame that should be linked
To indicate usage of the unsynchronisation, the first bit in 'ID3
4.5 MCDI Music CD identifier
/WAC Wax cylinder
This frame enables several competing offers in the same tag by
only one containing the same symbol and only one containing the same
purpose of this padding is to allow for adding a few additional

The extended flags are a secondary flag set which describes further
/A Analog transfer from media
4.2.1 TRSO Internet radio station owner
of the original recording (or source of sound), if for example the
Reverb feedback, left to left $xx
[ISO-639-2] ISO/FDIS 639-2.
101.Speech

string with a URL [URL] containing an email address, or a link to a
revision will never be $FF.
the first frame in the stream. The frame layout is:
apply when the audio is completely replaced with other audio data.
Time stamp format is:
unsynchronisation on the data between the extended header and the
MPEG frames between reference $xx xx
with a "(" character it should be replaced with "((" in the same way
out bytes and milliseconds respectively.
header is considered separate from the header proper, and as such is
59.Gangsta
play. There may only be one "PCNT" frame in each tag. When the
between what is said in 'bytes between reference' and the reality and
$12 Illustration
separating words should mark the beginning of a new word, thus
10.New Age
Informal standard M. Nilsson
$0D momentary unwanted noise (Snap, Crackle & Pop)
59.Gangsta
of language descriptor directly followed by a content descriptor as
/IV Type IV cassette (metal)
The frame ID is followed by a size descriptor, making a total header
The first criterion is met by the simple fact that the MPEG [MPEG]
Technical committee / subcommittee: TC 68
consists of a binary dump of the Table Of Contents, TOC, from the CD,
4.22. Position synchronisation frame

internet radio station from which the audio is streamed.
Abolute time means that every stamp contains the time from the
filename is case sensitive and is encoded as 'Encoding'. Then follows
1 Frame should be discarded.
TMED
in a tag, but only one with the same 'Owner identifier'.
encoding have a text encoding description byte directly after the
100.Humour
(http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/id3lib/id3lib-stable/delphi/)
This frame delivers information to the listener of how far into the
without the bit cleared. If an unknown flag is set in the second byte
information, such as equalisation curves, as well as related meta

set. The formal standard will use another version or revision number
See section 3.3.1, flag j for more information.
This frame is indended for any kind of full text information that
None.
Extensions (MIME) Part One: Format of Internet Message Bodies",
40.AlternRock
Where time stamp format is:
Compiling on win32:
If the bass channel adjustment is present the following is appended
TIT3
All URLs [URL] may be relative, e.g. "picture.png", "../doc.txt".
30.Fusion
4.9 USLT Unsychronized lyric/text transcription
$02 Absolute time, 32 bit sized, using milliseconds as unit
Picture MIME type $00
4.3. URL link frames
1) Rename config.h.win32 to config.h
short description of the picture, represented as a terminated
which picture format is used. In the event that the MIME media type
4.3.1 WORS Official internet radio station homepage
4) Add /D ID3LIB_LINKOPTION=1 to your project options (settings, C/C++ tab)
5) Add the following include dirs to your program:
72.Tribal
4.2.1 TPE2 Band/orchestra/accompaniment
method byte. These additions to the frame header, while not included
linked or not).
here: http://sourceforge.net/tracker/?group_id=979&atid=300979 with the (e.g.) borland project files.
A few considerations regarding whitespace characters: Whitespace
counter thus making the counter eight bits bigger. The counter must
containing an email address, or a link to a location where an email
The equalisation bands should be ordered increasingly with reference
Peak volume bass $xx xx (xx ...)
58.Cult
Where time stamp format is:
7. References
/I \\include /I \\include\\id3
VID Video
WPUB
4.11 COMM Comments

frame's content, according to ISO-639-2 [ISO-639-2].
predefine an equalisation curve within the audio file. There may only
that its program uses and does not fit into the other frames. The
equalisation curve in the reading software should be interpolated
The 'Owner identifier' is a null-terminated string with a URL [URL]
$02 Absolute time, 32 bit sized, using milliseconds as unit
The ID3v2 tag size is the size of the complete tag after
with the actual comment as a text string. Newline characters are
62.Pop/Funk
file or alone in a binary file. It is recommended that this method is
If nothing else is said a string is represented as ISO-8859-1
the transaction, encoded according to ISO 4217 [ISO-4217] alphabetic
The 'Composer(s)' frame is intended for the name of the composer(s).

only be clear if the tag does not contain any false synchronisations.
See section 3.3.1, flag j for more information.
Content descriptor $00 (00)
Description $00 (00)
4.2.1 TPE4 Interpreted, remixed, or otherwise modified by
separating words should mark the beginning of a new word, thus
of the text or lyrics in the recording. They are seperated with the
to the same group.
mean that the sound is public domain. Every time this field is
Newline ($0A) characters are allowed in all "SYLT" frames and should
number of "PRIV" frames as low as possible.
4.2.1 TKEY Initial key
They are seperated with the "/" character.
reserved. $00 is used to describe a beat-free time period, which is
one with the same contents. A linked frame is to be considered as
the frame is given, and additional ID data, if needed. Data should be
the frames.
Text encoding $xx
46.Instrumental Pop
frame identifiers begins with "W". Only URL link frame identifiers
4.17. Play counter
long.
A. Appendix A - Genre List from ID3v1
88.Celtic
The 'Encoded by' frame contains the name of the person or
flags' should be set. This bit should only be set if the tag
in this document may change for clarifications but never for added or
additional information. This information will be added to the frame
4.15. Attached picture
TIT3
46.Instrumental Pop
87.Revival
1) Rename config.h.win32 to config.h
51.Techno-Industrial
3. ID3v2 overview
in the frame header size but are included in the 'frame size' field,
/A Analog transfer from media
"(" followed by a number from the genres list (appendix A.) and
number of "PRIV" frames as low as possible.
The 'Copyright/Legal information' frame is a URL pointing at a
99.Acoustic
57.Comedy
filename. The filename is case sensitive and includes its suffix.
The following genres is defined in ID3v1
122.Drum Solo
a content description as terminated string, encoded as 'Encoding'.
formatted as in the "TYER" frame.
4.3.1 WPUB Publishers official webpage
THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED
/4 4.75 cm/s (normal speed for a two sided cassette)
TSRC
The tempo descriptor is followed by a time stamp. Every time the
Peak volume left $xx xx (xx ...)
long.
4.2.1 TORY Original release year
92.Progressive Rock
Code [ISRC] (12 characters).
often sorted in different musical sections (e.g. "Piano Concerto",
4.13. Equalisation
1 Frame is compressed using zlib [zlib] with 4 bytes for
e.g. "(MC) with four channels". If a text refinement should begin
Data Format Specification version 3.3", RFC 1950, May 1996.
4.8. Synced tempo codes
4.2.1 TENC Encoded by
optional.
42.Soul
combination during the unsynchronisation.
86.Latin
3) make your project dependend on id3lib, and make id3lib dependend on zlib
grouping should be sent to the indicated email address. The 'Group
Time stamp $xx (xx ...)
WCOM
(debug) /nodefaultlib:"MSVCRTD" or(release) /nodefaultlib:"MSVCRT"
34.Acid
4.5 MCDI Music CD identifier
defined in 'bits for bytes deviation', that describes the difference
A tag is the whole tag described in this document. A frame is a block
Where time stamp format is:
People list strings
To indicate usage of the unsynchronisation, the first bit in 'ID3
bytes. All unused flags must be cleared. The first byte is for
4.2.1 TDLY Playlist delay
This frame is indended for any kind of full text information that
$02 Compressed audio on CD
time. This frame requires a present and valid "TRCK" frame, even if
and
described in the "TALB" frame is divided into several mediums, e.g. a
played. The value is increased by one every time the file begins to
38.Gospel
Preview length $xx xx
[URL] T. Berners-Lee, L. Masinter & M. McCahill, "Uniform Resource

extended header. The CRC should be calculated before
4.13. Equalisation
$02 Absolute time, 32 bit sized, using milliseconds as unit
Encryption info
be played in the right speaker.
b - Extended header
(representing up to 256MB) are used in the size description to avoid
27.Trip-Hop
[ZLIB] P. Deutsch, Aladdin Enterprises & J-L. Gailly, "ZLIB
4.2.1 TBPM BPM (beats per minute)
Language $xx xx xx
xx "glan" $00 xx xx "ces" $00 xx xx
4.23. Terms of use
TENC
ID3 tag version 2.3.0
counter reaches all one's, one byte is inserted in front of the
Every tag that is picked up after the initial/first tag is to be
but if you got it working on Borland or other compilers, drop me a mail, or better, add a patch
4.2.1 TSSE Software/Hardware and settings used for encoding
the first frame in the stream. The frame layout is:
regarding the encrypted audio should be sent to the email address
3) make your project dependend on id3lib, and make id3lib dependend on zlib
4.3.1 WPUB Publishers official webpage
31.Trance
4.3.1 WPUB Publishers official webpage

Technical committee / subcommittee: TC 46 / SC 9
4.22 POSS Position synchronisation frame
tags into the audio stream though. If the clients connects to
88.Celtic
Increment/decrement %00xxxxxx
webpage where the terms of use and ownership of the file is
a content description as terminated string, encoded as 'Encoding'.
Reverb right (ms) $xx xx
each tag.
And, last but not least, there is a delphi project in cvs
This has the side effect that all $FF 00 combinations have to be
Codes for the representation of currencies and funds.
smaller than the size given in the head of the tag. A possible
frame header. Every frame with the same group identifier belongs
This is simply a counter of the number of times a file has been
The 'Part of a set' frame is a numeric string that describes which
defined in 'bits for bytes deviation', that describes the difference
encoded with MPEG-1/2 layer I, MPEG-1/2 layer II, MPEG-1/2 layer III
/NTSC NTSC

involvement and so on. There may only be one "IPLS" frame in each
WOAF
RFC 2045, November 1996.
/3 MPEG 1/2 layer III
part of the tag (i.e. only one "RVRB" frame allowed, whether it's
only be clear if the tag does not contain any false synchronisations.
binary picture data. This two last fields may be omitted if no
Image format is the MIME type and subtype [MIME] for the image. In
The 'Payment' frame is a URL pointing at a webpage that will handle

described.
/AD ADD
34.Acid
4.2.1 TOWN File owner/licensee
and the least significant bit (LSB) is called 'bit 0'.
4.13 EQUA Equalization
4.2.1 TEXT Lyricist/Text writer
$12 Illustration
$01 Unicode [UNICODE] character set is used => $00 00 is
TPUB
writers are seperated with the "/" character.
recommended by the server using this frame. If the 'embedded info
the introducuction of 'false syncsignals'.
of the ID3v2 tag. It is constructed as a container for several
break something, e.g. a signature. If the contents are changed,
additional ID data.
back channel and bit 3 for the left back channel.
might have used the same identifier as you. All other identifiers are
(debug) /nodefaultlib:"MSVCRTD" or(release) /nodefaultlib:"MSVCRT"
4.24. Ownership frame
/2.5 MPEG 2.5
information from another ID3v2 tag that might reside in another audio
Picture type: $00 Other
$05 is chord (e.g. "Bb F Fsus")
method byte. These additions to the frame header, while not included
reverb is applied symmetric). There may only be one "RVRB" frame in
4.5 MCDI Music CD identifier
4.22. Position synchronisation frame
4.26. Encryption method registration
3.3.2. Default flags
the content descriptor as additional ID data.
a digital signature. There may be several "GRID" frames in a tag but
TCOP
end of the ID3 tag), making the size of all the frames together
single beat-stroke followed by a beat-free period.
$06 is trivia/'pop up' information
Deviation in milliseconds %xxx....
101.Speech
audio. It might also be used to describing events e.g. occurring on a
characters 0-9 only.
Content descriptor $00 (00)
without parentheses. If this frame is not present audio type is
played. The value is increased by one every time the file begins to
The 'Size' frame contains the size of the audiofile in bytes,
textstring. The description has a maximum length of 64 characters,
"TIT2" frame in the first received tag and one in the second tag,
experimental stage.
'Method symbol' contains a value that is associated with this method
The following type and refinements are defined:
frames or enlarge existing frames within the tag without having to
frame is intended to be read only. Changing the contents might
6. Copyright
smaller than the size given in the head of the tag. A possible
$0F During performance
chronological order. The type of event is as follows:
number of "PRIV" frames as low as possible.
85.Bebob
4.27. Group identification registration
The 'Owner identifier' is then followed by the actual identifier,
Time stamp format $xx
/45 45 rpm
3.Dance
" night" $00 xx xx 0A "Ex" $00 xx xx "chang" $00 xx xx "ing" $00 xx
pointing at the homepage of the internet radio station.
can figure out any genre)" or "(55)((I think...)". The following new
Language $xx xx xx
4.27 GRID Group identification registration
$05 outro end
address can be found, that belongs to the organisation responsible
in a project. The 'Involved people list' is a frame containing the
channel and bit 1 is used to indicate the left channel. 1 is
characters. The ground keys are represented with "A","B","C","D","E",
$11 A bright coloured fish
description' is not a multiple of eight.
with other frames. If set a group identifier byte is added to the
refinement, e.g. "(21)" or "(4)Eurodisco". Several references can be
byte is its revision number. In this case this is ID3v2.3.0. All
/1 standard, 48 kHz/16 bits, linear
4.2.1 TCON Content type
database that may contain more information relevant to the content.
Buffer size $xx xx xx
4.2.2. User defined text information frame
Unicode strings which are NULL-terminated may have the Unicode BOM
For applications like streaming audio it might be an idea to embed
of the text or lyrics in the recording. They are seperated with the
$03 is movement/part name (e.g. "Adagio")
If the bass channel adjustment is present the following is appended
3. Preserved if tag is altered, discarded if file is altered.
3.3.1. Frame header flags
The 'Track number/Position in set' frame is a numeric string
/A Analog transfer from media
specific webpage.
performers are seperated with the "/" character.
$06 Media (e.g. lable side of CD)
1. Table of contents
to frequency. All frequencies don't have to be declared. The
4.7. MPEG location lookup table
4.21 AENC Audio encryption
To identify with which method a frame has been encrypted the
possibility to put only a link to the image file by using the 'MIME
If nothing else is said a string is represented as ISO-8859-1
flag' is true (1) then this indicates that an ID3 tag with the
set. The formal standard will use another version or revision number
4.22. Position synchronisation frame
$11 A bright coloured fish
4.2.1 TPUB Publisher
67.Psychadelic
4.27. Group identification registration
(http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/id3lib/id3lib-stable/delphi/)
last thing is the ability to include a company logotype. The first of
$0B Composer
which time stamp format should be used. Then follows one or more
Coding of moving pictures and associated audio for digital storage

exception of the "TXXX" frame. All the text information frames have
Information
lyrics/text transcription' frame in each tag, but only one with the
/AM AM
descriptor is entered, 'Content descriptor' is $00 (00) only.
The original location is http://sourceforge.net/projects/id3com
69.Showtunes
$0E During recording
and "image/jpeg" are allowed. This format string is followed by the
appears in a file. Numbers preceded with $ are hexadecimal and
TEXT
4.1. Unique file identifier
Where time stamp format is:
space character (making five characters), is intended for the
which time stamp format should be used. Then follows one or more
'decompressed size' appended to the frame header.
4.2.1 TPUB Publisher
playlist that features better audiofiles more often than others or it
4.11. Comments
followed by encoding, language and content descriptors and is ended
The 'Part of a set' frame is a numeric string that describes which
represented as "m". Example "Cbm". Off key is represented with an "o"
$07 Music on other media
"F" and "G" and halfkeys represented with "b" and "#". Minor is
mean that the sound is public domain. Every time this field is
If a total revision of the ID3v2 tag should be needed, there is a
with a "(" character it should be replaced with "((" in the same way
Content descriptor $00 (00)
if not identical to what is described in this document. The contents
WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
$06 verse start
Text encoding $xx
This document and translations of it may be copied and furnished to

$02 Absolute time, 32 bit sized, using milliseconds as unit
recording(/source of sound) which the audio in the file is taken
numerical value where "." is used as decimal seperator. In the price
appended to the frame header. See section 4.26. for more
4.28. Private frame
Language $xx xx xx
thijmen@id3lib.org
The 'Official artist/performer webpage' frame is a URL pointing at
the audio to match the 'Playlist delay' time. The time is represented
altered, so they won't be affected by the decoding process. Therefore
Distribution of this document is unlimited.
Bits for bytes deviation $xx
is an identifier that explains the frames' format and content, and a
Owner identifier $00
A tag must contain at least one frame. A frame must be at least 1
Value
85.Bebob
4.16. General encapsulated object
lyrics spoken or sung in the audio. The language is represented with
each channel while the file is played. The purpose is to be able to
tempo codes. Each tempo code consists of one tempo part and one time
This flag tells the software what to do with this frame if it is
and
/4 4.75 cm/s (normal speed for a two sided cassette)
4.2.1 TKEY Initial key
part of the tag and has the same restrictions as if it was a physical
The 'Commercial information' frame is a URL pointing at a webpage
Compressed
69.Showtunes
7) Compile.
Group dependent data
4.2.1 TFLT File type
set. The formal standard will use another version or revision number
The price string is followed by an 8 character date string in the
assumed to be "MPG".
None.
107.Booty Bass
entered, 'Content descriptor' is $00 (00) only. Newline characters
The following frames are declared in this draft.
Relative volume change, bass $xx xx (xx ...)
different programs may require different 'nodefaultlib' 's, or none at all, these worked for me.
$09 theme start
72.Tribal
the frame is given, and additional ID data, if needed. Data should be
4.3.1 WPAY Payment
which time stamp format should be used. Then follows one or more
organisation that encoded the audio file. This field may contain a
/SECAM SECAM
$02 Other file icon
CD TOC
The 'Playlist delay' defines the numbers of milliseconds of silence
possibility to put only a link to the image file by using the 'MIME
4.12 RVAD Relative volume adjustment
4.2.1 TRSN Internet radio station name
increment and 0 is decrement.
to the first giving a range from 2 - 510 BPM, since $00 and $01 is
So far, it has only been confirmed it compiles on visual C 6.0 (service pack 5),
$01 Standard CD album with other songs
The 'Payment' frame is a URL pointing at a webpage that will handle
TRSN
software with ID3v2.2.0 and below support should encounter version
4.28. PRIV Private frame
which time stamp format should be used. Then follows one or more
4.2.1 TCON Content type
/A Analog transfer from media
/MW MW
3.3.2. Default flags
Abolute time means that every stamp contains the time from the
WOAF
MPEG frames between reference $xx xx
16-bit unicode 2.0 (ISO/IEC 10646-1:1993, UCS-2). Unicode strings
Frame ID $xx xx xx xx (four characters)
define your own.
identifier'.
0 Frame is not encrypted.
Relative volume change, bass $xx xx (xx ...)
8. Appendix
short description of the picture, represented as a terminated
Code [ISRC] (12 characters).
should not be used for the actual database queries. The string
6. Copyright
revision will never be $FF.
The second bit (bit 6) indicates whether or not the header is

4.3.2 WXXX User defined URL link frame
numbers preceded with % are binary. $xx is used to indicate a byte
ID3v2/file identifier "ID3"
between the values in this frame. Three equal adjustments for three
the types as ID3v1.1 did or, since the category list would be
$02 Absolute time, 32 bit sized, using milliseconds as unit
In such case the tag should reside between two MPEG [MPEG] frames, if
define your own.
allowed, in the frame descriptions. All Unicode strings [UNICODE] use
long.
4.22. Position synchronisation frame
To indicate usage of the unsynchronisation, the first bit in 'ID3
This flag indicates whether or not this frame belongs in a group
of a description of the string, represented as a terminated string,
without the bit cleared. If an unknown flag is set in the second byte
0.Blues
standard [ID3v2]. The informal standard is released so that
5. The 'unsynchronisation scheme'
reduction on the first bounce, 50% of that on the second and so on.
by a terminated string with the involvee followed by a new
4.26. Encryption method registration
Where time stamp format is:
in the audio file as text, this time, however, in sync with the
4.9. Unsychronised lyrics/text transcription
belongs to a set of frames a group identifier must be registered in
This frame indicates if the actual audio stream is encrypted, and by
This document and the information contained herein is provided on an
represented as $00 00 02 01.
unknown and the file, excluding the tag, is altered. This does not
[ID3v2] Martin Nilsson, "ID3v2 informal standard".
database that may contain more information relevant to the content.
To keep space waste as low as possible this frame may be used to link
The 'Official audio file webpage' frame is a URL pointing at a file
a larger category of sounds/music. For example, classical music is
$02 intro start
42.Soul
In the frame header the size descriptor is followed by two flags
This is followed by 2 bytes + ('adjustment bits' rounded up to the
defined in 'bits for bytes deviation', that describes the difference
If none you try work, revert to C)
to the existing frame, after the left and right back channels. The
to ISO 4217 [ISO-4217] alphabetic currency code, followed by a
109.Porn Groove
"MCID", "ETCO", "MLLT", "SYTC", "RVAD", "EQUA", "RVRB", "RBUF", the
$05 Leaflet page
6) (add your code which uses id3lib)
The 'Initial key' frame contains the musical key in which the sound
four bytes absolute CD-frame address per track, and not with absolute
part of a set the audio came from. This frame is used if the source
a larger category of sounds/music. For example, classical music is
version number and a size descriptor in the ID3v2 header.
The 'Subtitle/Description refinement' frame is used for information
define your own.
should not be used for the actual database queries. The string
4.27. Group identification registration
If a total revision of the ID3v2 tag should be needed, there is a
Peak volume left $xx xx (xx ...)
revisions are backwards compatible while major versions are not. If
Owner identifier $00
4.7. MPEG location lookup table
as a terminated string encoded with ISO 8859-1 [ISO-8859-1]. The
/SECAM SECAM
1 Frame should be discarded.
$04 outro start
a certain number of bits, as defined in 'bits for milliseconds
the types as ID3v1.1 did or, since the category list would be
b - Extended header
Seller logo
[JFIF] JPEG File Interchange Format, version 1.02
rewrite the entire file. The value of the padding bytes must be $00.
4.2.1 TRCK Track number/Position in set
without knowledge in why the frame was flagged read only and
82.National Folk
$01 Absolute time, 32 bit sized, using MPEG [MPEG] frames as unit
character is forbidden. In ISO-8859-1 a new line is represented, when
between what is said in 'bytes between reference' and the reality and
A tag is the whole tag described in this document. A frame is a block
in this document may change for clarifications but never for added or
4.24. Ownership frame
0 Frame is not encrypted.
into this tag, a URL [URL] field, where a reference to the file where
Copyright (C) Martin Nilsson 1998. All Rights Reserved.
4.16 GEOB General encapsulated object
(debug) /nodefaultlib:"libcd" or(release) /nodefaultlib:"libc"
4.Disco
The 'Date' frame is a numeric string in the DDMM format containing
/3 MPEG 1/2 layer III
"TXXX" frame in each tag, but only one with the same description.
Relative volume change, left $xx xx (xx ...)
followed by an extended header. The extended header is described in
4.2.1 TEXT Lyricist/Text writer
The 'Internet radio station owner' frame contains the name of the
4.8. Synced tempo codes
If the center channel adjustment is present the following is appended
Position $xx (xx ...)
The ID3v2 tag size is the size of the complete tag after
define your own.
Bits for milliseconds dev. $xx
4.1. Unique file identifier
None.
of the ID3v2 tag. It is constructed as a container for several
be taken care of by the 'unsynchronisation scheme' described in
and "image/jpeg" are allowed. This format string is followed by the
descriptor is entered, 'Content descriptor' is $00 (00) only.
/9 9.5 cm/s
4.14. Reverb
6) (add your code which uses id3lib)
Peak volume right $xx xx (xx ...)
additional ID data.
4.2.2. User defined text information frame
Flags $xx xx
CD TOC
/A Analog transfer from media
This flag indicates whether or not this frame belongs in a group
For a more accurate description of the tempo of a musical piece this

4.2.1 TOFN Original filename
99.Acoustic
Content descriptor $00 (00)
113.Tango
If this flag is set four bytes of CRC-32 data is appended to the
cover of a previously released song, was released. The field is
93.Psychedelic Rock
This flag, if set, tells the software that the contents of this
string with a URL [URL] containing an email address, or a link to a
unknown and the file, excluding the tag, is altered. This does not
but it's an easier solution than if one tries to achieve the same
$02 Other file icon
of a description of the string, represented as a terminated string,
official webpage for the source of the audio file, e.g. a movie.
The 'Original lyricist(s)/text writer(s)' frame is intended for the
/I Type I cassette (ferric/normal)
4.2.1 TOPE Original artist(s)/performer(s)
Coding of moving pictures and associated audio for digital storage
2. Conventions in this document
120.Duet
/76 76 cm/s
87.Revival
4.13 EQUA Equalization
4.2. Text information frames
/6 mode 6, 44.1 kHz/16 bits, 'wide track' play
The bitorder in ID3v2 is most significant bit first (MSB). The
The following type and refinements are defined:
Text encoding $xx
allowed, with $0A only. Frames that allow different types of text
define your own.
The 'Owner identifier' is a null-terminated string with a URL [URL]
/I Type I cassette (ferric/normal)
5) Add the following include dirs to your program:
URL containing an email address, or a link to a location where an
RAD Radio
4.10. Synchronised lyrics/text
TCOM
3.2. ID3v2 extended header
itself. The 'Size of padding' is simply the total tag size excluding
1 Frame is compressed using zlib [zlib] with 4 bytes for
3.3.2. Default flags
/VHS VHS
/5 mode 5, 44.1 kHz/16 bits, linear
WOAF
should be used when interoperability is wanted. Description is a
circumstances when the risk of file seperation is low. The frame
4.15. Attached picture
as a terminated string encoded with ISO 8859-1 [ISO-8859-1]. The
method byte. These additions to the frame header, while not included
The 'Copyright message' frame, which must begin with a year and a
be left zeroed. After the 'preview length' field follows optionally a
database that may contain more information relevant to the content.
URL $00
Description $00 (00)
Bits for milliseconds dev. $xx
4.2.1. Text information frames - details
8) dump id3lib.dll in your programs project dir.
alphabet No. 1. Technical committee / subcommittee: JTC 1 / SC 2
4.13. Equalisation
13.Pop
apply when the audio is completely replaced with other audio data.
The purpose of this frame is to specify how good an audio file is.
numerical value where "." is used as decimal seperator. In the price
specified. If a $00 is found directly after the 'Frame size' and the
4.20. Audio encryption
Codes for the representation of names of languages, Part 2: Alpha-3
a digital signature. There may be several "GRID" frames in a tag but
Peak volume right back $xx xx (xx ...)
C)***Your project wants to link id3lib dynamic: (instructions below for vc)
4.21 LINK Linked information
Whenever a false synchronisation is found within the tag, one zeroed
/NTSC NTSC
with the actual comment as a text string. Newline characters are

copyright holder of the original sound, not the audio file itself.
The 'adjustment bits' field defines the number of bits used for
Time stamp format $xx
Encoding: $00 ISO-8859-1 [ISO-8859-1] character set is used => $00
Thijmen
The 'Original filename' frame contains the preferred filename for the
playlist that features better audiofiles more often than others or it
The 'Time' frame is a numeric string in the HHMM format containing
content descriptor. There may only be one picture with the picture
The tempo descriptor is followed by a time stamp. Every time the
$01 Absolute time, 32 bit sized, using MPEG frames as unit
47.Instrumental Rock
4.18. Popularimeter
address can be found, that belongs to the organisation responsible
4.28. PRIV Private frame
would be "SYLT" encoded as:
ID3v2 size 4 * %0xxxxxxx
A tag is the whole tag described in this document. A frame is a block
The 'Year' frame is a numeric string with a year of the recording.
with a "(" character it should be replaced with "((" in the same way
x - CRC data present
only be clear if the tag does not contain any false synchronisations.
be used when some frames are to be signed. To identify which frames
Peak volume bass $xx xx (xx ...)
the unsynchronisation scheme should be applied *afterwards*. When
the frame is given, and additional ID data, if needed. Data should be
Encryption data
without parentheses. If this frame is not present audio type is
three or higher it should simply ignore the whole tag. Version and
Text encoding $xx
10.New Age
TKEY
unsynchronisation is used (see section 5 for details); a set bit
[ISRC] ISO 3901:1986
The purpose of this frame is to specify how good an audio file is.
predefined media types found in the list below. References are made
regarding the encrypted audio should be sent to the email address
The 'Publisher' frame simply contains the name of the label or
first byte of ID3v2 version is it's major version, while the second
The first three bytes of the tag are always "ID3" to indicate that
(debug) /nodefaultlib:"msvcprtd" or(release) /nodefaultlib:"msvcprt"
4.2.1 TCOP Copyright message
TDAT
appended to the frame header. See section 4.26. for more
Where time stamp format is:
whom. Since standardisation of such encrypion scheme is beyond this
back channel and bit 3 for the left back channel.
/DD DDD
currently only three flags are used.
lyrics/text transcription' frame in each tag, but only one with the
73.Acid Punk
information from another ID3v2 tag that might reside in another audio
of language descriptor directly followed by a content descriptor as
the tag. There may only be one URL [URL] link frame of its kind in an
The 'Year' frame is a numeric string with a year of the recording.
adjust the audio. If the volume peak levels are known then this could
Preview length $xx xx
Filename $00 (00)
4.3.1 WPAY Payment
(debug) /nodefaultlib:"MSVCRTD" or(release) /nodefaultlib:"MSVCRT"
6) (add your code which uses id3lib)
$06 Media (e.g. lable side of CD)
3) make your project dependend on id3lib, and make id3lib dependend on zlib
4.14 RVRB Reverb
109.Porn Groove
Seller
Content descriptor $00 (00)
60.Top 40
/IV Type IV cassette (metal)
of the text or lyrics in the recording. They are seperated with the
id3lib/id3com
Frequency (lower 15 bits)
in a project. The 'Involved people list' is a frame containing the
if found more suitable by the software.
24.Soundtrack
6. Copyright

The 'Not predefined sync's ($E0-EF) are for user events. You might
throughout the whole tag. Values below $80 are reserved. The 'Method
$F0-$FC reserved for future use
61.Christian Rap
$0F During performance
4.11. Comments
If none you try work, revert to C)
The following genres is defined in ID3v1
information frame of its kind in an tag. If the textstring is
$12345678 would be encoded $12 34 56 78).
string according to encoding> if newlines are allowed. Any empty
currency code. Concatenated to this is the actual price payed, as a
specified in this document, that indicates that additions to the
specific webpage.
4.6. Event timing codes
Frequency (lower 15 bits)
/A Analog transfer from media
The third one is not too much tested, it was created outside this project but
Embedded info flag %0000000x
increment and 0 is decrement.
4.3.1 WOAS Official audio source webpage

99.Acoustic
but if you got it working on Borland or other compilers, drop me a mail, or better, add a patch
This flag indicates whether or not this frame belongs in a group
as a numeric string.
1. Discarded if tag is altered, discarded if file is altered.
4) Add /D ID3LIB_LINKOPTION=3 to your project options (settings, C/C++ tab) (*note this is a different option than above)
7. References
36.Game
encryption method must be registered in the tag with this frame. The
4.1. Unique file identifier
'Premix right to left' does the same thing, but right to left.
to ISO 4217 [ISO-4217] alphabetic currency code, followed by a
/9 9.5 cm/s
ID3v2 size 4 * %0xxxxxxx
1 Frame should be discarded.
for the frame. Questions regarding the frame should be sent to the
34.Acid
to ISO 4217 [ISO-4217] alphabetic currency code, followed by a
None.
4.2.1 TPUB Publisher
4.3.2. User defined URL link frame
7. References
/76 76 cm/s
1 Frame should be discarded.
$01 Unicode [UNICODE] character set is used => $00 00 is
37.Sound Clip
%11111111 111xxxxx
individual connections like HTTP and there is a possibility to begin
tag.
$0C time change
/I \\include /I \\include\\id3
Content type: $00 is other
containing an email address, or a link to a location where an email
ownership of the file. More detailed information concerning the legal
representation of the adjustment. This is normally $10 (16 bits) for
appended to the frame header. See section 4.26. for more
reserved. $00 is used to describe a beat-free time period, which is

the four bytes of decompressed size will preceed the encryption
4. Declared ID3v2 frames
4.23 USER Terms of use
TOWN
[URL] T. Berners-Lee, L. Masinter & M. McCahill, "Uniform Resource
milliseconds, represented as a numeric string.
Then for every reference the following data is included;
[PNG] Portable Network Graphics, version 1.0
throughout the whole tag. Values below $80 are reserved. The 'Method
content descriptor.
The 'Official internet radio station homepage' contains a URL
long.
4.3.1 WOAS Official audio source webpage
three characters according to ISO-639-2. If more than one language is
4.15. Attached picture
4.3.1 WCOM Commercial information
the value $FF have the same function)
field. If Peakvolume is not known these fields could be left zeroed
ownership of the file. More detailed information concerning the legal
TOPE
$0C time change
Unicode strings which are NULL-terminated may have the Unicode BOM
Peak volume bass $xx xx (xx ...)
TPUB
with the actual comment as a text string. Newline characters are
115.Folklore
copyright message, if the audio file also is copyrighted by the
120.Duet
subject to unsynchronisation.
Received as $xx
[MPEG] ISO/IEC 11172-3:1993.
audio stream. In these cases, the size of the buffer can be
To increase performance and accuracy of jumps within a MPEG [MPEG]
Content type: $00 is other
denoting where in the sound file it belongs. Each sync thus has the
information, such as title, performer, copyright etc.
here: http://sourceforge.net/tracker/?group_id=979&atid=300979 with the (e.g.) borland project files.
118.Rhythmic Soul
address can be found, that belongs to the organisation responsible
recommended by the server using this frame. If the 'embedded info
e.g. "(MC) with four channels". If a text refinement should begin
same symbol and only one containing the same owner identifier. The
85.Bebob
$02 Absolute time, 32 bit sized, using milliseconds as unit
4) Add /D ID3LIB_LINKOPTION=1 to your project options (settings, C/C++ tab)
$00.
the CD's only got one track. There may only be one "MCDI" frame in
4.23 USER Terms of use
revoked.
9.Metal
URL $00
belongs to a set of frames a group identifier must be registered in
played. The value is increased by one every time the file begins to
For applications like streaming audio it might be an idea to embed
between what is said in 'bytes between reference' and the reality and
be one "EQUA" frame in each tag.
can figure out any genre)" or "(55)((I think...)". The following new
/MW MW
Codes for the representation of names of languages, Part 2: Alpha-3
4.19. Recommended buffer size
the frame.
long.
"/" character.
field. If Peakvolume is not known these fields could be left zeroed
x - CRC data present
which time stamp format should be used. Then follows one or more
Name of seller $00 (00)
licensee of the file and it's contents.
specified in this document, that indicates that additions to the
in this document may change for clarifications but never for added or
TSIZ
Valid until
(http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/id3lib/id3lib-stable/delphi/)
frame header. Every frame with the same group identifier belongs
4.19 RBUF Recommended buffer size
xx "glan" $00 xx xx "ces" $00 xx xx
/I \\include /I \\include\\id3
10.New Age
id3lib/prj
/A Analog transfer from media
symbol' may optionally be followed by encryption specific data. There
TKEY
followed by a one byte 'received as' field. It describes how the
$0F sustained noise end
character.
"/" character.
People list strings
Flags $xx xx
4.11 COMM Comments
35.House
its origin and contents. The information may be technical
This frame allows synchronisation with key events in a song or sound.
/A Analog transfer from media
bytes. All unused flags must be cleared. The first byte is for
into this tag, a URL [URL] field, where a reference to the file where
In this frame any type of file can be encapsulated. After the header,
Description $00 (00)
The ID3 tag described in this document is mainly targeted at files
TT Turntable records
type declared as picture type $01 and $02 respectively. There is the
Reverb bounces, left $xx
$0E sustained noise
"TXXX" frame in each tag, but only one with the same description.
encryption method should be sent to the indicated email address. The
" night" $00 xx xx 0A "Ex" $00 xx xx "chang" $00 xx xx "ing" $00 xx
in a tag if the audio contains more than one performer, but not with
The rest of the frames.
does not fit in any other frame. It consists of a frame header
chronological order. The type of event is as follows:
122.Drum Solo
the transaction, encoded according to ISO 4217 [ISO-4217] alphabetic
TALB
with the actual comment as a text string. Newline characters are

4.10 SYLT Synchronized lyric/text
The 'Encoded by' frame contains the name of the person or
2. Conventions in this document
descriptor is entered, 'Content descriptor' is $00 (00) only.
/45 45 rpm
to ISO 4217 [ISO-4217] alphabetic currency code, followed by a
$05 outro end
audio file, frames with timecodes in different locations in the file
/A Analog transfer from media
The following frames are declared in this draft.
The three byte language field is used to describe the language of the
95.Slow Rock
ID and additional data
Peak volume bass $xx xx (xx ...)

the file should be a cover of a previously released song. The
$08 Artist/performer
header in the next. This field may be omitted. Embedded tags are
as a validator of the subsequent string.
[ISO-8859-1] characters in the range $20 - $FF. Such strings are
The 'Title/Songname/Content description' frame is the actual name of
header in the next. This field may be omitted. Embedded tags are
The header is:
They are seperated with the "/" character.
points. There may be more than one "LINK" frame in a tag, but only
indicates usage.
Picture type $xx
ID3v2 version $03 00
108.Primus
WORS
Peak volume bass $xx xx (xx ...)
4.16. General encapsulated object
different programs may require different 'nodefaultlib' 's, or none at all, these worked for me.
as a validator of the subsequent string.
streamed.
4.2.1 TIT1 Content group description
file, is 10 bytes as follows:
Group symbol $xx
$01 is lyrics
VID Video
long.
throughout the whole tag. Values below $80 are reserved. The 'Group

x - CRC data present
Buffer size $xx xx xx
$0D Recording Location
of the ID3v2 tag. It is constructed as a container for several
string containing the total numer of tracks/elements on the original
4.5. Music CD identifier
different programs may require different 'nodefaultlib' 's, or none at all, these worked for me.
This flag tells the software what to do with this frame if it is
always an ISO-8859-1 text string. There may be more than one "GEOB"
with unknown content. %x is used to indicate a bit with unknown
here: http://sourceforge.net/tracker/?group_id=979&atid=300979 with the (e.g.) borland project files.
39.Noise
and $00 00 if encoded as unicode. If nothing else is said newline
which picture format is used. In the event that the MIME media type
RX Remix
TBPM
the tag. There may only be one URL [URL] link frame of its kind in an
The actual text
4.28. PRIV Private frame
string several prices may be concatenated, seperated by a "/"
Picture MIME type $00
Universal Multiple-Octet Coded Character Set (UCS), Part 1:
pointing at the homepage of the internet radio station.
If the last byte in the tag is $FF, and there is a need to eliminate
section 3.2.
This frame's purpose is to be able to identify the audio file in a
be one "EQUA" frame in each tag.
TIT2
3.1. ID3v2 header
part of the tag and has the same restrictions as if it was a physical
Relative volume change, right back $xx xx (xx ...)
The rest of the frames.
Extended header size $xx xx xx xx
false synchronisations in the tag, at least one byte of padding
'recommended buffer size' frame. If the client is connected to a
by a terminated string with the involvee followed by a new
/2.5 MPEG 2.5
The default settings for the frames described in this document can be
If this flag is set four bytes of CRC-32 data is appended to the
Lyrics/text
(representing up to 256MB) are used in the size description to avoid
represented as , or if newlines are
long.
original recording, if for example the music in the file should be a
The 'Software/Hardware and settings used for encoding' frame
122.Drum Solo
How to start
useless.
grouping should be sent to the indicated email address. The 'Group
13.Pop
software with ID3v2.2.0 and below support should encounter version
How to start
The 'Copyright message' frame, which must begin with a year and a
4.2.1 TOLY Original lyricist(s)/text writer(s)
ID and additional data
tag, except when stated otherwise in the frame description. If the
An ID3v2 tag can be detected with the following pattern:
Picture type $xx
3.2. ID3v2 extended header
significance concerning the recognition of the file. An example of
The 'Owner identifier' is then followed by the actual identifier,
9) distribute your program including id3lib.dll
13.Pop
4.23. Terms of use frame

$02 Other file icon
5) Add the following include dirs to your program:
Content description $00 (00)
Price payed $00
The extended header contains information that is not vital to the
4.2.1 TCOM Composer
The absence of this frame means only that the copyright information
character date string (YYYYMMDD) followed by a string with the name
Codes for the representation of currencies and funds.
The 'Official internet radio station homepage' contains a URL
4.12. Relative volume adjustment
Software that isn't told otherwise may safely remove such frames. The
but it's an easier solution than if one tries to achieve the same
would be "SYLT" encoded as:
must begin with the Unicode BOM ($FF FE or $FE FF) to identify the
Flags $xx xx
the piece (e.g. "Adagio", "Hurricane Donna").
This flag indicates whether or not the frame is compressed.
frame in each tag, but only one with the same content descriptor.
The 'Time stamp' is set to zero if directly at the beginning of the
frame size. If ISO-8859-1 is used this byte should be $00, if Unicode
4.2.1 TORY Original release year
lyrics/text transcription' frame in each tag, but only one with the
regarding the encrypted audio should be sent to the email address
6. Copyright
$01 Standard CD album with other songs
4.25. Commercial frame
/III Type III cassette (ferric chrome)
If a total revision of the ID3v2 tag should be needed, there is a
subject to unsynchronisation.
string several prices may be concatenated, seperated by a "/"
Bits for milliseconds dev. $xx
tag.
kind, provided that a reference to this document is included on all
Peak volume right back $xx xx (xx ...)
[ID3v2] Martin Nilsson, "ID3v2 informal standard".
$02 Other file icon
evolved from the ID3 tagging system. The ID3v2 offers a flexible way
/2 MPEG 1/2 layer II
in a tag, but only one with the same 'Owner identifier'.
77.Musical
specific webpage.
The following frames are declared in this draft.
not be broken apart with a sync (both the syllable and the comma
more than one "WCOM" frame in a tag, but not with the same content.
which uses the allready compiled dll.
4.2.1 TPUB Publisher
All numeric strings and URLs [URL] are always encoded as ISO-8859-1.
in a tag if the audio contains more than one performer, but not with

Relative volume change, right back $xx xx (xx ...)
4.2.1 TDAT Date
/DD DDD
5.Funk
0.Blues
$0D momentary unwanted noise (Snap, Crackle & Pop)
name is omitted, "image/" will be implied. Currently only "image/png"
TOFN
represented as "m". Example "Cbm". Off key is represented with an "o"
Language $xx xx xx
The 'Playlist delay' defines the numbers of milliseconds of silence
6.Grunge
Thijmen
So far, it has only been confirmed it compiles on visual C 6.0 (service pack 5),
experimental bit in the tag header. Have in mind that someone else
includes the used audio encoder and its settings when the file was
Many interesting applications could be found to this frame such as a
/AD ADD
that its program uses and does not fit into the other frames. The

4.2.1 TRDA Recording dates
Text encoding $xx
ID3v2 tag as compatible as possible with existing software. There is
66.New Wave
stage or on the screen in sync with the audio. The header includes a
Relative volume change, center $xx xx (xx ...)
Sometimes the server from which a audio file is streamed is aware of
impossible to maintain with accurate and up to date categories,
4.3.1 WPUB Publishers official webpage
WOAS
The two biggest design goals were to be able to implement ID3v2
to ISO 4217 [ISO-4217] alphabetic currency code, followed by a
a - Unsynchronisation
The use of linked files should however be used sparingly since there
description' is not a multiple of eight.
belongs to a set of frames a group identifier must be registered in
name is omitted, "image/" will be implied. Currently only "image/png"
Codes for the representation of names of languages, Part 2: Alpha-3
4) Add /D ID3LIB_LINKOPTION=1 to your project options (settings, C/C++ tab)
characters 0-9 only.
4. Preserved if tag is altered, preserved if file is altered.
2) include prj/id3lib.dsp and zlib/prj/zlib.dsp to your workspace (*note this is a different id3lib than above)
official webpage for the source of the audio file, e.g. a movie.
The price string is followed by an 8 character date string in the
consists of a description of the string, represented as a terminated
If the bass channel adjustment is present the following is appended
WOAF
binary picture data. This two last fields may be omitted if no
4.19. Recommended buffer size
4.15. Attached picture
4.1 UFID Unique file identifier
This frame is used to contain information from a software producer
beginning of the file.
4.3.2. User defined URL link frame
Terminated strings are terminated with $00 if encoded with ISO-8859-1

Total frame CRC $xx xx xx xx
only be clear if the tag does not contain any false synchronisations.
Time stamp format $xx
Date of purch.
There may be more than one "SYLT" frame in each tag, but only one
content descriptor. There may only be one picture with the picture
Seller logo
2) include libprj/id3lib.dsp and zlib/prj/zlib.dsp to your workspace
copyright holder of the original sound, not the audio file itself.
URL $00
/PAL PAL
end of the ID3 tag), making the size of all the frames together
the signature, the bit should be cleared.
4.11 COMM Comments
long.
4.10. Synchronised lyrics/text
4.12. Relative volume adjustment
4.2.1 TENC Encoded by
revoked.
3. ID3v2 overview
$12 verse end
/I Type I cassette (ferric/normal)
The Second one (id3lib/libprj) creates the .lib file for static linking.
TOLY
Technical committee / subcommittee: TC 68
space character (making five characters), is intended for the
[ISO-8859-1] ISO/IEC DIS 8859-1.
1) Rename config.h.win32 to config.h
is an identifier that explains the frames' format and content, and a
This frame is used to contain information from a software producer
The 'bits used for volume description' field is normally $10 (16
part of the tag and has the same restrictions as if it was a physical
implied. The "image/png" [PNG] or "image/jpeg" [JFIF] picture format
This is a more subjective function than the previous ones. It allows
which may be up to 64 bytes. There may be more than one "UFID" frame
101.Speech
1) Rename config.h.win32 to config.h
/38 38 cm/s
[CDDB] Compact Disc Data Base
amount of volume that should be returned to the next echo bounce. $00
2) include prj/id3lib.dsp and zlib/prj/zlib.dsp to your workspace (*note this is a different id3lib than above)
as a validator of the subsequent string.
$03 is movement/part name (e.g. "Adagio")
be one "RVAD" frame in each tag.
$02 Compressed audio on CD
4. Declared ID3v2 frames
rewrite the entire file. The value of the padding bytes must be $00.
$11 A bright coloured fish
first byte has the value $FF, one more byte follows, which is added
Next follows a terminated string with the name of the seller followed
/A Analog transfer from media
part of the tag and has the same restrictions as if it was a physical
To keep space waste as low as possible this frame may be used to link
So far, it has only been confirmed it compiles on visual C 6.0 (service pack 5),
be at least 32-bits long to begin with.
5. The 'unsynchronisation scheme'
the "TYER", "TDAT" and "TIME" frames. E.g. "4th-7th June, 12th June"
Language $xx xx xx
double CD. The value may be extended with a "/" character and a
$05 As note sheets
located directly at the beginning of the sound. All time stamps
$0E sustained noise
Adjustment bits $xx
audio file, frames with timecodes in different locations in the file
be played in the right speaker.
Owner identifier $00

with the same language and content descriptor.
Also in there is a file called Id3lib.pas which has the interface to the dll
considered as an update of the previous one. E.g. if there is a
This flag tells the software what to do with this frame if it is
CD TOC
3.2. ID3v2 extended header
4.3.2. User defined URL link frame
information, such as title, performer, copyright etc.
from.
implied. The "image/png" [PNG] or "image/jpeg" [JFIF] picture format
(debug) /nodefaultlib:"MSVCRTD" or(release) /nodefaultlib:"MSVCRT"
$00.
frame is intended to be read only. Changing the contents might
Left to left means the sound from the left bounce to be played in the
its origin and contents. The information may be technical
starts. It is represented as a string with a maximum length of three
defined in 'bits for bytes deviation', that describes the difference
Extensions (MIME) Part One: Format of Internet Message Bodies",
Document: id3v2.3.0.txt 3rd February 1999
appended to the frame header. See section 4.26. for more
format of a correct sync that should be altered by ID3 encoders is as
Picture type $xx
And should be replaced with:
An ID3v2 tag can be detected with the following pattern:
4.15. Attached picture
is used it should be $01. Strings dependent on encoding is
grouping should be sent to the indicated email address. The 'Group
Part 3: Audio.
The third bit (bit 5) should be used as an 'experimental
'bytes between reference' and 'milliseconds between reference' points
4.23. Terms of use frame
URL
and position is where in the audio the listener starts to receive,
be played in the right speaker.
The version is followed by one the ID3v2 flags field, of which
And the third one (id3lib/id3com) creates a dll with com interface. A Visual basic demo using it is included.
Technical committee / subcommittee: JTC 1 / SC 2
The 'Original album/movie/show title' frame is intended for the title
The 'Official audio source webpage' frame is a URL pointing at the
9. Author's Address
followed by a Unicode NULL ($FF FE 00 00 or $FE FF 00 00).
other vocal activities. The head includes an encoding descriptor and
4.2.1 TYER Year
thijmen@id3lib.org

6) (add your code which uses id3lib)
108.Primus
may not be $00. The volume is always represented with whole bytes,
currently only three flags are used.
into this tag, a URL [URL] field, where a reference to the file where
for this specific database implementation. Questions regarding the
out bytes and milliseconds respectively.
9. Author's Address
115.Folklore
Image format is the MIME type and subtype [MIME] for the image. In
with unknown content. %x is used to indicate a bit with unknown
one with the same contents. A linked frame is to be considered as
Position $xx (xx ...)
$0A variation start
$01 Standard CD album with other songs
TENC
denoting where in the sound file it belongs. Each sync thus has the

id3lib/libprj
and free for everyone to use, without the need to set the
implied. The "image/png" [PNG] or "image/jpeg" [JFIF] picture format
45.Meditative
first byte of ID3v2 version is it's major version, while the second
4.24. Ownership frame
The actual text
ID3v2 tag as compatible as possible with existing software. There is
implied. The "image/png" [PNG] or "image/jpeg" [JFIF] picture format
the types as ID3v1.1 did or, since the category list would be
Group symbol $xx
'offset to next tag' may be used. The offset is calculated from the

$0F sustained noise end
The 'Content group description' frame is used if the sound belongs to
media type, e.g. "(CD/A)" or "(VID/PAL/VHS)".
4.3.1 WCOM Commercial information
ID3v2 version $03 00
more than one "WCOM" frame in a tag, but not with the same content.
4.15 APIC Attached picture
TMED
MPG MPEG Audio
$0A variation start

'Frame size' and 'Encoding' follows 'MIME type' [MIME] represented as
4. Preserved if tag is altered, preserved if file is altered.
information frames' are often insufficient to list everyone involved
$0D Recording Location
Preview length $xx xx
/38 38 cm/s
occurring in front of the first syllable of a new word. This is also
TRDA
4.3.1 WOAS Official audio source webpage
Technical committee / subcommittee: JTC 1 / SC 2
constructed by one three character currency code, encoded according
character date string (YYYYMMDD) followed by a string with the name
The following type and refinements are defined:
This frame is intended for URL [URL] links concerning the audiofile
copyright holder of the original sound, not the audio file itself.
possibility to put only a link to the image file by using the 'MIME
TOFN
or, if signed, as proof. Note that the "USER" and "TOWN" frames are
part of a set the audio came from. This frame is used if the source
REE Reel
Total frame CRC $xx xx xx xx
Terminating the start events such as "intro start" is not required.
This document is an informal standard and replaces the ID3v2.2.0
4.17. Play counter
or assist in its implementation may be prepared, copied, published
The 'Buffer size' should be kept to a minimum. There may only be one
altered, so they won't be affected by the decoding process. Therefore
be one "RVAD" frame in each tag.
WPAY
51.Techno-Industrial
/I ISDN
The ID3 tag described in this document is mainly targeted at files
The absence of this frame means only that the copyright information
91.Gothic Rock
People list strings
This frame enables grouping of otherwise unrelated frames. This can
flag' is true (1) then this indicates that an ID3 tag with the
impossible to maintain with accurate and up to date categories,
15.Rap
of storing information about an audio file within itself to determine
[URL] T. Berners-Lee, L. Masinter & M. McCahill, "Uniform Resource
one with the same contents. A linked frame is to be considered as
"Strangers in the night" $0A "Exchanging glances"
The 'Commercial information' frame is a URL pointing at a webpage
TLEN
The 'Time stamp' is set to zero if directly at the beginning of the
/WAC Wax cylinder
4.2.1 TOLY Original lyricist(s)/text writer(s)
This frame contains a brief description of the terms of use and
7) Compile.
frame consists of an 'Owner identifier' string and the binary data.
(representing up to 256MB) are used in the size description to avoid
ID3v2 version $03 00
Picture MIME type $00
field.
ISO/IEC DIS 13818-3
the encoder) is a null terminated string followed by a time stamp
Language $xx xx xx
described.
Reverb right (ms) $xx xx
be used when some frames are to be signed. To identify which frames
$0A variation start
the user to say how much he wants to increase/decrease the volume on
/NTSC NTSC
email address can be found, that belongs to the organisation
$13 refrain end
$03 mainpart start
cover of a previously released song, was released. The field is
Peak volume bass $xx xx (xx ...)
2. Conventions in this document
the date for the recording. This field is always four characters
4.9 USLT Unsychronized lyric/text transcription
header in the same order as the flags indicating the additions. I.e.
MC MC (normal cassette)

This frame delivers information to the listener of how far into the
The 'Official audio file webpage' frame is a URL pointing at a file
audio. It might also be used to describing events e.g. occurring on a
frame is intended to be read only. Changing the contents might
performer(s) of the original recording, if for example the music in
with the same email address.
string containing the total numer of tracks/elements on the original
beginning of the file.
/DD DDD
[ZLIB] P. Deutsch, Aladdin Enterprises & J-L. Gailly, "ZLIB
$02 Absolute time, 32 bit sized, using milliseconds as unit
with the same email address.
defined.
Text encoding $xx
Rating $xx
textstring is followed by a termination ($00 (00)) all the following
/VHS VHS
1 Frame should be discarded.
type' "-->" and having a complete URL [URL] instead of picture data.
Size of padding $xx xx xx xx
b - File alter preservation
The 'Recording dates' frame is a intended to be used as complement to
byteorder in multibyte numbers is most significant byte first (e.g.
Preview length $xx xx
Offset to next tag $xx xx xx xx
points. There may be more than one "LINK" frame in a tag, but only
$04 is events (e.g. "Don Quijote enters the stage")
The 'Content group description' frame is used if the sound belongs to
frame consists of an 'Owner identifier' string and the binary data.
4.24. Ownership frame
points. There may be more than one "LINK" frame in a tag, but only
117.Power Ballad
frame consists of an 'Owner identifier' string and the binary data.
The following genres are Winamp extensions
[JFIF] JPEG File Interchange Format, version 1.02
considered as an update of the previous one. E.g. if there is a
/AA AAD
Generic coding of moving pictures and associated audio information,
The 'Original filename' frame contains the preferred filename for the
The first criterion is met by the simple fact that the MPEG [MPEG]
4.1. Unique file identifier
information, such as equalisation curves, as well as related meta
retrieved from the first tag found in the file to which this link
3.3.1. Frame header flags
123.Acapella
VID Video
$05 Leaflet page
In the examples, text within "" is a text string exactly as it
The 'Lead artist(s)/Lead performer(s)/Soloist(s)/Performing group' is
equalisation curve in the reading software should be interpolated
The frame ID is followed by a size descriptor, making a total header
behaviour from present software/hardware.
Bit 7 in the 'ID3v2 flags' indicates whether or not
Text encoding $xx
must begin with the Unicode BOM ($FF FE or $FE FF) to identify the
followed by the actual URL. The URL is always encoded with ISO-8859-1
header in the same order as the flags indicating the additions. I.e.
Abstract
either used or reserved for future use.
4.2.1 TFLT File type
points. There may be more than one "LINK" frame in a tag, but only
The 'Official audio file webpage' frame is a URL pointing at a file
decoding software uses a syncsignal, embedded in the audiostream, to
may not be $00. The volume is always represented with whole bytes,
predefine an equalisation curve within the audio file. There may only
This frame enables several competing offers in the same tag by
Bits used for volume descr. $xx
This flag indicates whether or not this frame belongs in a group
as flexible and expandable as possible.
112.Club
4.2.1 TPE2 Band/orchestra/accompaniment
TPE4
to ISO 4217 [ISO-4217] alphabetic currency code, followed by a
appended to the frame header. See section 4.26. for more
78.Rock & Roll
4.1 UFID Unique file identifier
4.2.1 TALB Album/Movie/Show title
$0D Recording Location
The ID3 tag described in this document is mainly targeted at files
Text encoding $xx
The 'Length' frame contains the length of the audiofile in
in a similar way to the predefined types in the "TMED" frame, but
4.18 POPM Popularimeter
Owner identifier $00
Peak volume left $xx xx (xx ...)
4.22. Position synchronisation frame
Relative volume change, bass $xx xx (xx ...)
Preview length $xx xx
increment and 0 is decrement.
96.Big Band
Document: id3v2.3.0.txt 3rd February 1999
size and encoding fields, with a price string field. A price is
4.7. MPEG location lookup table
$04 Stream over the Internet
1.Classic Rock
6. Copyright
There may only be one "ETCO" frame in each tag.
Description $00 (00)
102.Chanson
"Strang" $00 xx xx "ers" $00 xx xx " in" $00 xx xx " the" $00 xx xx
'lock on to' the audio. Since the ID3v2 tag doesn't contain a valid
The first three bytes of the tag are always "ID3" to indicate that
THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED
'offset to next tag' may be used. The offset is calculated from the
15.Rap
In the frame header the size descriptor is followed by two flags
time. This frame requires a present and valid "TRCK" frame, even if
numbers preceded with % are binary. $xx is used to indicate a byte
eight bits bigger in the same away as the play counter ("PCNT").
26.Ambient
Frames that may be linked and need no additional data are "IPLS",
$06 is trivia/'pop up' information
The 'Publisher' frame simply contains the name of the label or
always an ISO-8859-1 text string. There may be more than one "GEOB"
only.
The following frames are declared in this draft.
$06 As note sheets in a book with other sheets
This document describes the ID3v2.3.0, which is a more developed
This frame is indended for any kind of full text information that
padding, i.e. the frames and only the frames.
Data Format Specification version 3.3", RFC 1950, May 1996.
$12 Illustration
2) include prj/id3lib.dsp and zlib/prj/zlib.dsp to your workspace (*note this is a different id3lib than above)
The first criterion is met by the simple fact that the MPEG [MPEG]

[ISO-8859-1] ISO/IEC DIS 8859-1.
be at least 32-bits long to begin with.
%abc00000 %ijk00000
counter thus making the counter eight bits bigger. The counter must
part. The tempo is in BPM described with one or two bytes. If the
If the center channel adjustment is present the following is appended
1 is worst and 255 is best. 0 is unknown. If no personal counter is
4.2.1 TMED Media type
Sometimes the server from which a audio file is streamed is aware of
and MPEG-2.5, but may work with other types of encoded audio.
following structure:
The ID3v2 tag size is the size of the complete tag after
contains a, now corrected, false synchronisation. The bit should
The third bit (bit 5) should be used as an 'experimental
Generic coding of moving pictures and associated audio information,
between what is said in 'bytes between reference' and the reality and
TPE4
79.Hard Rock
If the last byte in the tag is $FF, and there is a need to eliminate
$FF one more byte of events follows (all the following bytes with
64.Native American
13.Pop
counter, intended to be increased with one for every time the file is
The original location is http://sourceforge.net/projects/id3com
Codes for the representation of names of languages, Part 2: Alpha-3
$06 is trivia/'pop up' information
more than one "WCOM" frame in a tag, but not with the same content.
following structure:
4.14 RVRB Reverb
7. References
$03 File over the Internet
All the other flags should be cleared. If one of these undefined
4.12. Relative volume adjustment
If none you try work, revert to C)
TPUB
email address can be found, that belongs to the organisation
'milliseconds between reference' and the reality. The number of bits
in the frame header size but are included in the 'frame size' field,
TMED
4.25. Commercial frame
break something, e.g. a signature. If the contents are changed,
119.Freestyle
Text encoding $xx
The second criterion has made a more noticeable impact on the design
/I Type I cassette (ferric/normal)
TOFN
4.16. General encapsulated object
individual connections like HTTP and there is a possibility to begin
the transaction, encoded according to ISO 4217 [ISO-4217] alphabetic

file or alone in a binary file. It is recommended that this method is
Picture MIME type $00
/BETA BETAMAX
appended to the frame header. See section 4.26. for more
by a terminated string with the involvee followed by a new
4.15 APIC Attached picture
TCOM
/A Analog transfer from media
58.Cult
Abolute time means that every stamp contains the time from the
live at Wembley").
In the increment/decrement field bit 2 is used to indicate the right
/33 33.33 rpm
$0B key change
often sorted in different musical sections (e.g. "Piano Concerto",
the left and right back channels. If this information is appended to
%11111111 00000000 111xxxxx
/III Type III cassette (ferric chrome)
Thijmen
break something, e.g. a signature. If the contents are changed,
for this specific database implementation. Questions regarding the
with the actual comment as a text string. Newline characters are
$12 verse end
ID3v2/file identifier "ID3"
Reverb feedback, right to left $xx
following structure:
There may be more than one "SYLT" frame in each tag, but only one
not be broken apart with a sync (both the syllable and the comma
thijmen@id3lib.org
nearest byte) for every equalisation band in the following format,

address can be found, that belongs to the organisation responsible
4.23. Terms of use frame
may be several "ENCR" frames in a tag but only one containing the
performer(s) of the original recording, if for example the music in
altered, so they won't be affected by the decoding process. Therefore
the tag with this frame. The 'Owner identifier' is a null-terminated
the date for the recording. This field is always four characters
Text encoding $xx
live at Wembley").
The third one is not too much tested, it was created outside this project but
implied. The "image/png" [PNG] or "image/jpeg" [JFIF] picture format
4.3.2. User defined URL link frame
organisation responsible for this grouping. Questions regarding the
owner of the internet radio station from which the audio is
followed by a one byte 'received as' field. It describes how the
characters. The ground keys are represented with "A","B","C","D","E",
Text encoding $xx
This flag tells the software what to do with this frame if it is
4.24 OWNE Ownership frame
Description $00 (00)
tags into the audio stream though. If the clients connects to
%11111111 00000000 111xxxxx
numeric string containing the total number of parts in the set. E.g.
which uses the allready compiled dll.
The ownership frame might be used as a reminder of a made transaction
change the volume constantly. This frame may also be used to balance
following structure:
4.11. Comments
53.Pop-Folk
The 'Recording dates' frame is a intended to be used as complement to
63.Jungle
/II Type II cassette (chrome)

TIT1
/AAC Advanced audio compression
information frame of its kind in an tag. If the textstring is
filename. The filename is case sensitive and includes its suffix.
which picture format is used. In the event that the MIME media type
0 Frame should be preserved.
In the frame header the size descriptor is followed by two flags

b - Extended header
should be added.
consists of a description of the string, represented as a terminated
The 'Original album/movie/show title' frame is intended for the title
and
/A Analog transfer from media
4.22. Position synchronisation frame
content descriptor.
5) Add the following include dirs to your program:
112.Club
by a terminated string with the involvee followed by a new
If this flag is set four bytes of CRC-32 data is appended to the
character is forbidden. In ISO-8859-1 a new line is represented, when
frame, the 3rd reference the 6th frame etc. In a similar way the
deviation', that describes the difference between what is said in
can figure out any genre)" or "(55)((I think...)". The following new
xx "glan" $00 xx xx "ces" $00 xx xx
$01 end of initial silence
Text encoding $xx
The absence of this frame means only that the copyright information
98.Easy Listening
header is considered separate from the header proper, and as such is
Abolute time means that every stamp contains the time from the
So far, it has only been confirmed it compiles on visual C 6.0 (service pack 5),
content type $03 - $04.
method byte. These additions to the frame header, while not included
96.Big Band
4.28. Private frame
such copies and derivative works. However, this document itself may
string, followed by the actual string. There may be more than one
"POSS" frame in each tag.
4.7. MPEG location lookup table
Description $00 (00)
of the text or lyrics in the recording. They are seperated with the
maximum size described in 'Buffer size' may occur in the audiostream.
Distribution of this document is unlimited.
7) Try to compile, and see if you need any of the following:
$12 Illustration
[CDDB] Compact Disc Data Base
for this specific encryption method. Questions regarding the

4.3.1 WCOP Copyright/Legal information
Left to left means the sound from the left bounce to be played in the
Since standardisation of such a database is beyond this document, all
defined in 'bits for bytes deviation', that describes the difference
TLAN
Where the 'Extended header size', currently 6 or 10 bytes, excludes
'decompressed size' appended to the frame header.
60.Top 40
first byte of ID3v2 version is it's major version, while the second
People list strings
with the actual comment as a text string. Newline characters are
followed by an extended header. The extended header is described in
three characters according to ISO-639-2. If more than one language is
This flag indicates whether or not the frame is compressed.
described.
8-bit single-byte coded graphic character sets, Part 1: Latin
4.14 RVRB Reverb
should be used when interoperability is wanted. Description is a
The text information frames are the most important frames, containing
Bits used for volume descr. $xx
ID3v2 size 4 * %0xxxxxxx
The 'Playlist delay' defines the numbers of milliseconds of silence
unsychronisation, including padding, excluding the header but not
chronological order. The type of event is as follows:
version number and a size descriptor in the ID3v2 header.

the artists official webpage. There may be more than one "WOAR" frame
version number and a size descriptor in the ID3v2 header.
Sync identifier (terminator to above string) $00 (00)
MPEG 2 layer I, II and III [MPEG] and MPEG 2.5. This value may not be
recording. E.g. "4/9".
indicates usage.
the four bytes of decompressed size will preceed the encryption
4.2.1 TORY Original release year
16.Reggae
which picture format is used. In the event that the MIME media type
starts. It is represented as a string with a maximum length of three
4.19. Recommended buffer size
indicated email address. The tag may contain more than one "PRIV"
4.2.1 TOFN Original filename
live at Wembley").
/71 71.29 rpm
'milliseconds between reference' and the reality. The number of bits
it is likely to not be readable. The flags field is defined as
117.Power Ballad
68.Rave
encryption method should be sent to the indicated email address. The
padding, i.e. the frames and only the frames.
95.Slow Rock
$04 outro start
Increment/decrement %x (MSB of the Frequency)
The original location is http://sourceforge.net/projects/id3com
This is simply a counter of the number of times a file has been
frame but only with different contents. It is recommended to keep the
LD Laserdisc
These are the directories you'll be needing:

the event that the MIME media type name is omitted, "image/" will be
4) Add /D ID3LIB_LINKOPTION=3 to your project options (settings, C/C++ tab) (*note this is a different option than above)
/A Analog transfer from media
Frame identifier $xx xx xx
involvement and so on. There may only be one "IPLS" frame in each
The 'Internet radio station name' frame contains the name of the
padded in the beginning (highest bits) when 'bits used for volume
b - File alter preservation
1 Frame contains group information
63.Jungle
result with several frames. The frame begins, after the frame ID,
but may be empty. There may be several pictures attached to one file,
a content description as terminated string, encoded as 'Encoding'.
but may be empty. There may be several pictures attached to one file,
format YYYYMMDD, describing for how long the price is valid. After
64.Native American
altered, so they won't be affected by the decoding process. Therefore
4.3.2. User defined URL link frame
/BETA BETAMAX
contains a terminated string with the involvement directly followed
frame, the 3rd reference the 6th frame etc. In a similar way the
excluding the ID3v2 tag, represented as a numeric string.
Reverb bounces left/right is the number of bounces that should be
4.2.1 TLEN Length
44.Space
0 Frame should be preserved.
Time stamp format is:
4.2.1 TKEY Initial key
9. Author's Address
frame consists of an 'Owner identifier' string and the binary data.

A tag is the whole tag described in this document. A frame is a block
Group dependent data
Valid until
frame have been made in a later version of the ID3v2 standard. This
used in the text their language codes should follow according to
or, if no other data follows, be completely omitted. There may only
TCOP
4.2.1 TOWN File owner/licensee
"(" followed by a number from the genres list (appendix A.) and
implied. The "image/png" [PNG] or "image/jpeg" [JFIF] picture format


TV Television
id3lib/id3com
88.Celtic
/NTSC NTSC
110.Satire
13.Pop
MIME type $00
$49 44 33 yy yy xx zz zz zz zz
kind, provided that a reference to this document is included on all
74.Acid Jazz
official webpage for the source of the audio file, e.g. a movie.
every transmission with a tag, then this tag should include a
/4 4.75 cm/s (normal speed for a two sided cassette)
MPG MPEG Audio
each tag.
12.Other
Time stamp format is:
the encoder) is a null terminated string followed by a time stamp

but may be empty. There may be several pictures attached to one file,
significance concerning the recognition of the file. An example of
/IV Type IV cassette (metal)
that its program uses and does not fit into the other frames. The
content descriptor.
VID Video
the encoder) is a null terminated string followed by a time stamp
copyright message, if the audio file also is copyrighted by the
4.19 RBUF Recommended buffer size
allowed, with $0A only. Frames that allow different types of text
" night" $00 xx xx 0A "Ex" $00 xx xx "chang" $00 xx xx "ing" $00 xx
4.10. Synchronised lyrics/text
0 Frame should be preserved.
4.5. Music CD Identifier
Architecture and Basic Multilingual Plane.
MIME type $00
/I ISDN
the frame the first two channels will be treated as front channels.
4.6. Event timing codes

5) Add the following include dirs to your program:
followed by a termination ($00 (00)) all the following information
4.6 ETCO Event timing codes
4.3.1 WPAY Payment
Size $xx xx xx xx
owner identifier. The group symbol must be used somewhere in the tag.
84.Fast Fusion
DIG Other digital media
might be useful. The ID3v2 frame includes references that the
Setting both premix to $FF would result in a mono output (if the
byteorder in multibyte numbers is most significant byte first (e.g.
frame consists of an 'Owner identifier' string and the binary data.
The 'Track number/Position in set' frame is a numeric string
code. Technical committee / subcommittee: TC 37 / SC 2
4.2.1 TOFN Original filename
4.10. Synchronised lyrics/text
4.2.1 TSIZ Size
frame, the 3rd reference the 6th frame etc. In a similar way the
[ISRC] ISO 3901:1986
The "TXXX", "APIC", "GEOB" and "AENC" frames may be linked with
[PNG] Portable Network Graphics, version 1.0
The limited permissions granted above are perpetual and will not be
118.Rhythmic Soul
increase for every reference. If this value is two then the first
The ID3v2 tag size is encoded with four bytes where the most
This frame is used to contain information from a software producer
significant bit (bit 7) is set to zero in every byte, making a total
[ISO-8859-1] ISO/IEC DIS 8859-1.
part of the tag and has the same restrictions as if it was a physical
TIT1
is 0%, $FF is 100%. If this value were $7F, there would be 50% volume
44.Space
Buffer size $xx xx xx
four bytes absolute CD-frame address per track, and not with absolute
unknown and the file, excluding the tag, is altered. This does not
audio stream he picked up; in effect, it states the time offset of
it is likely to not be readable. The flags field is defined as
is the risk of separation of files.
e.g. "(MC) with four channels". If a text refinement should begin
reduction on the first bounce, 50% of that on the second and so on.
Group symbol $xx
Bits used for volume descr. $xx
4.10 SYLT Synchronized lyric/text
/2.5 MPEG 2.5
Codes for the representation of names of languages, Part 2: Alpha-3
TPE1
in the frame header size but are included in the 'frame size' field,
TT Turntable records
purpose of this padding is to allow for adding a few additional
MPEG frames between reference $xx xx
/PAL PAL
113.Tango
The two biggest design goals were to be able to implement ID3v2
the frame is given, and additional ID data, if needed. Data should be
are not subject to encryption or compression.
string containing the total numer of tracks/elements on the original
The rest of the frames.
should be ignored and not be displayed. All text frame identifiers
should be ignored and not be displayed. All text frame identifiers
audio stream he picked up; in effect, it states the time offset of
9) distribute your program including id3lib.dll
frame might be used. After the header follows one byte describing
Software that isn't told otherwise may safely remove such frames. The
27.Trip-Hop
the frame the first two channels will be treated as front channels.
The tempo descriptor is followed by a time stamp. Every time the

scheme' should be parsed first, decompression afterwards.
(debug) /nodefaultlib:"libcd" or(release) /nodefaultlib:"libc"
4.24 OWNE Ownership frame
Locators (URL).", RFC 1738, December 1994.
All the other flags should be cleared. If one of these undefined
Frame identifier $xx xx xx
49.Gothic
/8CA 8-track tape cassette
83.Swing
Technical committee / subcommittee: JTC 1 / SC 2
0 Frame should be preserved.
/3 mode 3, 32 kHz/12 bits, nonlinear, low speed
Setting both premix to $FF would result in a mono output (if the
35.House
104.Chamber Music
$49 44 33 yy yy xx zz zz zz zz
4.2.2. User defined text information frame
The 'Owner identifier' is a null-terminated string with a URL [URL]
4.17 PCNT Play counter
reduction on the first bounce, 50% of that on the second and so on.
owner identifier. The group symbol must be used somewhere in the tag.
tag.
In the increment/decrement field bit 2 is used to indicate the right
49.Gothic
77.Musical
1) Rename config.h.win32 to config.h
followed by encoding, language and content descriptors and is ended
official webpage for the source of the audio file, e.g. a movie.
Bits used for volume descr. $xx
0.Blues
Also in there is a file called Id3lib.pas which has the interface to the dll
This frame is intended for URL [URL] links concerning the audiofile
4.2.1 TORY Original release year

$06 is trivia/'pop up' information
every transmission with a tag, then this tag should include a
4.16. General encapsulated object
used in the text their language codes should follow according to





搜尋引擎讓我們程式搜尋結果更加完美
  • 如果您覺得該文件有幫助到您,煩請按下我
  • 如果您覺得該文件是一個一無是處的文件,也煩請按下我

  • 搜尋引擎該文件您看起來是亂碼嗎?您可以切換編碼方式試試看!ISO-8859-1 | latin1 | euc-kr | euc-jp | CP936 | CP950 | UTF-8 | GB2312 | BIG5 |
    搜尋引擎本文件可能涉及色情、暴力,按我申請移除該文件

    搜尋引擎網址長?按我產生分享用短址

    ©2024 JSEMTS

    https://tw.search.yahoo.com/search;_ylt=A8tUwZJ2QE1YaVcAUmFr1gt.;_ylc=X1MDMjExNDcwNTAwMwRfcgMyBGZyA3lmcC10LTkwMC1zLXR3BGdwcmlkAwRuX3JzbHQDMARuX3N1Z2cDMARvcmlnaW4DdHcuc2VhcmNoLnlhaG9vLmNvbQRwb3MDMARwcXN0cgMEcHFzdHJsAwRxc3RybAM4NARxdWVyeQMlRTglQjYlODUlRTUlOEYlQUYlRTYlODQlOUIlRTclOUElODQlRTUlQUYlQjYlRTUlQUYlQjYlMjAlRTglODMlQTElRTUlQUUlODklRTUlQTglOUMEdF9zdG1wAzE0ODE0NTc3OTM-?p=%E8%B6%85%E5%8F%AF%E6%84%9B%E7%9A%84%E5%AF%B6%E5%AF%B6+%E8%83%A1%E5%AE%89%E5%A8%9C&fr2=sb-top-tw.search&fr=yfp-t-900-s-tw&rrjfid=4303927 https://tw.search.yahoo.com/search;_ylt=A8tUwYgkQU1YcXoAUE9r1gt.;_ylc=X1MDMjExNDcwNTAwMwRfcgMyBGZyA3lmcC10LTkwMC10dwRncHJpZAMxWU5tY2FYMVFGQ2ZvUXZGN1N0bzVBBG5fcnNsdAMwBG5fc3VnZwMwBG9yaWdpbgN0dy5zZWFyY2gueWFob28uY29tBHBvcwMwBHBxc3RyAwRwcXN0cmwDBHFzdHJsAzQ4BHF1ZXJ5AyVFNiVBRCVBMSVFNiVBRCU4QyUyMCVFNSVCMCU4OCVFNiU4MyU4NSVFNSU5QyU5OAR0X3N0bXADMTQ4MTQ1Nzk3Ng--?p=%E6%AD%A1%E6%AD%8C+%E5%B0%88%E6%83%85%E5%9C%98&fr2=sb-top-tw.search&fr=yfp-t-900-tw&rrjfid=1272243 https://tw.search.yahoo.com/search;_ylt=A8tUwZJ2QE1YaVcAUmFr1gt.;_ylc=X1MDMjExNDcwNTAwMwRfcgMyBGZyA3lmcC10LTkwMC1zLXR3BGdwcmlkAwRuX3JzbHQDMARuX3N1Z2cDMARvcmlnaW4DdHcuc2VhcmNoLnlhaG9vLmNvbQRwb3MDMARwcXN0cgMEcHFzdHJsAwRxc3RybAM4NARxdWVyeQMlRTglQjYlODUlRTUlOEYlQUYlRTYlODQlOUIlRTclOUElODQlRTUlQUYlQjYlRTUlQUYlQjYlMjAlRTglODMlQTElRTUlQUUlODklRTUlQTglOUMEdF9zdG1wAzE0ODE0NTc3OTM-?p=%E8%B6%85%E5%8F%AF%E6%84%9B%E7%9A%84%E5%AF%B6%E5%AF%B6+%E8%83%A1%E5%AE%89%E5%A8%9C&fr2=sb-top-tw.search&fr=yfp-t-900-s-tw&rrjfid=1782226 https://tw.search.yahoo.com/search;_ylt=A8tUwZJ2QE1YaVcAUmFr1gt.;_ylc=X1MDMjExNDcwNTAwMwRfcgMyBGZyA3lmcC10LTkwMC1zLXR3BGdwcmlkAwRuX3JzbHQDMARuX3N1Z2cDMARvcmlnaW4DdHcuc2VhcmNoLnlhaG9vLmNvbQRwb3MDMARwcXN0cgMEcHFzdHJsAwRxc3RybAM4NARxdWVyeQMlRTglQjYlODUlRTUlOEYlQUYlRTYlODQlOUIlRTclOUElODQlRTUlQUYlQjYlRTUlQUYlQjYlMjAlRTglODMlQTElRTUlQUUlODklRTUlQTglOUMEdF9zdG1wAzE0ODE0NTc3OTM-?p=%E8%B6%85%E5%8F%AF%E6%84%9B%E7%9A%84%E5%AF%B6%E5%AF%B6+%E8%83%A1%E5%AE%89%E5%A8%9C&fr2=sb-top-tw.search&fr=yfp-t-900-s-tw&rrjfid=3611653 https://tw.search.yahoo.com/search;_ylt=A8tUwZJ2QE1YaVcAUmFr1gt.;_ylc=X1MDMjExNDcwNTAwMwRfcgMyBGZyA3lmcC10LTkwMC1zLXR3BGdwcmlkAwRuX3JzbHQDMARuX3N1Z2cDMARvcmlnaW4DdHcuc2VhcmNoLnlhaG9vLmNvbQRwb3MDMARwcXN0cgMEcHFzdHJsAwRxc3RybAM4NARxdWVyeQMlRTglQjYlODUlRTUlOEYlQUYlRTYlODQlOUIlRTclOUElODQlRTUlQUYlQjYlRTUlQUYlQjYlMjAlRTglODMlQTElRTUlQUUlODklRTUlQTglOUMEdF9zdG1wAzE0ODE0NTc3OTM-?p=%E8%B6%85%E5%8F%AF%E6%84%9B%E7%9A%84%E5%AF%B6%E5%AF%B6+%E8%83%A1%E5%AE%89%E5%A8%9C&fr2=sb-top-tw.search&fr=yfp-t-900-s-tw&rrjfid=4538302 https://tw.search.yahoo.com/search;_ylt=A8tUwZJ2QE1YaVcAUmFr1gt.;_ylc=X1MDMjExNDcwNTAwMwRfcgMyBGZyA3lmcC10LTkwMC1zLXR3BGdwcmlkAwRuX3JzbHQDMARuX3N1Z2cDMARvcmlnaW4DdHcuc2VhcmNoLnlhaG9vLmNvbQRwb3MDMARwcXN0cgMEcHFzdHJsAwRxc3RybAM4NARxdWVyeQMlRTglQjYlODUlRTUlOEYlQUYlRTYlODQlOUIlRTclOUElODQlRTUlQUYlQjYlRTUlQUYlQjYlMjAlRTglODMlQTElRTUlQUUlODklRTUlQTglOUMEdF9zdG1wAzE0ODE0NTc3OTM-?p=%E8%B6%85%E5%8F%AF%E6%84%9B%E7%9A%84%E5%AF%B6%E5%AF%B6+%E8%83%A1%E5%AE%89%E5%A8%9C&fr2=sb-top-tw.search&fr=yfp-t-900-s-tw&rrjfid=2339952