Added TagLib (with AUTORS and COPYING files)
[someplayer] / src / taglib / mpeg / id3v2 / id3v2.3.0.txt
1 Informal standard                                             M. Nilsson
2 Document: id3v2.3.0.txt                                3rd February 1999
3
4
5                            ID3 tag version 2.3.0
6
7 Status of this document
8
9    This document is an informal standard and replaces the ID3v2.2.0
10    standard [ID3v2]. The informal standard is released so that
11    implementors could have a set standard before a formal standard is
12    set. The formal standard will use another version or revision number
13    if not identical to what is described in this document. The contents
14    in this document may change for clarifications but never for added or
15    altered functionallity.
16
17    Distribution of this document is unlimited.
18
19
20 Abstract
21
22    This document describes the ID3v2.3.0, which is a more developed
23    version of the ID3v2 informal standard [ID3v2] (version 2.2.0),
24    evolved from the ID3 tagging system. The ID3v2 offers a flexible way
25    of storing information about an audio file within itself to determine
26    its origin and contents. The information may be technical
27    information, such as equalisation curves, as well as related meta
28    information, such as title, performer, copyright etc.
29
30
31 1.   Table of contents
32
33    2.   Conventions in this document
34    3.   ID3v2 overview
35      3.1.   ID3v2 header
36      3.2.   ID3v2 extended header
37      3.3.   ID3v2 frames overview
38        3.3.1.   Frame header flags
39        3.3.2.   Default flags
40    4.   Declared ID3v2 frames
41      4.1.   Unique file identifier
42      4.2.   Text information frames
43        4.2.1.   Text information frames - details
44        4.2.2.   User defined text information frame
45      4.3.   URL link frames
46        4.3.1.   URL link frames - details
47        4.3.2.   User defined URL link frame
48      4.4.   Involved people list
49      4.5.   Music CD Identifier
50      4.6.   Event timing codes
51      4.7.   MPEG location lookup table
52      4.8.   Synced tempo codes
53      4.9.   Unsychronised lyrics/text transcription
54      4.10.  Synchronised lyrics/text
55      4.11.  Comments
56      4.12.  Relative volume adjustment
57      4.13.  Equalisation
58      4.14.  Reverb
59      4.15.  Attached picture
60      4.16.  General encapsulated object
61      4.17.  Play counter
62      4.18.  Popularimeter
63      4.19.  Recommended buffer size
64      4.20.  Audio encryption
65      4.21.  Linked information
66      4.22.  Position synchronisation frame
67      4.23.  Terms of use
68      4.24.  Ownership frame
69      4.25.  Commercial frame
70      4.26.  Encryption method registration
71      4.27.  Group identification registration
72          4.28.  Private frame
73    5.   The 'unsynchronisation scheme'
74    6.   Copyright
75    7.   References
76    8.   Appendix
77      A.   Appendix A - Genre List from ID3v1
78    9.   Author's Address
79
80
81 2.   Conventions in this document
82
83    In the examples, text within "" is a text string exactly as it
84    appears in a file. Numbers preceded with $ are hexadecimal and
85    numbers preceded with % are binary. $xx is used to indicate a byte
86    with unknown content. %x is used to indicate a bit with unknown
87    content. The most significant bit (MSB) of a byte is called 'bit 7'
88    and the least significant bit (LSB) is called 'bit 0'.
89
90    A tag is the whole tag described in this document. A frame is a block
91    of information in the tag. The tag consists of a header, frames and
92    optional padding. A field is a piece of information; one value, a
93    string etc. A numeric string is a string that consists of the
94    characters 0-9 only.
95
96
97 3.   ID3v2 overview
98
99    The two biggest design goals were to be able to implement ID3v2
100    without disturbing old software too much and that ID3v2 should be
101    as flexible and expandable as possible.
102
103    The first criterion is met by the simple fact that the MPEG [MPEG]
104    decoding software uses a syncsignal, embedded in the audiostream, to
105    'lock on to' the audio. Since the ID3v2 tag doesn't contain a valid
106    syncsignal, no software will attempt to play the tag. If, for any
107    reason, coincidence make a syncsignal appear within the tag it will
108    be taken care of by the 'unsynchronisation scheme' described in
109    section 5.
110
111    The second criterion has made a more noticeable impact on the design
112    of the ID3v2 tag. It is constructed as a container for several
113    information blocks, called frames, whose format need not be known to
114    the software that encounters them. At the start of every frame there
115    is an identifier that explains the frames' format and content, and a
116    size descriptor that allows software to skip unknown frames.
117
118    If a total revision of the ID3v2 tag should be needed, there is a
119    version number and a size descriptor in the ID3v2 header.
120
121    The ID3 tag described in this document is mainly targeted at files
122    encoded with MPEG-1/2 layer I, MPEG-1/2 layer II, MPEG-1/2 layer III
123    and MPEG-2.5, but may work with other types of encoded audio.
124
125    The bitorder in ID3v2 is most significant bit first (MSB). The
126    byteorder in multibyte numbers is most significant byte first (e.g.
127    $12345678 would be encoded $12 34 56 78).
128
129    It is permitted to include padding after all the final frame (at the
130    end of the ID3 tag), making the size of all the frames together
131    smaller than the size given in the head of the tag. A possible
132    purpose of this padding is to allow for adding a few additional
133    frames or enlarge existing frames within the tag without having to
134    rewrite the entire file. The value of the padding bytes must be $00.
135
136
137 3.1.   ID3v2 header
138
139    The ID3v2 tag header, which should be the first information in the
140    file, is 10 bytes as follows:
141
142      ID3v2/file identifier      "ID3"
143      ID3v2 version              $03 00
144      ID3v2 flags                %abc00000
145      ID3v2 size             4 * %0xxxxxxx
146
147    The first three bytes of the tag are always "ID3" to indicate that
148    this is an ID3v2 tag, directly followed by the two version bytes. The
149    first byte of ID3v2 version is it's major version, while the second
150    byte is its revision number. In this case this is ID3v2.3.0. All
151    revisions are backwards compatible while major versions are not. If
152    software with ID3v2.2.0 and below support should encounter version
153    three or higher it should simply ignore the whole tag. Version and
154    revision will never be $FF.
155
156    The version is followed by one the ID3v2 flags field, of which
157    currently only three flags are used.
158
159
160    a - Unsynchronisation
161
162      Bit 7 in the 'ID3v2 flags' indicates whether or not
163      unsynchronisation is used (see section 5 for details); a set bit
164      indicates usage.
165
166
167    b - Extended header
168
169      The second bit (bit 6) indicates whether or not the header is
170      followed by an extended header. The extended header is described in
171      section 3.2.
172
173
174    c - Experimental indicator
175
176      The third bit (bit 5) should be used as an 'experimental
177      indicator'. This flag should always be set when the tag is in an
178      experimental stage.
179
180    All the other flags should be cleared. If one of these undefined
181    flags are set that might mean that the tag is not readable for a
182    parser that does not know the flags function.
183
184    The ID3v2 tag size is encoded with four bytes where the most
185    significant bit (bit 7) is set to zero in every byte, making a total
186    of 28 bits. The zeroed bits are ignored, so a 257 bytes long tag is
187    represented as $00 00 02 01.
188
189    The ID3v2 tag size is the size of the complete tag after
190    unsychronisation, including padding, excluding the header but not
191    excluding the extended header (total tag size - 10). Only 28 bits
192    (representing up to 256MB) are used in the size description to avoid
193    the introducuction of 'false syncsignals'.
194
195    An ID3v2 tag can be detected with the following pattern:
196      $49 44 33 yy yy xx zz zz zz zz
197    Where yy is less than $FF, xx is the 'flags' byte and zz is less than
198    $80.
199
200
201 3.2.   ID3v2 extended header
202
203    The extended header contains information that is not vital to the
204    correct parsing of the tag information, hence the extended header is
205    optional.
206
207      Extended header size   $xx xx xx xx
208      Extended Flags         $xx xx
209      Size of padding        $xx xx xx xx
210
211    Where the 'Extended header size', currently 6 or 10 bytes, excludes
212    itself. The 'Size of padding' is simply the total tag size excluding
213    the frames and the headers, in other words the padding. The extended
214    header is considered separate from the header proper, and as such is
215    subject to unsynchronisation.
216
217    The extended flags are a secondary flag set which describes further
218    attributes of the tag. These attributes are currently defined as
219    follows
220
221      %x0000000 00000000
222
223
224    x - CRC data present
225
226      If this flag is set four bytes of CRC-32 data is appended to the
227      extended header. The CRC should be calculated before
228      unsynchronisation on the data between the extended header and the
229      padding, i.e. the frames and only the frames.
230
231         Total frame CRC        $xx xx xx xx
232
233
234 3.3.   ID3v2 frame overview
235
236    As the tag consists of a tag header and a tag body with one or more
237    frames, all the frames consists of a frame header followed by one or
238    more fields containing the actual information. The layout of the
239    frame header:
240
241      Frame ID   $xx xx xx xx  (four characters)
242      Size       $xx xx xx xx
243      Flags      $xx xx
244
245    The frame ID made out of the characters capital A-Z and 0-9.
246    Identifiers beginning with "X", "Y" and "Z" are for experimental use
247    and free for everyone to use, without the need to set the
248    experimental bit in the tag header. Have in mind that someone else
249    might have used the same identifier as you. All other identifiers are
250    either used or reserved for future use.
251
252    The frame ID is followed by a size descriptor, making a total header
253    size of ten bytes in every frame. The size is calculated as frame
254    size excluding frame header (frame size - 10).
255
256    In the frame header the size descriptor is followed by two flags
257    bytes. These flags are described in section 3.3.1.
258
259    There is no fixed order of the frames' appearance in the tag,
260    although it is desired that the frames are arranged in order of
261    significance concerning the recognition of the file. An example of
262    such order: UFID, TIT2, MCDI, TRCK ...
263
264    A tag must contain at least one frame. A frame must be at least 1
265    byte big, excluding the header.
266
267    If nothing else is said a string is represented as ISO-8859-1
268    [ISO-8859-1] characters in the range $20 - $FF. Such strings are
269    represented as <text string>, or <full text string> if newlines are
270    allowed, in the frame descriptions. All Unicode strings [UNICODE] use
271    16-bit unicode 2.0 (ISO/IEC 10646-1:1993, UCS-2). Unicode strings
272    must begin with the Unicode BOM ($FF FE or $FE FF) to identify the
273    byte order.
274
275    All numeric strings and URLs [URL] are always encoded as ISO-8859-1.
276    Terminated strings are terminated with $00 if encoded with ISO-8859-1
277    and $00 00 if encoded as unicode. If nothing else is said newline
278    character is forbidden. In ISO-8859-1 a new line is represented, when
279    allowed, with $0A only. Frames that allow different types of text
280    encoding have a text encoding description byte directly after the
281    frame size. If ISO-8859-1 is used this byte should be $00, if Unicode
282    is used it should be $01. Strings dependent on encoding is
283    represented as <text string according to encoding>, or <full text
284    string according to encoding> if newlines are allowed.  Any empty
285    Unicode strings which are NULL-terminated may have the Unicode BOM
286    followed by a Unicode NULL ($FF FE 00 00 or $FE FF 00 00).
287
288    The three byte language field is used to describe the language of the
289    frame's content, according to ISO-639-2 [ISO-639-2].
290
291    All URLs [URL] may be relative, e.g. "picture.png", "../doc.txt".
292
293    If a frame is longer than it should be, e.g. having more fields than
294    specified in this document, that indicates that additions to the
295    frame have been made in a later version of the ID3v2 standard. This
296    is reflected by the revision number in the header of the tag.
297
298
299 3.3.1.   Frame header flags
300
301    In the frame header the size descriptor is followed by two flags
302    bytes. All unused flags must be cleared. The first byte is for
303    'status messages' and the second byte is for encoding purposes. If an
304    unknown flag is set in the first byte the frame may not be changed
305    without the bit cleared. If an unknown flag is set in the second byte
306    it is likely to not be readable. The flags field is defined as
307    follows.
308
309      %abc00000 %ijk00000
310
311
312    a - Tag alter preservation
313
314      This flag tells the software what to do with this frame if it is
315      unknown and the tag is altered in any way. This applies to all
316      kinds of alterations, including adding more padding and reordering
317      the frames.
318
319      0     Frame should be preserved.
320      1     Frame should be discarded.
321
322
323    b - File alter preservation
324
325      This flag tells the software what to do with this frame if it is
326      unknown and the file, excluding the tag, is altered. This does not
327      apply when the audio is completely replaced with other audio data.
328
329      0     Frame should be preserved.
330      1     Frame should be discarded.
331
332
333    c - Read only
334
335       This flag, if set, tells the software that the contents of this
336       frame is intended to be read only. Changing the contents might
337       break something, e.g. a signature. If the contents are changed,
338       without knowledge in why the frame was flagged read only and
339       without taking the proper means to compensate, e.g. recalculating
340       the signature, the bit should be cleared.
341
342
343    i - Compression
344
345       This flag indicates whether or not the frame is compressed.
346
347       0     Frame is not compressed.
348       1     Frame is compressed using zlib [zlib] with 4 bytes for
349             'decompressed size' appended to the frame header.
350
351
352    j - Encryption
353
354       This flag indicates wether or not the frame is enrypted. If set
355       one byte indicating with which method it was encrypted will be
356       appended to the frame header. See section 4.26. for more
357       information about encryption method registration.
358
359       0     Frame is not encrypted.
360       1     Frame is encrypted.
361
362
363    k - Grouping identity
364
365       This flag indicates whether or not this frame belongs in a group
366       with other frames. If set a group identifier byte is added to the
367       frame header. Every frame with the same group identifier belongs
368       to the same group.
369
370       0     Frame does not contain group information
371       1     Frame contains group information
372
373
374    Some flags indicates that the frame header is extended with
375    additional information. This information will be added to the frame
376    header in the same order as the flags indicating the additions. I.e.
377    the four bytes of decompressed size will preceed the encryption
378    method byte. These additions to the frame header, while not included
379    in the frame header size but are included in the 'frame size' field,
380    are not subject to encryption or compression.
381
382
383 3.3.2.   Default flags
384
385    The default settings for the frames described in this document can be
386    divided into the following classes. The flags may be set differently
387    if found more suitable by the software.
388
389     1. Discarded if tag is altered, discarded if file is altered.
390
391        None.
392
393     2. Discarded if tag is altered, preserved if file is altered.
394
395        None.
396
397     3. Preserved if tag is altered, discarded if file is altered.
398
399        AENC, ETCO, EQUA, MLLT, POSS, SYLT, SYTC, RVAD, TENC, TLEN, TSIZ
400
401     4. Preserved if tag is altered, preserved if file is altered.
402
403        The rest of the frames.
404
405
406 4.   Declared ID3v2 frames
407
408    The following frames are declared in this draft.
409
410   4.21  AENC Audio encryption
411   4.15  APIC Attached picture
412
413   4.11  COMM Comments
414   4.25  COMR Commercial frame
415
416   4.26  ENCR Encryption method registration
417   4.13  EQUA Equalization
418   4.6   ETCO Event timing codes
419
420   4.16  GEOB General encapsulated object
421   4.27  GRID Group identification registration
422
423   4.4   IPLS Involved people list
424
425   4.21  LINK Linked information
426
427   4.5   MCDI Music CD identifier
428   4.7   MLLT MPEG location lookup table
429
430   4.24  OWNE Ownership frame
431
432   4.28. PRIV Private frame
433   4.17  PCNT Play counter
434   4.18  POPM Popularimeter
435   4.22  POSS Position synchronisation frame
436
437   4.19  RBUF Recommended buffer size
438   4.12  RVAD Relative volume adjustment
439   4.14  RVRB Reverb
440
441   4.10  SYLT Synchronized lyric/text
442   4.8   SYTC Synchronized tempo codes
443
444   4.2.1 TALB Album/Movie/Show title
445   4.2.1 TBPM BPM (beats per minute)
446   4.2.1 TCOM Composer
447   4.2.1 TCON Content type
448   4.2.1 TCOP Copyright message
449   4.2.1 TDAT Date
450   4.2.1 TDLY Playlist delay
451   4.2.1 TENC Encoded by
452   4.2.1 TEXT Lyricist/Text writer
453   4.2.1 TFLT File type
454   4.2.1 TIME Time
455   4.2.1 TIT1 Content group description
456   4.2.1 TIT2 Title/songname/content description
457   4.2.1 TIT3 Subtitle/Description refinement
458   4.2.1 TKEY Initial key
459   4.2.1 TLAN Language(s)
460   4.2.1 TLEN Length
461   4.2.1 TMED Media type
462   4.2.1 TOAL Original album/movie/show title
463   4.2.1 TOFN Original filename
464   4.2.1 TOLY Original lyricist(s)/text writer(s)
465   4.2.1 TOPE Original artist(s)/performer(s)
466   4.2.1 TORY Original release year
467   4.2.1 TOWN File owner/licensee
468   4.2.1 TPE1 Lead performer(s)/Soloist(s)
469   4.2.1 TPE2 Band/orchestra/accompaniment
470   4.2.1 TPE3 Conductor/performer refinement
471   4.2.1 TPE4 Interpreted, remixed, or otherwise modified by
472   4.2.1 TPOS Part of a set
473   4.2.1 TPUB Publisher
474   4.2.1 TRCK Track number/Position in set
475   4.2.1 TRDA Recording dates
476   4.2.1 TRSN Internet radio station name
477   4.2.1 TRSO Internet radio station owner
478   4.2.1 TSIZ Size
479   4.2.1 TSRC ISRC (international standard recording code)
480   4.2.1 TSSE Software/Hardware and settings used for encoding
481   4.2.1 TYER Year
482   4.2.2 TXXX User defined text information frame
483
484   4.1   UFID Unique file identifier
485   4.23  USER Terms of use
486   4.9   USLT Unsychronized lyric/text transcription
487
488   4.3.1 WCOM Commercial information
489   4.3.1 WCOP Copyright/Legal information
490   4.3.1 WOAF Official audio file webpage
491   4.3.1 WOAR Official artist/performer webpage
492   4.3.1 WOAS Official audio source webpage
493   4.3.1 WORS Official internet radio station homepage
494   4.3.1 WPAY Payment
495   4.3.1 WPUB Publishers official webpage
496   4.3.2 WXXX User defined URL link frame
497
498
499 4.1.   Unique file identifier
500
501    This frame's purpose is to be able to identify the audio file in a
502    database that may contain more information relevant to the content.
503    Since standardisation of such a database is beyond this document, all
504    frames begin with a null-terminated string with a URL [URL]
505    containing an email address, or a link to a location where an email
506    address can be found, that belongs to the organisation responsible
507    for this specific database implementation. Questions regarding the
508    database should be sent to the indicated email address. The URL
509    should not be used for the actual database queries. The string
510    "<a href="http://www.id3.org/dummy/ufid.html">http://www.id3.org/dummy/ufid.html</a>" should be used for tests.
511    Software that isn't told otherwise may safely remove such frames. The
512    'Owner identifier' must be non-empty (more than just a termination).
513    The 'Owner identifier' is then followed by the actual identifier,
514    which may be up to 64 bytes. There may be more than one "UFID" frame
515    in a tag, but only one with the same 'Owner identifier'.
516
517      <Header for 'Unique file identifier', ID: "UFID">
518      Owner identifier        <text string> $00
519      Identifier              <up to 64 bytes binary data>
520
521
522 4.2.   Text information frames
523
524    The text information frames are the most important frames, containing
525    information like artist, album and more. There may only be one text
526    information frame of its kind in an tag. If the textstring is
527    followed by a termination ($00 (00)) all the following information
528    should be ignored and not be displayed. All text frame identifiers
529    begin with "T". Only text frame identifiers begin with "T", with the
530    exception of the "TXXX" frame. All the text information frames have
531    the following format:
532
533      <Header for 'Text information frame', ID: "T000" - "TZZZ",
534      excluding "TXXX" described in 4.2.2.>
535      Text encoding                $xx
536      Information                  <text string according to encoding>
537
538
539 4.2.1.   Text information frames - details
540
541   TALB
542    The 'Album/Movie/Show title' frame is intended for the title of the
543    recording(/source of sound) which the audio in the file is taken
544    from.
545
546   TBPM
547    The 'BPM' frame contains the number of beats per minute in the
548    mainpart of the audio. The BPM is an integer and represented as a
549    numerical string.
550
551   TCOM
552    The 'Composer(s)' frame is intended for the name of the composer(s).
553    They are seperated with the "/" character.
554
555   TCON
556    The 'Content type', which previously was stored as a one byte numeric
557    value only, is now a numeric string. You may use one or several of
558    the types as ID3v1.1 did or, since the category list would be
559    impossible to maintain with accurate and up to date categories,
560    define your own.
561
562    References to the ID3v1 genres can be made by, as first byte, enter
563    "(" followed by a number from the genres list (appendix A.) and
564    ended with a ")" character. This is optionally followed by a
565    refinement, e.g. "(21)" or "(4)Eurodisco". Several references can be
566    made in the same frame, e.g. "(51)(39)". If the refinement should
567    begin with a "(" character it should be replaced with "((", e.g. "((I
568    can figure out any genre)" or "(55)((I think...)". The following new
569    content types is defined in ID3v2 and is implemented in the same way
570    as the numerig content types, e.g. "(RX)".
571
572      RX  Remix
573      CR  Cover
574
575   TCOP
576    The 'Copyright message' frame, which must begin with a year and a
577    space character (making five characters), is intended for the
578    copyright holder of the original sound, not the audio file itself.
579    The absence of this frame means only that the copyright information
580    is unavailable or has been removed, and must not be interpreted to
581    mean that the sound is public domain. Every time this field is
582    displayed the field must be preceded with "Copyright " (C) " ", where
583    (C) is one character showing a C in a circle.
584
585   TDAT
586    The 'Date' frame is a numeric string in the DDMM format containing
587    the date for the recording. This field is always four characters
588    long.
589
590   TDLY
591    The 'Playlist delay' defines the numbers of milliseconds of silence
592    between every song in a playlist. The player should use the "ETC"
593    frame, if present, to skip initial silence and silence at the end of
594    the audio to match the 'Playlist delay' time. The time is represented
595    as a numeric string.
596
597   TENC
598    The 'Encoded by' frame contains the name of the person or
599    organisation that encoded the audio file. This field may contain a
600    copyright message, if the audio file also is copyrighted by the
601    encoder.
602
603   TEXT
604    The 'Lyricist(s)/Text writer(s)' frame is intended for the writer(s)
605    of the text or lyrics in the recording. They are seperated with the
606    "/" character.
607
608   TFLT
609    The 'File type' frame indicates which type of audio this tag defines.
610    The following type and refinements are defined:
611
612      MPG    MPEG Audio
613        /1     MPEG 1/2 layer I
614        /2     MPEG 1/2 layer II
615        /3     MPEG 1/2 layer III
616        /2.5   MPEG 2.5
617        /AAC   Advanced audio compression
618      VQF    Transform-domain Weighted Interleave Vector Quantization
619      PCM    Pulse Code Modulated audio
620
621    but other types may be used, not for these types though. This is used
622    in a similar way to the predefined types in the "TMED" frame, but
623    without parentheses. If this frame is not present audio type is
624    assumed to be "MPG".
625
626   TIME
627    The 'Time' frame is a numeric string in the HHMM format containing
628    the time for the recording. This field is always four characters
629    long.
630
631   TIT1
632    The 'Content group description' frame is used if the sound belongs to
633    a larger category of sounds/music. For example, classical music is
634    often sorted in different musical sections (e.g. "Piano Concerto",
635    "Weather - Hurricane").
636
637   TIT2
638    The 'Title/Songname/Content description' frame is the actual name of
639    the piece (e.g. "Adagio", "Hurricane Donna").
640
641   TIT3
642    The 'Subtitle/Description refinement' frame is used for information
643    directly related to the contents title (e.g. "Op. 16" or "Performed
644    live at Wembley").
645
646   TKEY
647    The 'Initial key' frame contains the musical key in which the sound
648    starts. It is represented as a string with a maximum length of three
649    characters. The ground keys are represented with "A","B","C","D","E",
650    "F" and "G" and halfkeys represented with "b" and "#". Minor is
651    represented as "m". Example "Cbm". Off key is represented with an "o"
652    only.
653
654   TLAN
655    The 'Language(s)' frame should contain the languages of the text or
656    lyrics spoken or sung in the audio. The language is represented with
657    three characters according to ISO-639-2. If more than one language is
658    used in the text their language codes should follow according to
659    their usage.
660
661   TLEN
662    The 'Length' frame contains the length of the audiofile in
663    milliseconds, represented as a numeric string.
664
665   TMED
666    The 'Media type' frame describes from which media the sound
667    originated. This may be a text string or a reference to the
668    predefined media types found in the list below. References are made
669    within "(" and ")" and are optionally followed by a text refinement,
670    e.g. "(MC) with four channels". If a text refinement should begin
671    with a "(" character it should be replaced with "((" in the same way
672    as in the "TCO" frame. Predefined refinements is appended after the
673    media type, e.g. "(CD/A)" or "(VID/PAL/VHS)".
674
675     DIG    Other digital media
676       /A    Analog transfer from media
677
678     ANA    Other analog media
679       /WAC  Wax cylinder
680       /8CA  8-track tape cassette
681
682     CD     CD
683       /A    Analog transfer from media
684       /DD   DDD
685       /AD   ADD
686       /AA   AAD
687
688     LD     Laserdisc
689       /A     Analog transfer from media
690
691     TT     Turntable records
692       /33    33.33 rpm
693       /45    45 rpm
694       /71    71.29 rpm
695       /76    76.59 rpm
696       /78    78.26 rpm
697       /80    80 rpm
698
699     MD     MiniDisc
700       /A    Analog transfer from media
701
702     DAT    DAT
703       /A    Analog transfer from media
704       /1    standard, 48 kHz/16 bits, linear
705       /2    mode 2, 32 kHz/16 bits, linear
706       /3    mode 3, 32 kHz/12 bits, nonlinear, low speed
707       /4    mode 4, 32 kHz/12 bits, 4 channels
708       /5    mode 5, 44.1 kHz/16 bits, linear
709       /6    mode 6, 44.1 kHz/16 bits, 'wide track' play
710
711     DCC    DCC
712       /A    Analog transfer from media
713
714     DVD    DVD
715       /A    Analog transfer from media
716
717     TV     Television
718       /PAL    PAL
719       /NTSC   NTSC
720       /SECAM  SECAM
721
722     VID    Video
723       /PAL    PAL
724       /NTSC   NTSC
725       /SECAM  SECAM
726       /VHS    VHS
727       /SVHS   S-VHS
728       /BETA   BETAMAX
729
730     RAD    Radio
731       /FM   FM
732       /AM   AM
733       /LW   LW
734       /MW   MW
735
736     TEL    Telephone
737       /I    ISDN
738
739     MC     MC (normal cassette)
740       /4    4.75 cm/s (normal speed for a two sided cassette)
741       /9    9.5 cm/s
742       /I    Type I cassette (ferric/normal)
743       /II   Type II cassette (chrome)
744       /III  Type III cassette (ferric chrome)
745       /IV   Type IV cassette (metal)
746
747     REE    Reel
748       /9    9.5 cm/s
749       /19   19 cm/s
750       /38   38 cm/s
751       /76   76 cm/s
752       /I    Type I cassette (ferric/normal)
753       /II   Type II cassette (chrome)
754       /III  Type III cassette (ferric chrome)
755       /IV   Type IV cassette (metal)
756
757   TOAL
758    The 'Original album/movie/show title' frame is intended for the title
759    of the original recording (or source of sound), if for example the
760    music in the file should be a cover of a previously released song.
761
762   TOFN
763    The 'Original filename' frame contains the preferred filename for the
764    file, since some media doesn't allow the desired length of the
765    filename. The filename is case sensitive and includes its suffix.
766
767   TOLY
768    The 'Original lyricist(s)/text writer(s)' frame is intended for the
769    text writer(s) of the original recording, if for example the music in
770    the file should be a cover of a previously released song. The text
771    writers are seperated with the "/" character.
772
773   TOPE
774    The 'Original artist(s)/performer(s)' frame is intended for the
775    performer(s) of the original recording, if for example the music in
776    the file should be a cover of a previously released song. The
777    performers are seperated with the "/" character.
778
779   TORY
780    The 'Original release year' frame is intended for the year when the
781    original recording, if for example the music in the file should be a
782    cover of a previously released song, was released. The field is
783    formatted as in the "TYER" frame.
784
785   TOWN
786    The 'File owner/licensee' frame contains the name of the owner or
787    licensee of the file and it's contents.
788
789   TPE1
790    The 'Lead artist(s)/Lead performer(s)/Soloist(s)/Performing group' is
791    used for the main artist(s). They are seperated with the "/"
792    character.
793
794   TPE2
795    The 'Band/Orchestra/Accompaniment' frame is used for additional
796    information about the performers in the recording.
797
798   TPE3
799    The 'Conductor' frame is used for the name of the conductor.
800
801   TPE4
802    The 'Interpreted, remixed, or otherwise modified by' frame contains
803    more information about the people behind a remix and similar
804    interpretations of another existing piece.
805
806   TPOS
807    The 'Part of a set' frame is a numeric string that describes which
808    part of a set the audio came from. This frame is used if the source
809    described in the "TALB" frame is divided into several mediums, e.g. a
810    double CD. The value may be extended with a "/" character and a
811    numeric string containing the total number of parts in the set. E.g.
812    "1/2".
813
814   TPUB
815    The 'Publisher' frame simply contains the name of the label or
816    publisher.
817
818   TRCK
819    The 'Track number/Position in set' frame is a numeric string
820    containing the order number of the audio-file on its original
821    recording. This may be extended with a "/" character and a numeric
822    string containing the total numer of tracks/elements on the original
823    recording. E.g. "4/9".
824
825   TRDA
826    The 'Recording dates' frame is a intended to be used as complement to
827    the "TYER", "TDAT" and "TIME" frames. E.g. "4th-7th June, 12th June"
828    in combination with the "TYER" frame.
829
830   TRSN
831    The 'Internet radio station name' frame contains the name of the
832    internet radio station from which the audio is streamed.
833
834   TRSO
835    The 'Internet radio station owner' frame contains the name of the
836    owner of the internet radio station from which the audio is
837    streamed.
838
839   TSIZ
840    The 'Size' frame contains the size of the audiofile in bytes,
841    excluding the ID3v2 tag, represented as a numeric string.
842
843   TSRC
844    The 'ISRC' frame should contain the International Standard Recording
845    Code [ISRC] (12 characters).
846
847   TSSE
848    The 'Software/Hardware and settings used for encoding' frame
849    includes the used audio encoder and its settings when the file was
850    encoded. Hardware refers to hardware encoders, not the computer on
851    which a program was run.
852
853   TYER
854    The 'Year' frame is a numeric string with a year of the recording.
855    This frames is always four characters long (until the year 10000).
856
857
858 4.2.2.   User defined text information frame
859
860    This frame is intended for one-string text information concerning the
861    audiofile in a similar way to the other "T"-frames. The frame body
862    consists of a description of the string, represented as a terminated
863    string, followed by the actual string. There may be more than one
864    "TXXX" frame in each tag, but only one with the same description.
865
866      <Header for 'User defined text information frame', ID: "TXXX">
867      Text encoding     $xx
868      Description       <text string according to encoding> $00 (00)
869      Value             <text string according to encoding>
870
871
872 4.3.   URL link frames
873
874    With these frames dynamic data such as webpages with touring
875    information, price information or plain ordinary news can be added to
876    the tag. There may only be one URL [URL] link frame of its kind in an
877    tag, except when stated otherwise in the frame description. If the
878    textstring is followed by a termination ($00 (00)) all the following
879    information should be ignored and not be displayed. All URL link
880    frame identifiers begins with "W". Only URL link frame identifiers
881    begins with "W". All URL link frames have the following format:
882
883      <Header for 'URL link frame', ID: "W000" - "WZZZ", excluding "WXXX"
884      described in 4.3.2.>
885      URL              <text string>
886
887
888 4.3.1.   URL link frames - details
889
890   WCOM
891    The 'Commercial information' frame is a URL pointing at a webpage
892    with information such as where the album can be bought. There may be
893    more than one "WCOM" frame in a tag, but not with the same content.
894
895   WCOP
896    The 'Copyright/Legal information' frame is a URL pointing at a
897    webpage where the terms of use and ownership of the file is
898    described.
899
900   WOAF
901    The 'Official audio file webpage' frame is a URL pointing at a file
902    specific webpage.
903
904   WOAR
905    The 'Official artist/performer webpage' frame is a URL pointing at
906    the artists official webpage. There may be more than one "WOAR" frame
907    in a tag if the audio contains more than one performer, but not with
908    the same content.
909
910   WOAS
911    The 'Official audio source webpage' frame is a URL pointing at the
912    official webpage for the source of the audio file, e.g. a movie.
913
914   WORS
915    The 'Official internet radio station homepage' contains a URL
916    pointing at the homepage of the internet radio station.
917
918   WPAY
919    The 'Payment' frame is a URL pointing at a webpage that will handle
920    the process of paying for this file.
921
922   WPUB
923    The 'Publishers official webpage' frame is a URL pointing at the
924    official wepage for the publisher.
925
926
927 4.3.2.   User defined URL link frame
928
929    This frame is intended for URL [URL] links concerning the audiofile
930    in a similar way to the other "W"-frames. The frame body consists
931    of a description of the string, represented as a terminated string,
932    followed by the actual URL. The URL is always encoded with ISO-8859-1
933    [ISO-8859-1]. There may be more than one "WXXX" frame in each tag,
934    but only one with the same description.
935
936      <Header for 'User defined URL link frame', ID: "WXXX">
937      Text encoding     $xx
938      Description       <text string according to encoding> $00 (00)
939      URL               <text string>
940
941
942 4.4.   Involved people list
943
944    Since there might be a lot of people contributing to an audio file in
945    various ways, such as musicians and technicians, the 'Text
946    information frames' are often insufficient to list everyone involved
947    in a project. The 'Involved people list' is a frame containing the
948    names of those involved, and how they were involved. The body simply
949    contains a terminated string with the involvement directly followed
950    by a terminated string with the involvee followed by a new
951    involvement and so on. There may only be one "IPLS" frame in each
952    tag.
953
954      <Header for 'Involved people list', ID: "IPLS">
955      Text encoding          $xx
956      People list strings    <text strings according to encoding>
957
958
959 4.5.   Music CD identifier
960
961    This frame is intended for music that comes from a CD, so that the CD
962    can be identified in databases such as the CDDB [CDDB]. The frame
963    consists of a binary dump of the Table Of Contents, TOC, from the CD,
964    which is a header of 4 bytes and then 8 bytes/track on the CD plus 8
965    bytes for the 'lead out' making a maximum of 804 bytes. The offset to
966    the beginning of every track on the CD should be described with a
967    four bytes absolute CD-frame address per track, and not with absolute
968    time. This frame requires a present and valid "TRCK" frame, even if
969    the CD's only got one track. There may only be one "MCDI" frame in
970    each tag.
971
972      <Header for 'Music CD identifier', ID: "MCDI">
973      CD TOC                <binary data>
974
975
976 4.6.   Event timing codes
977
978    This frame allows synchronisation with key events in a song or sound.
979    The header is:
980
981      <Header for 'Event timing codes', ID: "ETCO">
982      Time stamp format    $xx
983
984    Where time stamp format is:
985
986      $01  Absolute time, 32 bit sized, using MPEG [MPEG] frames as unit
987      $02  Absolute time, 32 bit sized, using milliseconds as unit
988
989    Abolute time means that every stamp contains the time from the
990    beginning of the file.
991
992    Followed by a list of key events in the following format:
993
994      Type of event   $xx
995      Time stamp      $xx (xx ...)
996
997    The 'Time stamp' is set to zero if directly at the beginning of the
998    sound or after the previous event. All events should be sorted in
999    chronological order. The type of event is as follows:
1000
1001      $00  padding (has no meaning)
1002      $01  end of initial silence
1003      $02  intro start
1004      $03  mainpart start
1005      $04  outro start
1006      $05  outro end
1007      $06  verse start
1008      $07  refrain start
1009      $08  interlude start
1010      $09  theme start
1011      $0A  variation start
1012      $0B  key change
1013      $0C  time change
1014      $0D  momentary unwanted noise (Snap, Crackle & Pop)
1015      $0E  sustained noise
1016      $0F  sustained noise end
1017      $10  intro end
1018      $11  mainpart end
1019      $12  verse end
1020      $13  refrain end
1021      $14  theme end
1022
1023      $15-$DF  reserved for future use
1024
1025      $E0-$EF  not predefined sync 0-F
1026
1027      $F0-$FC  reserved for future use
1028
1029      $FD  audio end (start of silence)
1030      $FE  audio file ends
1031      $FF  one more byte of events follows (all the following bytes with
1032           the value $FF have the same function)
1033
1034    Terminating the start events such as "intro start" is not required.
1035    The 'Not predefined sync's ($E0-EF) are for user events. You might
1036    want to synchronise your music to something, like setting of an
1037    explosion on-stage, turning on your screensaver etc.
1038
1039    There may only be one "ETCO" frame in each tag.
1040
1041
1042 4.7.   MPEG location lookup table
1043
1044    To increase performance and accuracy of jumps within a MPEG [MPEG]
1045    audio file, frames with timecodes in different locations in the file
1046    might be useful. The ID3v2 frame includes references that the
1047    software can use to calculate positions in the file. After the frame
1048    header is a descriptor of how much the 'frame counter' should
1049    increase for every reference. If this value is two then the first
1050    reference points out the second frame, the 2nd reference the 4th
1051    frame, the 3rd reference the 6th frame etc. In a similar way the
1052    'bytes between reference' and 'milliseconds between reference' points
1053    out bytes and milliseconds respectively.
1054
1055    Each reference consists of two parts; a certain number of bits, as
1056    defined in 'bits for bytes deviation', that describes the difference
1057    between what is said in 'bytes between reference' and the reality and
1058    a certain number of bits, as defined in 'bits for milliseconds
1059    deviation', that describes the difference between what is said in
1060    'milliseconds between reference' and the reality. The number of bits
1061    in every reference, i.e. 'bits for bytes deviation'+'bits for
1062    milliseconds deviation', must be a multiple of four. There may only
1063    be one "MLLT" frame in each tag.
1064
1065      <Header for 'Location lookup table', ID: "MLLT">
1066      MPEG frames between reference  $xx xx
1067      Bytes between reference        $xx xx xx
1068      Milliseconds between reference $xx xx xx
1069      Bits for bytes deviation       $xx
1070      Bits for milliseconds dev.     $xx
1071
1072    Then for every reference the following data is included;
1073
1074      Deviation in bytes         %xxx....
1075      Deviation in milliseconds  %xxx....
1076
1077
1078 4.8.   Synchronised tempo codes
1079
1080    For a more accurate description of the tempo of a musical piece this
1081    frame might be used. After the header follows one byte describing
1082    which time stamp format should be used. Then follows one or more
1083    tempo codes. Each tempo code consists of one tempo part and one time
1084    part. The tempo is in BPM described with one or two bytes. If the
1085    first byte has the value $FF, one more byte follows, which is added
1086    to the first giving a range from 2 - 510 BPM, since $00 and $01 is
1087    reserved. $00 is used to describe a beat-free time period, which is
1088    not the same as a music-free time period. $01 is used to indicate one
1089    single beat-stroke followed by a beat-free period.
1090
1091    The tempo descriptor is followed by a time stamp. Every time the
1092    tempo in the music changes, a tempo descriptor may indicate this for
1093    the player. All tempo descriptors should be sorted in chronological
1094    order. The first beat-stroke in a time-period is at the same time as
1095    the beat description occurs. There may only be one "SYTC" frame in
1096    each tag.
1097
1098      <Header for 'Synchronised tempo codes', ID: "SYTC">
1099      Time stamp format   $xx
1100      Tempo data          <binary data>
1101
1102    Where time stamp format is:
1103
1104      $01  Absolute time, 32 bit sized, using MPEG [MPEG] frames as unit
1105      $02  Absolute time, 32 bit sized, using milliseconds as unit
1106
1107    Abolute time means that every stamp contains the time from the
1108    beginning of the file.
1109
1110
1111 4.9.   Unsychronised lyrics/text transcription
1112
1113    This frame contains the lyrics of the song or a text transcription of
1114    other vocal activities. The head includes an encoding descriptor and
1115    a content descriptor. The body consists of the actual text. The
1116    'Content descriptor' is a terminated string. If no descriptor is
1117    entered, 'Content descriptor' is $00 (00) only. Newline characters
1118    are allowed in the text. There may be more than one 'Unsynchronised
1119    lyrics/text transcription' frame in each tag, but only one with the
1120    same language and content descriptor.
1121
1122      <Header for 'Unsynchronised lyrics/text transcription', ID: "USLT">
1123      Text encoding        $xx
1124      Language             $xx xx xx
1125      Content descriptor   <text string according to encoding> $00 (00)
1126      Lyrics/text          <full text string according to encoding>
1127
1128
1129 4.10.   Synchronised lyrics/text
1130
1131    This is another way of incorporating the words, said or sung lyrics,
1132    in the audio file as text, this time, however, in sync with the
1133    audio. It might also be used to describing events e.g. occurring on a
1134    stage or on the screen in sync with the audio. The header includes a
1135    content descriptor, represented with as terminated textstring. If no
1136    descriptor is entered, 'Content descriptor' is $00 (00) only.
1137
1138      <Header for 'Synchronised lyrics/text', ID: "SYLT">
1139      Text encoding        $xx
1140      Language             $xx xx xx
1141      Time stamp format    $xx
1142      Content type         $xx
1143      Content descriptor   <text string according to encoding> $00 (00)
1144
1145
1146    Encoding:   $00  ISO-8859-1 [ISO-8859-1] character set is used => $00
1147                     is sync identifier.
1148                $01  Unicode [UNICODE] character set is used => $00 00 is
1149                     sync identifier.
1150
1151    Content type:   $00 is other
1152                    $01 is lyrics
1153                    $02 is text transcription
1154                    $03 is movement/part name (e.g. "Adagio")
1155                    $04 is events (e.g. "Don Quijote enters the stage")
1156                    $05 is chord (e.g. "Bb F Fsus")
1157                    $06 is trivia/'pop up' information
1158
1159    Time stamp format is:
1160
1161      $01  Absolute time, 32 bit sized, using MPEG [MPEG] frames as unit
1162      $02  Absolute time, 32 bit sized, using milliseconds as unit
1163
1164    Abolute time means that every stamp contains the time from the
1165    beginning of the file.
1166
1167    The text that follows the frame header differs from that of the
1168    unsynchronised lyrics/text transcription in one major way. Each
1169    syllable (or whatever size of text is considered to be convenient by
1170    the encoder) is a null terminated string followed by a time stamp
1171    denoting where in the sound file it belongs. Each sync thus has the
1172    following structure:
1173
1174      Terminated text to be synced (typically a syllable)
1175      Sync identifier (terminator to above string)   $00 (00)
1176      Time stamp                                     $xx (xx ...)
1177
1178    The 'time stamp' is set to zero or the whole sync is omitted if
1179    located directly at the beginning of the sound. All time stamps
1180    should be sorted in chronological order. The sync can be considered
1181    as a validator of the subsequent string.
1182
1183    Newline ($0A) characters are allowed in all "SYLT" frames and should
1184    be used after every entry (name, event etc.) in a frame with the
1185    content type $03 - $04.
1186
1187    A few considerations regarding whitespace characters: Whitespace
1188    separating words should mark the beginning of a new word, thus
1189    occurring in front of the first syllable of a new word. This is also
1190    valid for new line characters. A syllable followed by a comma should
1191    not be broken apart with a sync (both the syllable and the comma
1192    should be before the sync).
1193
1194    An example: The "USLT" passage
1195
1196      "Strangers in the night" $0A "Exchanging glances"
1197
1198    would be "SYLT" encoded as:
1199
1200      "Strang" $00 xx xx "ers" $00 xx xx " in" $00 xx xx " the" $00 xx xx
1201      " night" $00 xx xx 0A "Ex" $00 xx xx "chang" $00 xx xx "ing" $00 xx
1202      xx "glan" $00 xx xx "ces" $00 xx xx
1203
1204    There may be more than one "SYLT" frame in each tag, but only one
1205    with the same language and content descriptor.
1206
1207
1208 4.11.   Comments
1209
1210    This frame is indended for any kind of full text information that
1211    does not fit in any other frame. It consists of a frame header
1212    followed by encoding, language and content descriptors and is ended
1213    with the actual comment as a text string. Newline characters are
1214    allowed in the comment text string. There may be more than one
1215    comment frame in each tag, but only one with the same language and
1216    content descriptor.
1217
1218      <Header for 'Comment', ID: "COMM">
1219      Text encoding          $xx
1220      Language               $xx xx xx
1221      Short content descrip. <text string according to encoding> $00 (00)
1222      The actual text        <full text string according to encoding>
1223
1224
1225 4.12.   Relative volume adjustment
1226
1227    This is a more subjective function than the previous ones. It allows
1228    the user to say how much he wants to increase/decrease the volume on
1229    each channel while the file is played. The purpose is to be able to
1230    align all files to a reference volume, so that you don't have to
1231    change the volume constantly. This frame may also be used to balance
1232    adjust the audio. If the volume peak levels are known then this could
1233    be described with the 'Peak volume right' and 'Peak volume left'
1234    field. If Peakvolume is not known these fields could be left zeroed
1235    or, if no other data follows, be completely omitted. There may only
1236    be one "RVAD" frame in each tag.
1237
1238      <Header for 'Relative volume adjustment', ID: "RVAD">
1239      Increment/decrement           %00xxxxxx
1240      Bits used for volume descr.   $xx
1241      Relative volume change, right $xx xx (xx ...)
1242      Relative volume change, left  $xx xx (xx ...)
1243      Peak volume right             $xx xx (xx ...)
1244      Peak volume left              $xx xx (xx ...)
1245
1246    In the increment/decrement field bit 0 is used to indicate the right
1247    channel and bit 1 is used to indicate the left channel. 1 is
1248    increment and 0 is decrement.
1249
1250    The 'bits used for volume description' field is normally $10 (16
1251    bits) for MPEG 2 layer I, II and III [MPEG] and MPEG 2.5. This value
1252    may not be $00. The volume is always represented with whole bytes,
1253    padded in the beginning (highest bits) when 'bits used for volume
1254    description' is not a multiple of eight.
1255
1256    This datablock is then optionally followed by a volume definition for
1257    the left and right back channels. If this information is appended to
1258    the frame the first two channels will be treated as front channels.
1259    In the increment/decrement field bit 2 is used to indicate the right
1260    back channel and bit 3 for the left back channel.
1261
1262      Relative volume change, right back $xx xx (xx ...)
1263      Relative volume change, left back  $xx xx (xx ...)
1264      Peak volume right back             $xx xx (xx ...)
1265      Peak volume left back              $xx xx (xx ...)
1266
1267    If the center channel adjustment is present the following is appended
1268    to the existing frame, after the left and right back channels. The
1269    center channel is represented by bit 4 in the increase/decrease
1270    field.
1271
1272      Relative volume change, center  $xx xx (xx ...)
1273      Peak volume center              $xx xx (xx ...)
1274
1275    If the bass channel adjustment is present the following is appended
1276    to the existing frame, after the center channel. The bass channel is
1277    represented by bit 5 in the increase/decrease field.
1278
1279      Relative volume change, bass  $xx xx (xx ...)
1280      Peak volume bass              $xx xx (xx ...)
1281
1282
1283 4.13.   Equalisation
1284
1285    This is another subjective, alignment frame. It allows the user to
1286    predefine an equalisation curve within the audio file. There may only
1287    be one "EQUA" frame in each tag.
1288
1289      <Header of 'Equalisation', ID: "EQUA">
1290      Adjustment bits    $xx
1291
1292    The 'adjustment bits' field defines the number of bits used for
1293    representation of the adjustment. This is normally $10 (16 bits) for
1294    MPEG 2 layer I, II and III [MPEG] and MPEG 2.5. This value may not be
1295    $00.
1296
1297    This is followed by 2 bytes + ('adjustment bits' rounded up to the
1298    nearest byte) for every equalisation band in the following format,
1299    giving a frequency range of 0 - 32767Hz:
1300
1301      Increment/decrement   %x (MSB of the Frequency)
1302      Frequency             (lower 15 bits)
1303      Adjustment            $xx (xx ...)
1304
1305    The increment/decrement bit is 1 for increment and 0 for decrement.
1306    The equalisation bands should be ordered increasingly with reference
1307    to frequency. All frequencies don't have to be declared. The
1308    equalisation curve in the reading software should be interpolated
1309    between the values in this frame. Three equal adjustments for three
1310    subsequent frequencies. A frequency should only be described once in
1311    the frame.
1312
1313
1314 4.14.   Reverb
1315
1316    Yet another subjective one. You may here adjust echoes of different
1317    kinds. Reverb left/right is the delay between every bounce in ms.
1318    Reverb bounces left/right is the number of bounces that should be
1319    made. $FF equals an infinite number of bounces. Feedback is the
1320    amount of volume that should be returned to the next echo bounce. $00
1321    is 0%, $FF is 100%. If this value were $7F, there would be 50% volume
1322    reduction on the first bounce, 50% of that on the second and so on.
1323    Left to left means the sound from the left bounce to be played in the
1324    left speaker, while left to right means sound from the left bounce to
1325    be played in the right speaker.
1326
1327    'Premix left to right' is the amount of left sound to be mixed in the
1328    right before any reverb is applied, where $00 id 0% and $FF is 100%.
1329    'Premix right to left' does the same thing, but right to left.
1330    Setting both premix to $FF would result in a mono output (if the
1331    reverb is applied symmetric). There may only be one "RVRB" frame in
1332    each tag.
1333
1334      <Header for 'Reverb', ID: "RVRB">
1335      Reverb left (ms)                 $xx xx
1336      Reverb right (ms)                $xx xx
1337      Reverb bounces, left             $xx
1338      Reverb bounces, right            $xx
1339      Reverb feedback, left to left    $xx
1340      Reverb feedback, left to right   $xx
1341      Reverb feedback, right to right  $xx
1342      Reverb feedback, right to left   $xx
1343      Premix left to right             $xx
1344      Premix right to left             $xx
1345
1346
1347 4.15.   Attached picture
1348
1349    This frame contains a picture directly related to the audio file.
1350    Image format is the MIME type and subtype [MIME] for the image. In
1351    the event that the MIME media type name is omitted, "image/" will be
1352    implied. The "image/png" [PNG] or "image/jpeg" [JFIF] picture format
1353    should be used when interoperability is wanted. Description is a
1354    short description of the picture, represented as a terminated
1355    textstring. The description has a maximum length of 64 characters,
1356    but may be empty. There may be several pictures attached to one file,
1357    each in their individual "APIC" frame, but only one with the same
1358    content descriptor. There may only be one picture with the picture
1359    type declared as picture type $01 and $02 respectively. There is the
1360    possibility to put only a link to the image file by using the 'MIME
1361    type' "-->" and having a complete URL [URL] instead of picture data.
1362    The use of linked files should however be used sparingly since there
1363    is the risk of separation of files.
1364
1365      <Header for 'Attached picture', ID: "APIC">
1366      Text encoding      $xx
1367      MIME type          <text string> $00
1368      Picture type       $xx
1369      Description        <text string according to encoding> $00 (00)
1370      Picture data       <binary data>
1371
1372
1373    Picture type:  $00  Other
1374                   $01  32x32 pixels 'file icon' (PNG only)
1375                   $02  Other file icon
1376                   $03  Cover (front)
1377                   $04  Cover (back)
1378                   $05  Leaflet page
1379                   $06  Media (e.g. lable side of CD)
1380                   $07  Lead artist/lead performer/soloist
1381                   $08  Artist/performer
1382                   $09  Conductor
1383                   $0A  Band/Orchestra
1384                   $0B  Composer
1385                   $0C  Lyricist/text writer
1386                   $0D  Recording Location
1387                   $0E  During recording
1388                   $0F  During performance
1389                   $10  Movie/video screen capture
1390                   $11  A bright coloured fish
1391                   $12  Illustration
1392                   $13  Band/artist logotype
1393                   $14  Publisher/Studio logotype
1394
1395
1396 4.16.   General encapsulated object
1397
1398    In this frame any type of file can be encapsulated. After the header,
1399    'Frame size' and 'Encoding' follows 'MIME type' [MIME] represented as
1400    as a terminated string encoded with ISO 8859-1 [ISO-8859-1]. The
1401    filename is case sensitive and is encoded as 'Encoding'. Then follows
1402    a content description as terminated string, encoded as 'Encoding'.
1403    The last thing in the frame is the actual object. The first two
1404    strings may be omitted, leaving only their terminations. MIME type is
1405    always an ISO-8859-1 text string. There may be more than one "GEOB"
1406    frame in each tag, but only one with the same content descriptor.
1407
1408      <Header for 'General encapsulated object', ID: "GEOB">
1409      Text encoding          $xx
1410      MIME type              <text string> $00
1411      Filename               <text string according to encoding> $00 (00)
1412      Content description    <text string according to encóding> $00 (00)
1413      Encapsulated object    <binary data>
1414
1415
1416 4.17.   Play counter
1417
1418    This is simply a counter of the number of times a file has been
1419    played. The value is increased by one every time the file begins to
1420    play. There may only be one "PCNT" frame in each tag. When the
1421    counter reaches all one's, one byte is inserted in front of the
1422    counter thus making the counter eight bits bigger.  The counter must
1423    be at least 32-bits long to begin with.
1424
1425      <Header for 'Play counter', ID: "PCNT">
1426      Counter        $xx xx xx xx (xx ...)
1427
1428
1429 4.18.   Popularimeter
1430
1431    The purpose of this frame is to specify how good an audio file is.
1432    Many interesting applications could be found to this frame such as a
1433    playlist that features better audiofiles more often than others or it
1434    could be used to profile a person's taste and find other 'good' files
1435    by comparing people's profiles. The frame is very simple. It contains
1436    the email address to the user, one rating byte and a four byte play
1437    counter, intended to be increased with one for every time the file is
1438    played. The email is a terminated string. The rating is 1-255 where
1439    1 is worst and 255 is best. 0 is unknown. If no personal counter is
1440    wanted it may be omitted.  When the counter reaches all one's, one
1441    byte is inserted in front of the counter thus making the counter
1442    eight bits bigger in the same away as the play counter ("PCNT").
1443    There may be more than one "POPM" frame in each tag, but only one
1444    with the same email address.
1445
1446      <Header for 'Popularimeter', ID: "POPM">
1447      Email to user   <text string> $00
1448      Rating          $xx
1449      Counter         $xx xx xx xx (xx ...)
1450
1451
1452 4.19.   Recommended buffer size
1453
1454    Sometimes the server from which a audio file is streamed is aware of
1455    transmission or coding problems resulting in interruptions in the
1456    audio stream. In these cases, the size of the buffer can be
1457    recommended by the server using this frame. If the 'embedded info
1458    flag' is true (1) then this indicates that an ID3 tag with the
1459    maximum size described in 'Buffer size' may occur in the audiostream.
1460    In such case the tag should reside between two MPEG [MPEG] frames, if
1461    the audio is MPEG encoded. If the position of the next tag is known,
1462    'offset to next tag' may be used. The offset is calculated from the
1463    end of tag in which this frame resides to the first byte of the
1464    header in the next. This field may be omitted. Embedded tags are
1465    generally not recommended since this could render unpredictable
1466    behaviour from present software/hardware.
1467
1468    For applications like streaming audio it might be an idea to embed
1469    tags into the audio stream though. If the clients connects to
1470    individual connections like HTTP and there is a possibility to begin
1471    every transmission with a tag, then this tag should include a
1472    'recommended buffer size' frame. If the client is connected to a
1473    arbitrary point in the stream, such as radio or multicast, then the
1474    'recommended buffer size' frame should be included in every tag.
1475    Every tag that is picked up after the initial/first tag is to be
1476    considered as an update of the previous one. E.g. if there is a
1477    "TIT2" frame in the first received tag and one in the second tag,
1478    then the first should be 'replaced' with the second.
1479
1480    The 'Buffer size' should be kept to a minimum. There may only be one
1481    "RBUF" frame in each tag.
1482
1483      <Header for 'Recommended buffer size', ID: "RBUF">
1484      Buffer size               $xx xx xx
1485      Embedded info flag        %0000000x
1486      Offset to next tag        $xx xx xx xx
1487
1488
1489 4.20.   Audio encryption
1490
1491    This frame indicates if the actual audio stream is encrypted, and by
1492    whom. Since standardisation of such encrypion scheme is beyond this
1493    document, all "AENC" frames begin with a terminated string with a
1494    URL containing an email address, or a link to a location where an
1495    email address can be found, that belongs to the organisation
1496    responsible for this specific encrypted audio file. Questions
1497    regarding the encrypted audio should be sent to the email address
1498    specified. If a $00 is found directly after the 'Frame size' and the
1499    audiofile indeed is encrypted, the whole file may be considered
1500    useless.
1501
1502    After the 'Owner identifier', a pointer to an unencrypted part of the
1503    audio can be specified. The 'Preview start' and 'Preview length' is
1504    described in frames. If no part is unencrypted, these fields should
1505    be left zeroed. After the 'preview length' field follows optionally a
1506    datablock required for decryption of the audio. There may be more
1507    than one "AENC" frames in a tag, but only one with the same 'Owner
1508    identifier'.
1509
1510      <Header for 'Audio encryption', ID: "AENC">
1511      Owner identifier   <text string> $00
1512      Preview start      $xx xx
1513      Preview length     $xx xx
1514      Encryption info    <binary data>
1515
1516
1517 4.21.   Linked information
1518
1519    To keep space waste as low as possible this frame may be used to link
1520    information from another ID3v2 tag that might reside in another audio
1521    file or alone in a binary file. It is recommended that this method is
1522    only used when the files are stored on a CD-ROM or other
1523    circumstances when the risk of file seperation is low. The frame
1524    contains a frame identifier, which is the frame that should be linked
1525    into this tag, a URL [URL] field, where a reference to the file where
1526    the frame is given, and additional ID data, if needed. Data should be
1527    retrieved from the first tag found in the file to which this link
1528    points. There may be more than one "LINK" frame in a tag, but only
1529    one with the same contents. A linked frame is to be considered as
1530    part of the tag and has the same restrictions as if it was a physical
1531    part of the tag (i.e. only one "RVRB" frame allowed, whether it's
1532    linked or not).
1533
1534      <Header for 'Linked information', ID: "LINK">
1535      Frame identifier        $xx xx xx
1536      URL                     <text string> $00
1537      ID and additional data  <text string(s)>
1538
1539    Frames that may be linked and need no additional data are "IPLS",
1540    "MCID", "ETCO", "MLLT", "SYTC", "RVAD", "EQUA", "RVRB", "RBUF", the
1541    text information frames and the URL link frames.
1542
1543    The "TXXX", "APIC", "GEOB" and "AENC" frames may be linked with
1544    the content descriptor as additional ID data.
1545
1546    The "COMM", "SYLT" and "USLT" frames may be linked with three bytes
1547    of language descriptor directly followed by a content descriptor as
1548    additional ID data.
1549
1550
1551 4.22.   Position synchronisation frame
1552
1553    This frame delivers information to the listener of how far into the
1554    audio stream he picked up; in effect, it states the time offset of
1555    the first frame in the stream. The frame layout is:
1556
1557      <Head for 'Position synchronisation', ID: "POSS">
1558      Time stamp format         $xx
1559      Position                  $xx (xx ...)
1560
1561    Where time stamp format is:
1562
1563      $01  Absolute time, 32 bit sized, using MPEG frames as unit
1564      $02  Absolute time, 32 bit sized, using milliseconds as unit
1565
1566    and position is where in the audio the listener starts to receive,
1567    i.e. the beginning of the next frame. If this frame is used in the
1568    beginning of a file the value is always 0. There may only be one
1569    "POSS" frame in each tag.
1570
1571
1572 4.23.   Terms of use frame
1573
1574    This frame contains a brief description of the terms of use and
1575    ownership of the file. More detailed information concerning the legal
1576    terms might be available through the "WCOP" frame. Newlines are
1577    allowed in the text. There may only be one "USER" frame in a tag.
1578
1579      <Header for 'Terms of use frame', ID: "USER">
1580      Text encoding        $xx
1581      Language             $xx xx xx
1582      The actual text      <text string according to encoding>
1583
1584
1585 4.24.   Ownership frame
1586
1587    The ownership frame might be used as a reminder of a made transaction
1588    or, if signed, as proof. Note that the "USER" and "TOWN" frames are
1589    good to use in conjunction with this one. The frame begins, after the
1590    frame ID, size and encoding fields, with a 'price payed' field. The
1591    first three characters of this field contains the currency used for
1592    the transaction, encoded according to ISO 4217 [ISO-4217] alphabetic
1593    currency code. Concatenated to this is the actual price payed, as a
1594    numerical string using "." as the decimal separator. Next is an 8
1595    character date string (YYYYMMDD) followed by a string with the name
1596    of the seller as the last field in the frame. There may only be one
1597    "OWNE" frame in a tag.
1598
1599      <Header for 'Ownership frame', ID: "OWNE">
1600      Text encoding     $xx
1601      Price payed       <text string> $00
1602      Date of purch.    <text string>
1603      Seller            <text string according to encoding>
1604
1605
1606 4.25.   Commercial frame
1607
1608    This frame enables several competing offers in the same tag by
1609    bundling all needed information. That makes this frame rather complex
1610    but it's an easier solution than if one tries to achieve the same
1611    result with several frames. The frame begins, after the frame ID,
1612    size and encoding fields, with a price string field. A price is
1613    constructed by one three character currency code, encoded according
1614    to ISO 4217 [ISO-4217] alphabetic currency code, followed by a
1615    numerical value where "." is used as decimal seperator. In the price
1616    string several prices may be concatenated, seperated by a "/"
1617    character, but there may only be one currency of each type.
1618
1619    The price string is followed by an 8 character date string in the
1620    format YYYYMMDD, describing for how long the price is valid. After
1621    that is a contact URL, with which the user can contact the seller,
1622    followed by a one byte 'received as' field. It describes how the
1623    audio is delivered when bought according to the following list:
1624
1625         $00  Other
1626         $01  Standard CD album with other songs
1627         $02  Compressed audio on CD
1628         $03  File over the Internet
1629         $04  Stream over the Internet
1630         $05  As note sheets
1631         $06  As note sheets in a book with other sheets
1632         $07  Music on other media
1633         $08  Non-musical merchandise
1634
1635    Next follows a terminated string with the name of the seller followed
1636    by a terminated string with a short description of the product. The
1637    last thing is the ability to include a company logotype. The first of
1638    them is the 'Picture MIME type' field containing information about
1639    which picture format is used. In the event that the MIME media type
1640    name is omitted, "image/" will be implied. Currently only "image/png"
1641    and "image/jpeg" are allowed. This format string is followed by the
1642    binary picture data. This two last fields may be omitted if no
1643    picture is to attach.
1644
1645      <Header for 'Commercial frame', ID: "COMR">
1646      Text encoding      $xx
1647      Price string       <text string> $00
1648      Valid until        <text string>
1649      Contact URL        <text string> $00
1650      Received as        $xx
1651      Name of seller     <text string according to encoding> $00 (00)
1652      Description        <text string according to encoding> $00 (00)
1653      Picture MIME type  <string> $00
1654      Seller logo        <binary data>
1655
1656
1657 4.26.   Encryption method registration
1658
1659    To identify with which method a frame has been encrypted the
1660    encryption method must be registered in the tag with this frame. The
1661    'Owner identifier' is a null-terminated string with a URL [URL]
1662    containing an email address, or a link to a location where an email
1663    address can be found, that belongs to the organisation responsible
1664    for this specific encryption method. Questions regarding the
1665    encryption method should be sent to the indicated email address. The
1666    'Method symbol' contains a value that is associated with this method
1667    throughout the whole tag. Values below $80 are reserved. The 'Method
1668    symbol' may optionally be followed by encryption specific data. There
1669    may be several "ENCR" frames in a tag but only one containing the
1670    same symbol and only one containing the same owner identifier. The
1671    method must be used somewhere in the tag. See section 3.3.1, flag j
1672    for more information.
1673
1674      <Header for 'Encryption method registration', ID: "ENCR">
1675      Owner identifier    <text string> $00
1676      Method symbol       $xx
1677      Encryption data     <binary data>
1678
1679
1680 4.27.   Group identification registration
1681
1682    This frame enables grouping of otherwise unrelated frames. This can
1683    be used when some frames are to be signed. To identify which frames
1684    belongs to a set of frames a group identifier must be registered in
1685    the tag with this frame. The 'Owner identifier' is a null-terminated
1686    string with a URL [URL] containing an email address, or a link to a
1687    location where an email address can be found, that belongs to the
1688    organisation responsible for this grouping. Questions regarding the
1689    grouping should be sent to the indicated email address. The 'Group
1690    symbol' contains a value that associates the frame with this group
1691    throughout the whole tag. Values below $80 are reserved. The 'Group
1692    symbol' may optionally be followed by some group specific data, e.g.
1693    a digital signature. There may be several "GRID" frames in a tag but
1694    only one containing the same symbol and only one containing the same
1695    owner identifier. The group symbol must be used somewhere in the tag.
1696    See section 3.3.1, flag j for more information.
1697
1698      <Header for 'Group ID registration', ID: "GRID">
1699      Owner identifier      <text string> $00
1700      Group symbol          $xx
1701          Group dependent data  <binary data>
1702
1703
1704 4.28.   Private frame
1705
1706    This frame is used to contain information from a software producer
1707    that its program uses and does not fit into the other frames. The
1708    frame consists of an 'Owner identifier' string and the binary data.
1709    The 'Owner identifier' is a null-terminated string with a URL [URL]
1710    containing an email address, or a link to a location where an email
1711    address can be found, that belongs to the organisation responsible
1712    for the frame. Questions regarding the frame should be sent to the
1713    indicated email address. The tag may contain more than one "PRIV"
1714    frame but only with different contents. It is recommended to keep the
1715    number of "PRIV" frames as low as possible.
1716
1717      <Header for 'Private frame', ID: "PRIV">
1718      Owner identifier      <text string> $00
1719          The private data      <binary data>
1720
1721
1722 5.   The 'unsynchronisation scheme'
1723
1724    The only purpose of the 'unsynchronisation scheme' is to make the
1725    ID3v2 tag as compatible as possible with existing software. There is
1726    no use in 'unsynchronising' tags if the file is only to be processed
1727    by new software. Unsynchronisation may only be made with MPEG 2 layer
1728    I, II and III and MPEG 2.5 files.
1729
1730    Whenever a false synchronisation is found within the tag, one zeroed
1731    byte is inserted after the first false synchronisation byte. The
1732    format of a correct sync that should be altered by ID3 encoders is as
1733    follows:
1734
1735          %11111111 111xxxxx
1736
1737    And should be replaced with:
1738
1739          %11111111 00000000 111xxxxx
1740
1741    This has the side effect that all $FF 00 combinations have to be
1742    altered, so they won't be affected by the decoding process. Therefore
1743    all the $FF 00 combinations have to be replaced with the $FF 00 00
1744    combination during the unsynchronisation.
1745
1746    To indicate usage of the unsynchronisation, the first bit in 'ID3
1747    flags' should be set. This bit should only be set if the tag
1748    contains a, now corrected, false synchronisation. The bit should
1749    only be clear if the tag does not contain any false synchronisations.
1750
1751    Do bear in mind, that if a compression scheme is used by the encoder,
1752    the unsynchronisation scheme should be applied *afterwards*. When
1753    decoding a compressed, 'unsynchronised' file, the 'unsynchronisation
1754    scheme' should be parsed first, decompression afterwards.
1755
1756    If the last byte in the tag is $FF, and there is a need to eliminate
1757    false synchronisations in the tag, at least one byte of padding
1758    should be added.
1759
1760
1761 6.   Copyright
1762
1763    Copyright (C) Martin Nilsson 1998. All Rights Reserved.
1764
1765    This document and translations of it may be copied and furnished to
1766    others, and derivative works that comment on or otherwise explain it
1767    or assist in its implementation may be prepared, copied, published
1768    and distributed, in whole or in part, without restriction of any
1769    kind, provided that a reference to this document is included on all
1770    such copies and derivative works. However, this document itself may
1771    not be modified in any way and reissued as the original document.
1772
1773    The limited permissions granted above are perpetual and will not be
1774    revoked.
1775
1776    This document and the information contained herein is provided on an
1777    "AS IS" basis and THE AUTHORS DISCLAIMS ALL WARRANTIES, EXPRESS OR
1778    IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF
1779    THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED
1780    WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
1781
1782
1783 7.   References
1784
1785    [CDDB] Compact Disc Data Base
1786
1787       http://www.cddb.com
1788
1789    [ID3v2] Martin Nilsson, "ID3v2 informal standard".
1790
1791       http://www.id3lib.org/id3/id3v2-00.txt
1792
1793    [ISO-639-2] ISO/FDIS 639-2.
1794    Codes for the representation of names of languages, Part 2: Alpha-3
1795    code. Technical committee / subcommittee: TC 37 / SC 2
1796
1797    [ISO-4217] ISO 4217:1995.
1798    Codes for the representation of currencies and funds.
1799    Technical committee / subcommittee: TC 68
1800
1801    [ISO-8859-1] ISO/IEC DIS 8859-1.
1802    8-bit single-byte coded graphic character sets, Part 1: Latin
1803    alphabet No. 1. Technical committee / subcommittee: JTC 1 / SC 2
1804
1805    [ISRC] ISO 3901:1986
1806    International Standard Recording Code (ISRC).
1807    Technical committee / subcommittee: TC 46 / SC 9
1808
1809    [JFIF] JPEG File Interchange Format, version 1.02
1810
1811       http://www.w3.org/Graphics/JPEG/jfif.txt">http://www.w3.org/Graphics/JPEG/jfif.txt
1812
1813    [MIME] Freed, N.  and N. Borenstein,  "Multipurpose Internet Mail
1814    Extensions (MIME) Part One: Format of Internet Message Bodies",
1815    RFC 2045, November 1996.
1816
1817       ftp://ftp.isi.edu/in-notes/rfc2045.txt">ftp://ftp.isi.edu/in-notes/rfc2045.txt
1818
1819    [MPEG] ISO/IEC 11172-3:1993.
1820    Coding of moving pictures and associated audio for digital storage
1821    media at up to about 1,5 Mbit/s, Part 3: Audio.
1822    Technical committee / subcommittee: JTC 1 / SC 29
1823     and
1824    ISO/IEC 13818-3:1995
1825    Generic coding of moving pictures and associated audio information,
1826    Part 3: Audio.
1827    Technical committee / subcommittee: JTC 1 / SC 29
1828     and
1829    ISO/IEC DIS 13818-3
1830    Generic coding of moving pictures and associated audio information,
1831    Part 3: Audio (Revision of ISO/IEC 13818-3:1995)
1832
1833
1834    [PNG] Portable Network Graphics, version 1.0
1835
1836       http://www.w3.org/TR/REC-png-multi.html
1837
1838    [UNICODE] ISO/IEC 10646-1:1993.
1839    Universal Multiple-Octet Coded Character Set (UCS), Part 1:
1840    Architecture and Basic Multilingual Plane.
1841    Technical committee / subcommittee: JTC 1 / SC 2
1842
1843       http://www.unicode.org/
1844
1845    [URL] T. Berners-Lee, L. Masinter & M. McCahill, "Uniform Resource
1846    Locators (URL).", RFC 1738, December 1994.
1847
1848       ftp://ftp.isi.edu/in-notes/rfc1738.txt
1849
1850    [ZLIB] P. Deutsch, Aladdin Enterprises & J-L. Gailly, "ZLIB
1851    Compressed
1852    Data Format Specification version 3.3", RFC 1950, May 1996.
1853
1854       ftp://ftp.isi.edu/in-notes/rfc1950.txt
1855
1856
1857 8.   Appendix
1858
1859
1860 A.   Appendix A - Genre List from ID3v1
1861
1862    The following genres is defined in ID3v1
1863
1864       0.Blues
1865       1.Classic Rock
1866       2.Country
1867       3.Dance
1868       4.Disco
1869       5.Funk
1870       6.Grunge
1871       7.Hip-Hop
1872       8.Jazz
1873       9.Metal
1874      10.New Age
1875      11.Oldies
1876      12.Other
1877      13.Pop
1878      14.R&B
1879      15.Rap
1880      16.Reggae
1881      17.Rock
1882      18.Techno
1883      19.Industrial
1884      20.Alternative
1885      21.Ska
1886      22.Death Metal
1887      23.Pranks
1888      24.Soundtrack
1889      25.Euro-Techno
1890      26.Ambient
1891      27.Trip-Hop
1892      28.Vocal
1893      29.Jazz+Funk
1894      30.Fusion
1895      31.Trance
1896      32.Classical
1897      33.Instrumental
1898      34.Acid
1899      35.House
1900      36.Game
1901      37.Sound Clip
1902      38.Gospel
1903      39.Noise
1904      40.AlternRock
1905      41.Bass
1906      42.Soul
1907      43.Punk
1908      44.Space
1909      45.Meditative
1910      46.Instrumental Pop
1911      47.Instrumental Rock
1912      48.Ethnic
1913      49.Gothic
1914      50.Darkwave
1915      51.Techno-Industrial
1916      52.Electronic
1917      53.Pop-Folk
1918      54.Eurodance
1919      55.Dream
1920      56.Southern Rock
1921      57.Comedy
1922      58.Cult
1923      59.Gangsta
1924      60.Top 40
1925      61.Christian Rap
1926      62.Pop/Funk
1927      63.Jungle
1928      64.Native American
1929      65.Cabaret
1930      66.New Wave
1931      67.Psychadelic
1932      68.Rave
1933      69.Showtunes
1934      70.Trailer
1935      71.Lo-Fi
1936      72.Tribal
1937      73.Acid Punk
1938      74.Acid Jazz
1939      75.Polka
1940      76.Retro
1941      77.Musical
1942      78.Rock & Roll
1943      79.Hard Rock
1944
1945    The following genres are Winamp extensions
1946
1947      80.Folk
1948      81.Folk-Rock
1949      82.National Folk
1950      83.Swing
1951      84.Fast Fusion
1952      85.Bebob
1953      86.Latin
1954      87.Revival
1955      88.Celtic
1956      89.Bluegrass
1957      90.Avantgarde
1958      91.Gothic Rock
1959      92.Progressive Rock
1960      93.Psychedelic Rock
1961      94.Symphonic Rock
1962      95.Slow Rock
1963      96.Big Band
1964      97.Chorus
1965      98.Easy Listening
1966      99.Acoustic
1967     100.Humour
1968     101.Speech
1969     102.Chanson
1970     103.Opera
1971     104.Chamber Music
1972     105.Sonata
1973     106.Symphony
1974     107.Booty Bass
1975     108.Primus
1976     109.Porn Groove
1977     110.Satire
1978     111.Slow Jam
1979     112.Club
1980     113.Tango
1981     114.Samba
1982     115.Folklore
1983     116.Ballad
1984     117.Power Ballad
1985     118.Rhythmic Soul
1986     119.Freestyle
1987     120.Duet
1988     121.Punk Rock
1989     122.Drum Solo
1990     123.Acapella
1991     124.Euro-House
1992     125.Dance Hall
1993
1994
1995 9.   Author's Address
1996
1997    Written by
1998
1999      Martin Nilsson
2000      Rydsvägen 246 C. 30
2001      S-584 34 Linköping
2002      Sweden
2003
2004      Email: nilsson@id3.org
2005
2006
2007    Edited by
2008
2009      Dirk Mahoney
2010      57 Pechey Street
2011      Chermside Q
2012      Australia 4032
2013
2014      Email: dirk@id3.org
2015
2016
2017      Johan Sundström
2018      Alsättersgatan 5 A. 34
2019      S-584 35 Linköping
2020      Sweden
2021
2022      Email: johan@id3.org