Added TagLib (with AUTORS and COPYING files)
[someplayer] / src / taglib / mpeg / id3v2 / id3v2.4.0-frames.txt
1 $Id: id3v2.4.0-frames.txt 168944 2002-07-26 20:59:59Z wheeler $
2
3 Informal standard                                             M. Nilsson
4 Document: id3v2.4.0-frames.txt                         1st November 2000
5
6
7                   ID3 tag version 2.4.0 - Native Frames
8
9 Status of this document
10
11    This document is an informal standard and replaces the ID3v2.3.0
12    standard [ID3v2]. A formal standard will use another revision number
13    even if the content is identical to document. The contents in this
14    document may change for clarifications but never for added or altered
15    functionallity.
16
17    Distribution of this document is unlimited.
18
19
20 Abstract
21
22    This document describes the frames natively supported by ID3v2.4.0,
23    which is a revised version of the ID3v2 informal standard [ID3v2.3.0]
24    version 2.3.0. The ID3v2 offers a flexible way of storing audio meta
25    information within audio file itself. The information may be
26    technical information, such as equalisation curves, as well as title,
27    performer, copyright etc.
28
29    ID3v2.4.0 is meant to be as close as possible to ID3v2.3.0 in order
30    to allow for implementations to be revised as easily as possible.
31
32
33 1.   Table of contents
34
35    2.   Conventions in this document
36    3.   Default flags
37    4.   Declared ID3v2 frames
38      4.1.   Unique file identifier
39      4.2.   Text information frames
40        4.2.1.   Identification frames
41        4.2.2.   Involved persons frames
42        4.2.3.   Derived and subjective properties frames
43        4.2.4.   Rights and license frames
44        4.2.5.   Other text frames
45        4.2.6.   User defined text information frame
46      4.3.   URL link frames
47        4.3.1.   URL link frames - details
48        4.3.2.   User defined URL link frame
49      4.4.   Music CD Identifier
50      4.5.   Event timing codes
51      4.6.   MPEG location lookup table
52      4.7.   Synced tempo codes
53      4.8.   Unsynchronised lyrics/text transcription
54      4.9.  Synchronised lyrics/text
55      4.10.  Comments
56      4.11.  Relative volume adjustment (2)
57      4.12.  Equalisation (2)
58      4.13.  Reverb
59      4.14.  Attached picture
60      4.15.  General encapsulated object
61      4.16.  Play counter
62      4.17.  Popularimeter
63      4.18.  Recommended buffer size
64      4.19.  Audio encryption
65      4.20.  Linked information
66      4.21.  Position synchronisation frame
67      4.22.  Terms of use
68      4.23.  Ownership frame
69      4.24.  Commercial frame
70      4.25.  Encryption method registration
71      4.26.  Group identification registration
72      4.27.  Private frame
73      4.28.  Signature frame
74      4.29.  Seek frame
75      4.30.  Audio seek point index
76    5.   Copyright
77    6.   References
78    7.   Appendix
79      A.   Appendix A - Genre List from ID3v1
80    8.   Author's Address
81
82
83 2.   Conventions in this document
84
85    Text within "" is a text string exactly as it appears in a tag.
86    Numbers preceded with $ are hexadecimal and numbers preceded with %
87    are binary. $xx is used to indicate a byte with unknown content. %x
88    is used to indicate a bit with unknown content. The most significant
89    bit (MSB) of a byte is called 'bit 7' and the least significant bit
90    (LSB) is called 'bit 0'.
91
92    A tag is the whole tag described the ID3v2 main structure document
93    [ID3v2-strct]. A frame is a block of information in the tag. The tag
94    consists of a header, frames and optional padding. A field is a piece
95    of information; one value, a string etc. A numeric string is a string
96    that consists of the characters "0123456789" only.
97
98    The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
99    "SHOULD", "SHOULD NOT", "RECOMMENDED",  "MAY", and "OPTIONAL" in this
100    document are to be interpreted as described in RFC 2119 [KEYWORDS].
101
102
103 3.   Default flags
104
105    The default settings for the frames described in this document can be
106    divided into the following classes. The flags may be set differently
107    if found more suitable by the software.
108
109     1. Discarded if tag is altered, discarded if file is altered.
110
111        None.
112
113     2. Discarded if tag is altered, preserved if file is altered.
114
115        None.
116
117     3. Preserved if tag is altered, discarded if file is altered.
118
119        ASPI, AENC, ETCO, EQU2, MLLT, POSS, SEEK, SYLT, SYTC, RVA2, TENC,
120        TLEN
121
122     4. Preserved if tag is altered, preserved if file is altered.
123
124        The rest of the frames.
125
126
127 4.   Declared ID3v2 frames
128
129    The following frames are declared in this draft.
130
131   4.19  AENC Audio encryption
132   4.14  APIC Attached picture
133   4.30  ASPI Audio seek point index
134
135   4.10  COMM Comments
136   4.24  COMR Commercial frame
137
138   4.25  ENCR Encryption method registration
139   4.12  EQU2 Equalisation (2)
140   4.5   ETCO Event timing codes
141
142   4.15  GEOB General encapsulated object
143   4.26  GRID Group identification registration
144
145   4.20  LINK Linked information
146
147   4.4   MCDI Music CD identifier
148   4.6   MLLT MPEG location lookup table
149
150   4.23  OWNE Ownership frame
151
152   4.27  PRIV Private frame
153   4.16  PCNT Play counter
154   4.17  POPM Popularimeter
155   4.21  POSS Position synchronisation frame
156
157   4.18  RBUF Recommended buffer size
158   4.11  RVA2 Relative volume adjustment (2)
159   4.13  RVRB Reverb
160
161   4.29  SEEK Seek frame
162   4.28  SIGN Signature frame
163   4.9   SYLT Synchronised lyric/text
164   4.7   SYTC Synchronised tempo codes
165
166   4.2.1 TALB Album/Movie/Show title
167   4.2.3 TBPM BPM (beats per minute)
168   4.2.2 TCOM Composer
169   4.2.3 TCON Content type
170   4.2.4 TCOP Copyright message
171   4.2.5 TDEN Encoding time
172   4.2.5 TDLY Playlist delay
173   4.2.5 TDOR Original release time
174   4.2.5 TDRC Recording time
175   4.2.5 TDRL Release time
176   4.2.5 TDTG Tagging time
177   4.2.2 TENC Encoded by
178   4.2.2 TEXT Lyricist/Text writer
179   4.2.3 TFLT File type
180   4.2.2 TIPL Involved people list
181   4.2.1 TIT1 Content group description
182   4.2.1 TIT2 Title/songname/content description
183   4.2.1 TIT3 Subtitle/Description refinement
184   4.2.3 TKEY Initial key
185   4.2.3 TLAN Language(s)
186   4.2.3 TLEN Length
187   4.2.2 TMCL Musician credits list
188   4.2.3 TMED Media type
189   4.2.3 TMOO Mood
190   4.2.1 TOAL Original album/movie/show title
191   4.2.5 TOFN Original filename
192   4.2.2 TOLY Original lyricist(s)/text writer(s)
193   4.2.2 TOPE Original artist(s)/performer(s)
194   4.2.4 TOWN File owner/licensee
195   4.2.2 TPE1 Lead performer(s)/Soloist(s)
196   4.2.2 TPE2 Band/orchestra/accompaniment
197   4.2.2 TPE3 Conductor/performer refinement
198   4.2.2 TPE4 Interpreted, remixed, or otherwise modified by
199   4.2.1 TPOS Part of a set
200   4.2.4 TPRO Produced notice
201   4.2.4 TPUB Publisher
202   4.2.1 TRCK Track number/Position in set
203   4.2.4 TRSN Internet radio station name
204   4.2.4 TRSO Internet radio station owner
205   4.2.5 TSOA Album sort order
206   4.2.5 TSOP Performer sort order
207   4.2.5 TSOT Title sort order
208   4.2.1 TSRC ISRC (international standard recording code)
209   4.2.5 TSSE Software/Hardware and settings used for encoding
210   4.2.1 TSST Set subtitle
211   4.2.2 TXXX User defined text information frame
212
213   4.1   UFID Unique file identifier
214   4.22  USER Terms of use
215   4.8   USLT Unsynchronised lyric/text transcription
216
217   4.3.1 WCOM Commercial information
218   4.3.1 WCOP Copyright/Legal information
219   4.3.1 WOAF Official audio file webpage
220   4.3.1 WOAR Official artist/performer webpage
221   4.3.1 WOAS Official audio source webpage
222   4.3.1 WORS Official Internet radio station homepage
223   4.3.1 WPAY Payment
224   4.3.1 WPUB Publishers official webpage
225   4.3.2 WXXX User defined URL link frame
226
227
228 4.1.   Unique file identifier
229
230    This frame's purpose is to be able to identify the audio file in a
231    database, that may provide more information relevant to the content.
232    Since standardisation of such a database is beyond this document, all
233    UFID frames begin with an 'owner identifier' field. It is a null-
234    terminated string with a URL [URL] containing an email address, or a
235    link to a location where an email address can be found, that belongs
236    to the organisation responsible for this specific database
237    implementation. Questions regarding the database should be sent to
238    the indicated email address. The URL should not be used for the
239    actual database queries. The string
240    "http://www.id3.org/dummy/ufid.html" should be used for tests. The
241    'Owner identifier' must be non-empty (more than just a termination).
242    The 'Owner identifier' is then followed by the actual identifier,
243    which may be up to 64 bytes. There may be more than one "UFID" frame
244    in a tag, but only one with the same 'Owner identifier'.
245
246      <Header for 'Unique file identifier', ID: "UFID">
247      Owner identifier        <text string> $00
248      Identifier              <up to 64 bytes binary data>
249
250
251 4.2.   Text information frames
252
253    The text information frames are often the most important frames,
254    containing information like artist, album and more. There may only be
255    one text information frame of its kind in an tag. All text
256    information frames supports multiple strings, stored as a null
257    separated list, where null is reperesented by the termination code
258    for the charater encoding. All text frame identifiers begin with "T".
259    Only text frame identifiers begin with "T", with the exception of the
260    "TXXX" frame. All the text information frames have the following
261    format:
262
263      <Header for 'Text information frame', ID: "T000" - "TZZZ",
264      excluding "TXXX" described in 4.2.6.>
265      Text encoding                $xx
266      Information                  <text string(s) according to encoding>
267
268
269 4.2.1.   Identification frames
270
271   TIT1
272    The 'Content group description' frame is used if the sound belongs to
273    a larger category of sounds/music. For example, classical music is
274    often sorted in different musical sections (e.g. "Piano Concerto",
275    "Weather - Hurricane").
276
277   TIT2
278    The 'Title/Songname/Content description' frame is the actual name of
279    the piece (e.g. "Adagio", "Hurricane Donna").
280
281   TIT3
282    The 'Subtitle/Description refinement' frame is used for information
283    directly related to the contents title (e.g. "Op. 16" or "Performed
284    live at Wembley").
285
286   TALB
287    The 'Album/Movie/Show title' frame is intended for the title of the
288    recording (or source of sound) from which the audio in the file is
289    taken.
290
291   TOAL
292    The 'Original album/movie/show title' frame is intended for the title
293    of the original recording (or source of sound), if for example the
294    music in the file should be a cover of a previously released song.
295
296   TRCK
297    The 'Track number/Position in set' frame is a numeric string
298    containing the order number of the audio-file on its original
299    recording. This MAY be extended with a "/" character and a numeric
300    string containing the total number of tracks/elements on the original
301    recording. E.g. "4/9".
302
303   TPOS
304    The 'Part of a set' frame is a numeric string that describes which
305    part of a set the audio came from. This frame is used if the source
306    described in the "TALB" frame is divided into several mediums, e.g. a
307    double CD. The value MAY be extended with a "/" character and a
308    numeric string containing the total number of parts in the set. E.g.
309    "1/2".
310
311   TSST
312    The 'Set subtitle' frame is intended for the subtitle of the part of
313    a set this track belongs to.
314
315   TSRC
316    The 'ISRC' frame should contain the International Standard Recording
317    Code [ISRC] (12 characters).
318
319
320 4.2.2.   Involved persons frames
321
322   TPE1
323    The 'Lead artist/Lead performer/Soloist/Performing group' is
324    used for the main artist.
325
326   TPE2
327    The 'Band/Orchestra/Accompaniment' frame is used for additional
328    information about the performers in the recording.
329
330   TPE3
331    The 'Conductor' frame is used for the name of the conductor.
332
333   TPE4
334    The 'Interpreted, remixed, or otherwise modified by' frame contains
335    more information about the people behind a remix and similar
336    interpretations of another existing piece.
337
338   TOPE
339    The 'Original artist/performer' frame is intended for the performer
340    of the original recording, if for example the music in the file
341    should be a cover of a previously released song.
342
343   TEXT
344    The 'Lyricist/Text writer' frame is intended for the writer of the
345    text or lyrics in the recording.
346
347   TOLY
348    The 'Original lyricist/text writer' frame is intended for the
349    text writer of the original recording, if for example the music in
350    the file should be a cover of a previously released song.
351
352   TCOM
353    The 'Composer' frame is intended for the name of the composer.
354
355   TMCL
356    The 'Musician credits list' is intended as a mapping between
357    instruments and the musician that played it. Every odd field is an
358    instrument and every even is an artist or a comma delimited list of
359    artists.
360
361   TIPL
362    The 'Involved people list' is very similar to the musician credits
363    list, but maps between functions, like producer, and names.
364
365   TENC
366    The 'Encoded by' frame contains the name of the person or
367    organisation that encoded the audio file. This field may contain a
368    copyright message, if the audio file also is copyrighted by the
369    encoder.
370
371
372 4.2.3.   Derived and subjective properties frames
373
374   TBPM
375    The 'BPM' frame contains the number of beats per minute in the
376    main part of the audio. The BPM is an integer and represented as a
377    numerical string.
378
379   TLEN
380    The 'Length' frame contains the length of the audio file in
381    milliseconds, represented as a numeric string.
382
383   TKEY
384    The 'Initial key' frame contains the musical key in which the sound
385    starts. It is represented as a string with a maximum length of three
386    characters. The ground keys are represented with "A","B","C","D","E",
387    "F" and "G" and halfkeys represented with "b" and "#". Minor is
388    represented as "m", e.g. "Dbm" $00. Off key is represented with an
389    "o" only.
390
391   TLAN
392    The 'Language' frame should contain the languages of the text or
393    lyrics spoken or sung in the audio. The language is represented with
394    three characters according to ISO-639-2 [ISO-639-2]. If more than one
395    language is used in the text their language codes should follow
396    according to the amount of their usage, e.g. "eng" $00 "sve" $00.
397
398   TCON
399    The 'Content type', which ID3v1 was stored as a one byte numeric
400    value only, is now a string. You may use one or several of the ID3v1
401    types as numerical strings, or, since the category list would be
402    impossible to maintain with accurate and up to date categories,
403    define your own. Example: "21" $00 "Eurodisco" $00
404
405    You may also use any of the following keywords:
406    
407      RX  Remix
408      CR  Cover
409
410   TFLT
411    The 'File type' frame indicates which type of audio this tag defines.
412    The following types and refinements are defined:
413
414      MIME   MIME type follows
415      MPG    MPEG Audio
416        /1     MPEG 1/2 layer I
417        /2     MPEG 1/2 layer II
418        /3     MPEG 1/2 layer III
419        /2.5   MPEG 2.5
420        /AAC   Advanced audio compression
421      VQF    Transform-domain Weighted Interleave Vector Quantisation
422      PCM    Pulse Code Modulated audio
423
424    but other types may be used, but not for these types though. This is
425    used in a similar way to the predefined types in the "TMED" frame,
426    but without parentheses. If this frame is not present audio type is
427    assumed to be "MPG".
428
429   TMED
430    The 'Media type' frame describes from which media the sound
431    originated. This may be a text string or a reference to the
432    predefined media types found in the list below. Example:
433    "VID/PAL/VHS" $00.
434
435     DIG    Other digital media
436       /A    Analogue transfer from media
437
438     ANA    Other analogue media
439       /WAC  Wax cylinder
440       /8CA  8-track tape cassette
441
442     CD     CD
443       /A    Analogue transfer from media
444       /DD   DDD
445       /AD   ADD
446       /AA   AAD
447
448     LD     Laserdisc
449
450     TT     Turntable records
451       /33    33.33 rpm
452       /45    45 rpm
453       /71    71.29 rpm
454       /76    76.59 rpm
455       /78    78.26 rpm
456       /80    80 rpm
457
458     MD     MiniDisc
459       /A    Analogue transfer from media
460
461     DAT    DAT
462       /A    Analogue transfer from media
463       /1    standard, 48 kHz/16 bits, linear
464       /2    mode 2, 32 kHz/16 bits, linear
465       /3    mode 3, 32 kHz/12 bits, non-linear, low speed
466       /4    mode 4, 32 kHz/12 bits, 4 channels
467       /5    mode 5, 44.1 kHz/16 bits, linear
468       /6    mode 6, 44.1 kHz/16 bits, 'wide track' play
469
470     DCC    DCC
471       /A    Analogue transfer from media
472
473     DVD    DVD
474       /A    Analogue transfer from media
475
476     TV     Television
477       /PAL    PAL
478       /NTSC   NTSC
479       /SECAM  SECAM
480
481     VID    Video
482       /PAL    PAL
483       /NTSC   NTSC
484       /SECAM  SECAM
485       /VHS    VHS
486       /SVHS   S-VHS
487       /BETA   BETAMAX
488
489     RAD    Radio
490       /FM   FM
491       /AM   AM
492       /LW   LW
493       /MW   MW
494
495     TEL    Telephone
496       /I    ISDN
497
498     MC     MC (normal cassette)
499       /4    4.75 cm/s (normal speed for a two sided cassette)
500       /9    9.5 cm/s
501       /I    Type I cassette (ferric/normal)
502       /II   Type II cassette (chrome)
503       /III  Type III cassette (ferric chrome)
504       /IV   Type IV cassette (metal)
505
506     REE    Reel
507       /9    9.5 cm/s
508       /19   19 cm/s
509       /38   38 cm/s
510       /76   76 cm/s
511       /I    Type I cassette (ferric/normal)
512       /II   Type II cassette (chrome)
513       /III  Type III cassette (ferric chrome)
514       /IV   Type IV cassette (metal)
515
516   TMOO
517    The 'Mood' frame is intended to reflect the mood of the audio with a
518    few keywords, e.g. "Romantic" or "Sad".
519
520
521 4.2.4.   Rights and license frames
522
523   TCOP
524    The 'Copyright message' frame, in which the string must begin with a
525    year and a space character (making five characters), is intended for
526    the copyright holder of the original sound, not the audio file
527    itself. The absence of this frame means only that the copyright
528    information is unavailable or has been removed, and must not be
529    interpreted to mean that the audio is public domain. Every time this
530    field is displayed the field must be preceded with "Copyright " (C) "
531    ", where (C) is one character showing a C in a circle.
532
533   TPRO
534    The 'Produced notice' frame, in which the string must begin with a
535    year and a space character (making five characters), is intended for
536    the production copyright holder of the original sound, not the audio
537    file itself. The absence of this frame means only that the production
538    copyright information is unavailable or has been removed, and must
539    not be interpreted to mean that the audio is public domain. Every
540    time this field is displayed the field must be preceded with
541    "Produced " (P) " ", where (P) is one character showing a P in a
542    circle.
543
544   TPUB
545    The 'Publisher' frame simply contains the name of the label or
546    publisher.
547
548   TOWN
549    The 'File owner/licensee' frame contains the name of the owner or
550    licensee of the file and it's contents.
551
552   TRSN
553    The 'Internet radio station name' frame contains the name of the
554    internet radio station from which the audio is streamed.
555
556   TRSO
557    The 'Internet radio station owner' frame contains the name of the
558    owner of the internet radio station from which the audio is
559    streamed.
560
561 4.2.5.   Other text frames
562
563   TOFN
564    The 'Original filename' frame contains the preferred filename for the
565    file, since some media doesn't allow the desired length of the
566    filename. The filename is case sensitive and includes its suffix.
567
568   TDLY
569    The 'Playlist delay' defines the numbers of milliseconds of silence
570    that should be inserted before this audio. The value zero indicates
571    that this is a part of a multifile audio track that should be played
572    continuously.
573
574   TDEN
575    The 'Encoding time' frame contains a timestamp describing when the
576    audio was encoded. Timestamp format is described in the ID3v2
577    structure document [ID3v2-strct].
578
579   TDOR
580    The 'Original release time' frame contains a timestamp describing
581    when the original recording of the audio was released. Timestamp
582    format is described in the ID3v2 structure document [ID3v2-strct].
583
584   TDRC
585    The 'Recording time' frame contains a timestamp describing when the
586    audio was recorded. Timestamp format is described in the ID3v2
587    structure document [ID3v2-strct].
588
589   TDRL
590    The 'Release time' frame contains a timestamp describing when the
591    audio was first released. Timestamp format is described in the ID3v2
592    structure document [ID3v2-strct].
593
594   TDTG
595    The 'Tagging time' frame contains a timestamp describing then the
596    audio was tagged. Timestamp format is described in the ID3v2
597    structure document [ID3v2-strct].
598
599   TSSE
600    The 'Software/Hardware and settings used for encoding' frame
601    includes the used audio encoder and its settings when the file was
602    encoded. Hardware refers to hardware encoders, not the computer on
603    which a program was run.
604
605   TSOA
606    The 'Album sort order' frame defines a string which should be used
607    instead of the album name (TALB) for sorting purposes. E.g. an album
608    named "A Soundtrack" might preferably be sorted as "Soundtrack".
609
610   TSOP
611    The 'Performer sort order' frame defines a string which should be
612    used instead of the performer (TPE2) for sorting purposes.
613
614   TSOT
615    The 'Title sort order' frame defines a string which should be used
616    instead of the title (TIT2) for sorting purposes.
617
618
619 4.2.6.   User defined text information frame
620
621    This frame is intended for one-string text information concerning the
622    audio file in a similar way to the other "T"-frames. The frame body
623    consists of a description of the string, represented as a terminated
624    string, followed by the actual string. There may be more than one
625    "TXXX" frame in each tag, but only one with the same description.
626
627      <Header for 'User defined text information frame', ID: "TXXX">
628      Text encoding     $xx
629      Description       <text string according to encoding> $00 (00)
630      Value             <text string according to encoding>
631
632
633 4.3.   URL link frames
634
635    With these frames dynamic data such as webpages with touring
636    information, price information or plain ordinary news can be added to
637    the tag. There may only be one URL [URL] link frame of its kind in an
638    tag, except when stated otherwise in the frame description. If the
639    text string is followed by a string termination, all the following
640    information should be ignored and not be displayed. All URL link
641    frame identifiers begins with "W". Only URL link frame identifiers
642    begins with "W", except for "WXXX". All URL link frames have the
643    following format:
644
645      <Header for 'URL link frame', ID: "W000" - "WZZZ", excluding "WXXX"
646      described in 4.3.2.>
647      URL              <text string>
648
649
650 4.3.1.   URL link frames - details
651
652   WCOM
653    The 'Commercial information' frame is a URL pointing at a webpage
654    with information such as where the album can be bought. There may be
655    more than one "WCOM" frame in a tag, but not with the same content.
656
657   WCOP
658    The 'Copyright/Legal information' frame is a URL pointing at a
659    webpage where the terms of use and ownership of the file is
660    described.
661
662   WOAF
663    The 'Official audio file webpage' frame is a URL pointing at a file
664    specific webpage.
665
666   WOAR
667    The 'Official artist/performer webpage' frame is a URL pointing at
668    the artists official webpage. There may be more than one "WOAR" frame
669    in a tag if the audio contains more than one performer, but not with
670    the same content.
671
672   WOAS
673    The 'Official audio source webpage' frame is a URL pointing at the
674    official webpage for the source of the audio file, e.g. a movie.
675
676   WORS
677    The 'Official Internet radio station homepage' contains a URL
678    pointing at the homepage of the internet radio station.
679
680   WPAY
681    The 'Payment' frame is a URL pointing at a webpage that will handle
682    the process of paying for this file.
683
684   WPUB
685    The 'Publishers official webpage' frame is a URL pointing at the
686    official webpage for the publisher.
687
688
689 4.3.2.   User defined URL link frame
690
691    This frame is intended for URL [URL] links concerning the audio file
692    in a similar way to the other "W"-frames. The frame body consists
693    of a description of the string, represented as a terminated string,
694    followed by the actual URL. The URL is always encoded with ISO-8859-1
695    [ISO-8859-1]. There may be more than one "WXXX" frame in each tag,
696    but only one with the same description.
697
698      <Header for 'User defined URL link frame', ID: "WXXX">
699      Text encoding     $xx
700      Description       <text string according to encoding> $00 (00)
701      URL               <text string>
702
703
704 4.4.   Music CD identifier
705
706    This frame is intended for music that comes from a CD, so that the CD
707    can be identified in databases such as the CDDB [CDDB]. The frame
708    consists of a binary dump of the Table Of Contents, TOC, from the CD,
709    which is a header of 4 bytes and then 8 bytes/track on the CD plus 8
710    bytes for the 'lead out', making a maximum of 804 bytes. The offset
711    to the beginning of every track on the CD should be described with a
712    four bytes absolute CD-frame address per track, and not with absolute
713    time. When this frame is used the presence of a valid "TRCK" frame is
714    REQUIRED, even if the CD's only got one track. It is recommended that
715    this frame is always added to tags originating from CDs. There may
716    only be one "MCDI" frame in each tag.
717
718      <Header for 'Music CD identifier', ID: "MCDI">
719      CD TOC                <binary data>
720
721
722 4.5.   Event timing codes
723
724    This frame allows synchronisation with key events in the audio. The
725    header is:
726
727      <Header for 'Event timing codes', ID: "ETCO">
728      Time stamp format    $xx
729
730    Where time stamp format is:
731
732      $01  Absolute time, 32 bit sized, using MPEG [MPEG] frames as unit
733      $02  Absolute time, 32 bit sized, using milliseconds as unit
734
735    Absolute time means that every stamp contains the time from the
736    beginning of the file.
737
738    Followed by a list of key events in the following format:
739
740      Type of event   $xx
741      Time stamp      $xx (xx ...)
742
743    The 'Time stamp' is set to zero if directly at the beginning of the
744    sound or after the previous event. All events MUST be sorted in
745    chronological order. The type of event is as follows:
746
747      $00  padding (has no meaning)
748      $01  end of initial silence
749      $02  intro start
750      $03  main part start
751      $04  outro start
752      $05  outro end
753      $06  verse start
754      $07  refrain start
755      $08  interlude start
756      $09  theme start
757      $0A  variation start
758      $0B  key change
759      $0C  time change
760      $0D  momentary unwanted noise (Snap, Crackle & Pop)
761      $0E  sustained noise
762      $0F  sustained noise end
763      $10  intro end
764      $11  main part end
765      $12  verse end
766      $13  refrain end
767      $14  theme end
768      $15  profanity
769      $16  profanity end
770
771      $17-$DF  reserved for future use
772
773      $E0-$EF  not predefined synch 0-F
774
775      $F0-$FC  reserved for future use
776
777      $FD  audio end (start of silence)
778      $FE  audio file ends
779      $FF  one more byte of events follows (all the following bytes with
780           the value $FF have the same function)
781
782    Terminating the start events such as "intro start" is OPTIONAL. The
783    'Not predefined synch's ($E0-EF) are for user events. You might want
784    to synchronise your music to something, like setting off an explosion
785    on-stage, activating a screensaver etc.
786
787    There may only be one "ETCO" frame in each tag.
788
789
790 4.6.   MPEG location lookup table
791
792    To increase performance and accuracy of jumps within a MPEG [MPEG]
793    audio file, frames with time codes in different locations in the file
794    might be useful. This ID3v2 frame includes references that the
795    software can use to calculate positions in the file. After the frame
796    header follows a descriptor of how much the 'frame counter' should be
797    increased for every reference. If this value is two then the first
798    reference points out the second frame, the 2nd reference the 4th
799    frame, the 3rd reference the 6th frame etc. In a similar way the
800    'bytes between reference' and 'milliseconds between reference' points
801    out bytes and milliseconds respectively.
802
803    Each reference consists of two parts; a certain number of bits, as
804    defined in 'bits for bytes deviation', that describes the difference
805    between what is said in 'bytes between reference' and the reality and
806    a certain number of bits, as defined in 'bits for milliseconds
807    deviation', that describes the difference between what is said in
808    'milliseconds between reference' and the reality. The number of bits
809    in every reference, i.e. 'bits for bytes deviation'+'bits for
810    milliseconds deviation', must be a multiple of four. There may only
811    be one "MLLT" frame in each tag.
812
813      <Header for 'Location lookup table', ID: "MLLT">
814      MPEG frames between reference  $xx xx
815      Bytes between reference        $xx xx xx
816      Milliseconds between reference $xx xx xx
817      Bits for bytes deviation       $xx
818      Bits for milliseconds dev.     $xx
819
820    Then for every reference the following data is included;
821
822      Deviation in bytes         %xxx....
823      Deviation in milliseconds  %xxx....
824
825
826 4.7.   Synchronised tempo codes
827
828    For a more accurate description of the tempo of a musical piece, this
829    frame might be used. After the header follows one byte describing
830    which time stamp format should be used. Then follows one or more
831    tempo codes. Each tempo code consists of one tempo part and one time
832    part. The tempo is in BPM described with one or two bytes. If the
833    first byte has the value $FF, one more byte follows, which is added
834    to the first giving a range from 2 - 510 BPM, since $00 and $01 is
835    reserved. $00 is used to describe a beat-free time period, which is
836    not the same as a music-free time period. $01 is used to indicate one
837    single beat-stroke followed by a beat-free period.
838
839    The tempo descriptor is followed by a time stamp. Every time the
840    tempo in the music changes, a tempo descriptor may indicate this for
841    the player. All tempo descriptors MUST be sorted in chronological
842    order. The first beat-stroke in a time-period is at the same time as
843    the beat description occurs. There may only be one "SYTC" frame in
844    each tag.
845
846      <Header for 'Synchronised tempo codes', ID: "SYTC">
847      Time stamp format   $xx
848      Tempo data          <binary data>
849
850    Where time stamp format is:
851
852      $01  Absolute time, 32 bit sized, using MPEG [MPEG] frames as unit
853      $02  Absolute time, 32 bit sized, using milliseconds as unit
854
855    Absolute time means that every stamp contains the time from the
856    beginning of the file.
857
858
859 4.8.   Unsynchronised lyrics/text transcription
860
861    This frame contains the lyrics of the song or a text transcription of
862    other vocal activities. The head includes an encoding descriptor and
863    a content descriptor. The body consists of the actual text. The
864    'Content descriptor' is a terminated string. If no descriptor is
865    entered, 'Content descriptor' is $00 (00) only. Newline characters
866    are allowed in the text. There may be more than one 'Unsynchronised
867    lyrics/text transcription' frame in each tag, but only one with the
868    same language and content descriptor.
869
870      <Header for 'Unsynchronised lyrics/text transcription', ID: "USLT">
871      Text encoding        $xx
872      Language             $xx xx xx
873      Content descriptor   <text string according to encoding> $00 (00)
874      Lyrics/text          <full text string according to encoding>
875
876
877 4.9.   Synchronised lyrics/text
878
879    This is another way of incorporating the words, said or sung lyrics,
880    in the audio file as text, this time, however, in sync with the
881    audio. It might also be used to describing events e.g. occurring on a
882    stage or on the screen in sync with the audio. The header includes a
883    content descriptor, represented with as terminated text string. If no
884    descriptor is entered, 'Content descriptor' is $00 (00) only.
885
886      <Header for 'Synchronised lyrics/text', ID: "SYLT">
887      Text encoding        $xx
888      Language             $xx xx xx
889      Time stamp format    $xx
890      Content type         $xx
891      Content descriptor   <text string according to encoding> $00 (00)
892
893    Content type:   $00 is other
894                    $01 is lyrics
895                    $02 is text transcription
896                    $03 is movement/part name (e.g. "Adagio")
897                    $04 is events (e.g. "Don Quijote enters the stage")
898                    $05 is chord (e.g. "Bb F Fsus")
899                    $06 is trivia/'pop up' information
900                    $07 is URLs to webpages
901                    $08 is URLs to images
902
903    Time stamp format:
904
905      $01  Absolute time, 32 bit sized, using MPEG [MPEG] frames as unit
906      $02  Absolute time, 32 bit sized, using milliseconds as unit
907
908    Absolute time means that every stamp contains the time from the
909    beginning of the file.
910
911    The text that follows the frame header differs from that of the
912    unsynchronised lyrics/text transcription in one major way. Each
913    syllable (or whatever size of text is considered to be convenient by
914    the encoder) is a null terminated string followed by a time stamp
915    denoting where in the sound file it belongs. Each sync thus has the
916    following structure:
917
918      Terminated text to be synced (typically a syllable)
919      Sync identifier (terminator to above string)   $00 (00)
920      Time stamp                                     $xx (xx ...)
921
922    The 'time stamp' is set to zero or the whole sync is omitted if
923    located directly at the beginning of the sound. All time stamps
924    should be sorted in chronological order. The sync can be considered
925    as a validator of the subsequent string.
926
927    Newline characters are allowed in all "SYLT" frames and MUST be used
928    after every entry (name, event etc.) in a frame with the content type
929    $03 - $04.
930
931    A few considerations regarding whitespace characters: Whitespace
932    separating words should mark the beginning of a new word, thus
933    occurring in front of the first syllable of a new word. This is also
934    valid for new line characters. A syllable followed by a comma should
935    not be broken apart with a sync (both the syllable and the comma
936    should be before the sync).
937
938    An example: The "USLT" passage
939
940      "Strangers in the night" $0A "Exchanging glances"
941
942    would be "SYLT" encoded as:
943
944      "Strang" $00 xx xx "ers" $00 xx xx " in" $00 xx xx " the" $00 xx xx
945      " night" $00 xx xx 0A "Ex" $00 xx xx "chang" $00 xx xx "ing" $00 xx
946      xx "glan" $00 xx xx "ces" $00 xx xx
947
948    There may be more than one "SYLT" frame in each tag, but only one
949    with the same language and content descriptor.
950
951
952 4.10.   Comments
953
954    This frame is intended for any kind of full text information that
955    does not fit in any other frame. It consists of a frame header
956    followed by encoding, language and content descriptors and is ended
957    with the actual comment as a text string. Newline characters are
958    allowed in the comment text string. There may be more than one
959    comment frame in each tag, but only one with the same language and
960    content descriptor.
961
962      <Header for 'Comment', ID: "COMM">
963      Text encoding          $xx
964      Language               $xx xx xx
965      Short content descrip. <text string according to encoding> $00 (00)
966      The actual text        <full text string according to encoding>
967
968
969 4.11.   Relative volume adjustment (2)
970
971    This is a more subjective frame than the previous ones. It allows the
972    user to say how much he wants to increase/decrease the volume on each
973    channel when the file is played. The purpose is to be able to align
974    all files to a reference volume, so that you don't have to change the
975    volume constantly. This frame may also be used to balance adjust the
976    audio. The volume adjustment is encoded as a fixed point decibel
977    value, 16 bit signed integer representing (adjustment*512), giving
978    +/- 64 dB with a precision of 0.001953125 dB. E.g. +2 dB is stored as
979    $04 00 and -2 dB is $FC 00. There may be more than one "RVA2" frame
980    in each tag, but only one with the same identification string.
981
982      <Header for 'Relative volume adjustment (2)', ID: "RVA2">
983      Identification          <text string> $00
984
985    The 'identification' string is used to identify the situation and/or
986    device where this adjustment should apply. The following is then
987    repeated for every channel
988
989      Type of channel         $xx
990      Volume adjustment       $xx xx
991      Bits representing peak  $xx
992      Peak volume             $xx (xx ...)
993
994
995    Type of channel:  $00  Other
996                      $01  Master volume
997                      $02  Front right
998                      $03  Front left
999                      $04  Back right
1000                      $05  Back left
1001                      $06  Front centre
1002                      $07  Back centre
1003                      $08  Subwoofer
1004
1005    Bits representing peak can be any number between 0 and 255. 0 means
1006    that there is no peak volume field. The peak volume field is always
1007    padded to whole bytes, setting the most significant bits to zero.
1008
1009
1010 4.12.   Equalisation (2)
1011
1012    This is another subjective, alignment frame. It allows the user to
1013    predefine an equalisation curve within the audio file. There may be
1014    more than one "EQU2" frame in each tag, but only one with the same
1015    identification string.
1016
1017      <Header of 'Equalisation (2)', ID: "EQU2">
1018      Interpolation method  $xx
1019      Identification        <text string> $00
1020
1021    The 'interpolation method' describes which method is preferred when
1022    an interpolation between the adjustment point that follows. The
1023    following methods are currently defined:
1024
1025      $00  Band
1026           No interpolation is made. A jump from one adjustment level to
1027           another occurs in the middle between two adjustment points.
1028      $01  Linear
1029           Interpolation between adjustment points is linear.
1030
1031    The 'identification' string is used to identify the situation and/or
1032    device where this adjustment should apply. The following is then
1033    repeated for every adjustment point
1034
1035      Frequency          $xx xx
1036      Volume adjustment  $xx xx
1037
1038    The frequency is stored in units of 1/2 Hz, giving it a range from 0
1039    to 32767 Hz.
1040
1041    The volume adjustment is encoded as a fixed point decibel value, 16
1042    bit signed integer representing (adjustment*512), giving +/- 64 dB
1043    with a precision of 0.001953125 dB. E.g. +2 dB is stored as $04 00
1044    and -2 dB is $FC 00.
1045
1046    Adjustment points should be ordered by frequency and one frequency
1047    should only be described once in the frame.
1048
1049
1050 4.13.   Reverb
1051
1052    Yet another subjective frame, with which you can adjust echoes of
1053    different kinds. Reverb left/right is the delay between every bounce
1054    in ms. Reverb bounces left/right is the number of bounces that should
1055    be made. $FF equals an infinite number of bounces. Feedback is the
1056    amount of volume that should be returned to the next echo bounce. $00
1057    is 0%, $FF is 100%. If this value were $7F, there would be 50% volume
1058    reduction on the first bounce, 50% of that on the second and so on.
1059    Left to left means the sound from the left bounce to be played in the
1060    left speaker, while left to right means sound from the left bounce to
1061    be played in the right speaker.
1062
1063    'Premix left to right' is the amount of left sound to be mixed in the
1064    right before any reverb is applied, where $00 id 0% and $FF is 100%.
1065    'Premix right to left' does the same thing, but right to left.
1066    Setting both premix to $FF would result in a mono output (if the
1067    reverb is applied symmetric). There may only be one "RVRB" frame in
1068    each tag.
1069
1070      <Header for 'Reverb', ID: "RVRB">
1071      Reverb left (ms)                 $xx xx
1072      Reverb right (ms)                $xx xx
1073      Reverb bounces, left             $xx
1074      Reverb bounces, right            $xx
1075      Reverb feedback, left to left    $xx
1076      Reverb feedback, left to right   $xx
1077      Reverb feedback, right to right  $xx
1078      Reverb feedback, right to left   $xx
1079      Premix left to right             $xx
1080      Premix right to left             $xx
1081
1082
1083 4.14.   Attached picture
1084
1085    This frame contains a picture directly related to the audio file.
1086    Image format is the MIME type and subtype [MIME] for the image. In
1087    the event that the MIME media type name is omitted, "image/" will be
1088    implied. The "image/png" [PNG] or "image/jpeg" [JFIF] picture format
1089    should be used when interoperability is wanted. Description is a
1090    short description of the picture, represented as a terminated
1091    text string. There may be several pictures attached to one file, each
1092    in their individual "APIC" frame, but only one with the same content
1093    descriptor. There may only be one picture with the picture type
1094    declared as picture type $01 and $02 respectively. There is the
1095    possibility to put only a link to the image file by using the 'MIME
1096    type' "-->" and having a complete URL [URL] instead of picture data.
1097    The use of linked files should however be used sparingly since there
1098    is the risk of separation of files.
1099
1100      <Header for 'Attached picture', ID: "APIC">
1101      Text encoding      $xx
1102      MIME type          <text string> $00
1103      Picture type       $xx
1104      Description        <text string according to encoding> $00 (00)
1105      Picture data       <binary data>
1106
1107
1108    Picture type:  $00  Other
1109                   $01  32x32 pixels 'file icon' (PNG only)
1110                   $02  Other file icon
1111                   $03  Cover (front)
1112                   $04  Cover (back)
1113                   $05  Leaflet page
1114                   $06  Media (e.g. label side of CD)
1115                   $07  Lead artist/lead performer/soloist
1116                   $08  Artist/performer
1117                   $09  Conductor
1118                   $0A  Band/Orchestra
1119                   $0B  Composer
1120                   $0C  Lyricist/text writer
1121                   $0D  Recording Location
1122                   $0E  During recording
1123                   $0F  During performance
1124                   $10  Movie/video screen capture
1125                   $11  A bright coloured fish
1126                   $12  Illustration
1127                   $13  Band/artist logotype
1128                   $14  Publisher/Studio logotype
1129
1130
1131 4.15.   General encapsulated object
1132
1133    In this frame any type of file can be encapsulated. After the header,
1134    'Frame size' and 'Encoding' follows 'MIME type' [MIME] represented as
1135    as a terminated string encoded with ISO 8859-1 [ISO-8859-1]. The
1136    filename is case sensitive and is encoded as 'Encoding'. Then follows
1137    a content description as terminated string, encoded as 'Encoding'.
1138    The last thing in the frame is the actual object. The first two
1139    strings may be omitted, leaving only their terminations. MIME type is
1140    always an ISO-8859-1 text string. There may be more than one "GEOB"
1141    frame in each tag, but only one with the same content descriptor.
1142
1143      <Header for 'General encapsulated object', ID: "GEOB">
1144      Text encoding          $xx
1145      MIME type              <text string> $00
1146      Filename               <text string according to encoding> $00 (00)
1147      Content description    <text string according to encoding> $00 (00)
1148      Encapsulated object    <binary data>
1149
1150
1151 4.16.   Play counter
1152
1153    This is simply a counter of the number of times a file has been
1154    played. The value is increased by one every time the file begins to
1155    play. There may only be one "PCNT" frame in each tag. When the
1156    counter reaches all one's, one byte is inserted in front of the
1157    counter thus making the counter eight bits bigger.  The counter must
1158    be at least 32-bits long to begin with.
1159
1160      <Header for 'Play counter', ID: "PCNT">
1161      Counter        $xx xx xx xx (xx ...)
1162
1163
1164 4.17.   Popularimeter
1165
1166    The purpose of this frame is to specify how good an audio file is.
1167    Many interesting applications could be found to this frame such as a
1168    playlist that features better audio files more often than others or
1169    it could be used to profile a person's taste and find other 'good'
1170    files by comparing people's profiles. The frame contains the email
1171    address to the user, one rating byte and a four byte play counter,
1172    intended to be increased with one for every time the file is played.
1173    The email is a terminated string. The rating is 1-255 where 1 is
1174    worst and 255 is best. 0 is unknown. If no personal counter is wanted
1175    it may be omitted. When the counter reaches all one's, one byte is
1176    inserted in front of the counter thus making the counter eight bits
1177    bigger in the same away as the play counter ("PCNT"). There may be
1178    more than one "POPM" frame in each tag, but only one with the same
1179    email address.
1180
1181      <Header for 'Popularimeter', ID: "POPM">
1182      Email to user   <text string> $00
1183      Rating          $xx
1184      Counter         $xx xx xx xx (xx ...)
1185
1186
1187 4.18.   Recommended buffer size
1188
1189    Sometimes the server from which an audio file is streamed is aware of
1190    transmission or coding problems resulting in interruptions in the
1191    audio stream. In these cases, the size of the buffer can be
1192    recommended by the server using this frame. If the 'embedded info
1193    flag' is true (1) then this indicates that an ID3 tag with the
1194    maximum size described in 'Buffer size' may occur in the audio
1195    stream. In such case the tag should reside between two MPEG [MPEG]
1196    frames, if the audio is MPEG encoded. If the position of the next tag
1197    is known, 'offset to next tag' may be used. The offset is calculated
1198    from the end of tag in which this frame resides to the first byte of
1199    the header in the next. This field may be omitted. Embedded tags are
1200    generally not recommended since this could render unpredictable
1201    behaviour from present software/hardware.
1202
1203    For applications like streaming audio it might be an idea to embed
1204    tags into the audio stream though. If the clients connects to
1205    individual connections like HTTP and there is a possibility to begin
1206    every transmission with a tag, then this tag should include a
1207    'recommended buffer size' frame. If the client is connected to a
1208    arbitrary point in the stream, such as radio or multicast, then the
1209    'recommended buffer size' frame SHOULD be included in every tag.
1210
1211    The 'Buffer size' should be kept to a minimum. There may only be one
1212    "RBUF" frame in each tag.
1213
1214      <Header for 'Recommended buffer size', ID: "RBUF">
1215      Buffer size               $xx xx xx
1216      Embedded info flag        %0000000x
1217      Offset to next tag        $xx xx xx xx
1218
1219
1220 4.19.   Audio encryption
1221
1222    This frame indicates if the actual audio stream is encrypted, and by
1223    whom. Since standardisation of such encryption scheme is beyond this
1224    document, all "AENC" frames begin with a terminated string with a
1225    URL containing an email address, or a link to a location where an
1226    email address can be found, that belongs to the organisation
1227    responsible for this specific encrypted audio file. Questions
1228    regarding the encrypted audio should be sent to the email address
1229    specified. If a $00 is found directly after the 'Frame size' and the
1230    audio file indeed is encrypted, the whole file may be considered
1231    useless.
1232
1233    After the 'Owner identifier', a pointer to an unencrypted part of the
1234    audio can be specified. The 'Preview start' and 'Preview length' is
1235    described in frames. If no part is unencrypted, these fields should
1236    be left zeroed. After the 'preview length' field follows optionally a
1237    data block required for decryption of the audio. There may be more
1238    than one "AENC" frames in a tag, but only one with the same 'Owner
1239    identifier'.
1240
1241      <Header for 'Audio encryption', ID: "AENC">
1242      Owner identifier   <text string> $00
1243      Preview start      $xx xx
1244      Preview length     $xx xx
1245      Encryption info    <binary data>
1246
1247
1248 4.20.   Linked information
1249
1250    To keep information duplication as low as possible this frame may be
1251    used to link information from another ID3v2 tag that might reside in
1252    another audio file or alone in a binary file. It is RECOMMENDED that
1253    this method is only used when the files are stored on a CD-ROM or
1254    other circumstances when the risk of file separation is low. The
1255    frame contains a frame identifier, which is the frame that should be
1256    linked into this tag, a URL [URL] field, where a reference to the
1257    file where the frame is given, and additional ID data, if needed.
1258    Data should be retrieved from the first tag found in the file to
1259    which this link points. There may be more than one "LINK" frame in a
1260    tag, but only one with the same contents. A linked frame is to be
1261    considered as part of the tag and has the same restrictions as if it
1262    was a physical part of the tag (i.e. only one "RVRB" frame allowed,
1263    whether it's linked or not).
1264
1265      <Header for 'Linked information', ID: "LINK">
1266      Frame identifier        $xx xx xx xx
1267      URL                     <text string> $00
1268      ID and additional data  <text string(s)>
1269
1270    Frames that may be linked and need no additional data are "ASPI",
1271    "ETCO", "EQU2", "MCID", "MLLT", "OWNE", "RVA2", "RVRB", "SYTC", the
1272    text information frames and the URL link frames.
1273
1274    The "AENC", "APIC", "GEOB" and "TXXX" frames may be linked with
1275    the content descriptor as additional ID data.
1276
1277    The "USER" frame may be linked with the language field as additional
1278    ID data.
1279    
1280    The "PRIV" frame may be linked with the owner identifier as
1281    additional ID data.
1282
1283    The "COMM", "SYLT" and "USLT" frames may be linked with three bytes
1284    of language descriptor directly followed by a content descriptor as
1285    additional ID data.
1286
1287
1288 4.21.   Position synchronisation frame
1289
1290    This frame delivers information to the listener of how far into the
1291    audio stream he picked up; in effect, it states the time offset from
1292    the first frame in the stream. The frame layout is:
1293
1294      <Head for 'Position synchronisation', ID: "POSS">
1295      Time stamp format         $xx
1296      Position                  $xx (xx ...)
1297
1298    Where time stamp format is:
1299
1300      $01  Absolute time, 32 bit sized, using MPEG frames as unit
1301      $02  Absolute time, 32 bit sized, using milliseconds as unit
1302
1303    and position is where in the audio the listener starts to receive,
1304    i.e. the beginning of the next frame. If this frame is used in the
1305    beginning of a file the value is always 0. There may only be one
1306    "POSS" frame in each tag.
1307
1308
1309 4.22.   Terms of use frame
1310
1311    This frame contains a brief description of the terms of use and
1312    ownership of the file. More detailed information concerning the legal
1313    terms might be available through the "WCOP" frame. Newlines are
1314    allowed in the text. There may be more than one 'Terms of use' frame
1315    in a tag, but only one with the same 'Language'.
1316
1317      <Header for 'Terms of use frame', ID: "USER">
1318      Text encoding        $xx
1319      Language             $xx xx xx
1320      The actual text      <text string according to encoding>
1321
1322
1323 4.23.   Ownership frame
1324
1325    The ownership frame might be used as a reminder of a made transaction
1326    or, if signed, as proof. Note that the "USER" and "TOWN" frames are
1327    good to use in conjunction with this one. The frame begins, after the
1328    frame ID, size and encoding fields, with a 'price paid' field. The
1329    first three characters of this field contains the currency used for
1330    the transaction, encoded according to ISO 4217 [ISO-4217] alphabetic
1331    currency code. Concatenated to this is the actual price paid, as a
1332    numerical string using "." as the decimal separator. Next is an 8
1333    character date string (YYYYMMDD) followed by a string with the name
1334    of the seller as the last field in the frame. There may only be one
1335    "OWNE" frame in a tag.
1336
1337      <Header for 'Ownership frame', ID: "OWNE">
1338      Text encoding     $xx
1339      Price paid        <text string> $00
1340      Date of purch.    <text string>
1341      Seller            <text string according to encoding>
1342
1343
1344 4.24.   Commercial frame
1345
1346    This frame enables several competing offers in the same tag by
1347    bundling all needed information. That makes this frame rather complex
1348    but it's an easier solution than if one tries to achieve the same
1349    result with several frames. The frame begins, after the frame ID,
1350    size and encoding fields, with a price string field. A price is
1351    constructed by one three character currency code, encoded according
1352    to ISO 4217 [ISO-4217] alphabetic currency code, followed by a
1353    numerical value where "." is used as decimal separator. In the price
1354    string several prices may be concatenated, separated by a "/"
1355    character, but there may only be one currency of each type.
1356
1357    The price string is followed by an 8 character date string in the
1358    format YYYYMMDD, describing for how long the price is valid. After
1359    that is a contact URL, with which the user can contact the seller,
1360    followed by a one byte 'received as' field. It describes how the
1361    audio is delivered when bought according to the following list:
1362
1363         $00  Other
1364         $01  Standard CD album with other songs
1365         $02  Compressed audio on CD
1366         $03  File over the Internet
1367         $04  Stream over the Internet
1368         $05  As note sheets
1369         $06  As note sheets in a book with other sheets
1370         $07  Music on other media
1371         $08  Non-musical merchandise
1372
1373    Next follows a terminated string with the name of the seller followed
1374    by a terminated string with a short description of the product. The
1375    last thing is the ability to include a company logotype. The first of
1376    them is the 'Picture MIME type' field containing information about
1377    which picture format is used. In the event that the MIME media type
1378    name is omitted, "image/" will be implied. Currently only "image/png"
1379    and "image/jpeg" are allowed. This format string is followed by the
1380    binary picture data. This two last fields may be omitted if no
1381    picture is attached. There may be more than one 'commercial frame' in
1382    a tag, but no two may be identical.
1383
1384      <Header for 'Commercial frame', ID: "COMR">
1385      Text encoding      $xx
1386      Price string       <text string> $00
1387      Valid until        <text string>
1388      Contact URL        <text string> $00
1389      Received as        $xx
1390      Name of seller     <text string according to encoding> $00 (00)
1391      Description        <text string according to encoding> $00 (00)
1392      Picture MIME type  <string> $00
1393      Seller logo        <binary data>
1394
1395
1396 4.25.   Encryption method registration
1397
1398    To identify with which method a frame has been encrypted the
1399    encryption method must be registered in the tag with this frame. The
1400    'Owner identifier' is a null-terminated string with a URL [URL]
1401    containing an email address, or a link to a location where an email
1402    address can be found, that belongs to the organisation responsible
1403    for this specific encryption method. Questions regarding the
1404    encryption method should be sent to the indicated email address. The
1405    'Method symbol' contains a value that is associated with this method
1406    throughout the whole tag, in the range $80-F0. All other values are
1407    reserved. The 'Method symbol' may optionally be followed by
1408    encryption specific data. There may be several "ENCR" frames in a tag
1409    but only one containing the same symbol and only one containing the
1410    same owner identifier. The method must be used somewhere in the tag.
1411    See the description of the frame encryption flag in the ID3v2
1412    structure document [ID3v2-strct] for more information.
1413
1414      <Header for 'Encryption method registration', ID: "ENCR">
1415      Owner identifier    <text string> $00
1416      Method symbol       $xx
1417      Encryption data     <binary data>
1418
1419
1420 4.26.   Group identification registration
1421
1422    This frame enables grouping of otherwise unrelated frames. This can
1423    be used when some frames are to be signed. To identify which frames
1424    belongs to a set of frames a group identifier must be registered in
1425    the tag with this frame. The 'Owner identifier' is a null-terminated
1426    string with a URL [URL] containing an email address, or a link to a
1427    location where an email address can be found, that belongs to the
1428    organisation responsible for this grouping. Questions regarding the
1429    grouping should be sent to the indicated email address. The 'Group
1430    symbol' contains a value that associates the frame with this group
1431    throughout the whole tag, in the range $80-F0. All other values are
1432    reserved. The 'Group symbol' may optionally be followed by some group
1433    specific data, e.g. a digital signature. There may be several "GRID"
1434    frames in a tag but only one containing the same symbol and only one
1435    containing the same owner identifier. The group symbol must be used
1436    somewhere in the tag. See the description of the frame grouping flag
1437    in the ID3v2 structure document [ID3v2-strct] for more information.
1438
1439      <Header for 'Group ID registration', ID: "GRID">
1440      Owner identifier      <text string> $00
1441      Group symbol          $xx
1442      Group dependent data  <binary data>
1443
1444
1445 4.27.   Private frame
1446
1447    This frame is used to contain information from a software producer
1448    that its program uses and does not fit into the other frames. The
1449    frame consists of an 'Owner identifier' string and the binary data.
1450    The 'Owner identifier' is a null-terminated string with a URL [URL]
1451    containing an email address, or a link to a location where an email
1452    address can be found, that belongs to the organisation responsible
1453    for the frame. Questions regarding the frame should be sent to the
1454    indicated email address. The tag may contain more than one "PRIV"
1455    frame but only with different contents.
1456
1457      <Header for 'Private frame', ID: "PRIV">
1458      Owner identifier      <text string> $00
1459      The private data      <binary data>
1460
1461
1462 4.28.   Signature frame
1463
1464    This frame enables a group of frames, grouped with the 'Group
1465    identification registration', to be signed. Although signatures can
1466    reside inside the registration frame, it might be desired to store
1467    the signature elsewhere, e.g. in watermarks. There may be more than
1468    one 'signature frame' in a tag, but no two may be identical.
1469
1470      <Header for 'Signature frame', ID: "SIGN">
1471      Group symbol      $xx
1472      Signature         <binary data>
1473
1474
1475 4.29.   Seek frame
1476
1477    This frame indicates where other tags in a file/stream can be found.
1478    The 'minimum offset to next tag' is calculated from the end of this
1479    tag to the beginning of the next. There may only be one 'seek frame'
1480    in a tag.
1481
1482    <Header for 'Seek frame', ID: "SEEK">
1483    Minimum offset to next tag       $xx xx xx xx
1484
1485
1486 4.30.   Audio seek point index
1487
1488    Audio files with variable bit rates are intrinsically difficult to
1489    deal with in the case of seeking within the file. The ASPI frame
1490    makes seeking easier by providing a list a seek points within the
1491    audio file. The seek points are a fractional offset within the audio
1492    data, providing a starting point from which to find an appropriate
1493    point to start decoding. The presence of an ASPI frame requires the
1494    existence of a TLEN frame, indicating the duration of the file in
1495    milliseconds. There may only be one 'audio seek point index' frame in
1496    a tag.
1497
1498      <Header for 'Seek Point Index', ID: "ASPI">
1499      Indexed data start (S)         $xx xx xx xx
1500      Indexed data length (L)        $xx xx xx xx
1501      Number of index points (N)     $xx xx
1502      Bits per index point (b)       $xx
1503
1504    Then for every index point the following data is included;
1505
1506      Fraction at index (Fi)          $xx (xx)
1507
1508    'Indexed data start' is a byte offset from the beginning of the file.
1509    'Indexed data length' is the byte length of the audio data being
1510    indexed. 'Number of index points' is the number of index points, as
1511    the name implies. The recommended number is 100. 'Bits per index
1512    point' is 8 or 16, depending on the chosen precision. 8 bits works
1513    well for short files (less than 5 minutes of audio), while 16 bits is
1514    advantageous for long files. 'Fraction at index' is the numerator of
1515    the fraction representing a relative position in the data. The
1516    denominator is 2 to the power of b.
1517
1518    Here are the algorithms to be used in the calculation. The known data
1519    must be the offset of the start of the indexed data (S), the offset
1520    of the end of the indexed data (E), the number of index points (N),
1521    the offset at index i (Oi). We calculate the fraction at index i
1522    (Fi).
1523
1524    Oi is the offset of the frame whose start is soonest after the point
1525    for which the time offset is (i/N * duration).
1526
1527    The frame data should be calculated as follows:
1528
1529      Fi = Oi/L * 2^b    (rounded down to the nearest integer)
1530
1531    Offset calculation should be calculated as follows from data in the
1532    frame:
1533
1534      Oi = (Fi/2^b)*L    (rounded up to the nearest integer)
1535
1536
1537 5.  Copyright
1538
1539    Copyright (C) Martin Nilsson 2000. All Rights Reserved.
1540
1541    This document and translations of it may be copied and furnished to
1542    others, and derivative works that comment on or otherwise explain it
1543    or assist in its implementation may be prepared, copied, published
1544    and distributed, in whole or in part, without restriction of any
1545    kind, provided that a reference to this document is included on all
1546    such copies and derivative works. However, this document itself may
1547    not be modified in any way and reissued as the original document.
1548
1549    The limited permissions granted above are perpetual and will not be
1550    revoked.
1551
1552    This document and the information contained herein is provided on an
1553    "AS IS" basis and THE AUTHORS DISCLAIMS ALL WARRANTIES, EXPRESS OR
1554    IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF
1555    THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED
1556    WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
1557
1558
1559 6.   References
1560
1561    [CDDB] Compact Disc Data Base
1562
1563       <url:http://www.cddb.com>
1564
1565    [ID3v2.3.0] Martin Nilsson, "ID3v2 informal standard".
1566
1567       <url:http://www.id3.org/id3v2.3.0.txt>
1568
1569    [ID3v2-strct] Martin Nilsson,
1570    "ID3 tag version 2.4.0 - Main Structure"
1571    
1572       <url:http//www.id3.org/id3v2.4.0-structure.txt>
1573
1574    [ISO-639-2] ISO/FDIS 639-2.
1575    Codes for the representation of names of languages, Part 2: Alpha-3
1576    code. Technical committee / subcommittee: TC 37 / SC 2
1577
1578    [ISO-4217] ISO 4217:1995.
1579    Codes for the representation of currencies and funds.
1580    Technical committee / subcommittee: TC 68
1581
1582    [ISO-8859-1] ISO/IEC DIS 8859-1.
1583    8-bit single-byte coded graphic character sets, Part 1: Latin
1584    alphabet No. 1. Technical committee / subcommittee: JTC 1 / SC 2
1585
1586    [ISRC] ISO 3901:1986
1587    International Standard Recording Code (ISRC).
1588    Technical committee / subcommittee: TC 46 / SC 9
1589
1590    [JFIF] JPEG File Interchange Format, version 1.02
1591
1592       <url:http://www.w3.org/Graphics/JPEG/jfif.txt>
1593
1594    [KEYWORDS] S. Bradner, 'Key words for use in RFCs to Indicate
1595    Requirement Levels', RFC 2119, March 1997.
1596
1597       <url:ftp://ftp.isi.edu/in-notes/rfc2119.txt>
1598
1599    [MIME] Freed, N.  and N. Borenstein,  "Multipurpose Internet Mail
1600    Extensions (MIME) Part One: Format of Internet Message Bodies",
1601    RFC 2045, November 1996.
1602
1603       <url:ftp://ftp.isi.edu/in-notes/rfc2045.txt>
1604
1605    [MPEG] ISO/IEC 11172-3:1993.
1606    Coding of moving pictures and associated audio for digital storage
1607    media at up to about 1,5 Mbit/s, Part 3: Audio.
1608    Technical committee / subcommittee: JTC 1 / SC 29
1609     and
1610    ISO/IEC 13818-3:1995
1611    Generic coding of moving pictures and associated audio information,
1612    Part 3: Audio.
1613    Technical committee / subcommittee: JTC 1 / SC 29
1614     and
1615    ISO/IEC DIS 13818-3
1616    Generic coding of moving pictures and associated audio information,
1617    Part 3: Audio (Revision of ISO/IEC 13818-3:1995)
1618
1619
1620    [PNG] Portable Network Graphics, version 1.0
1621
1622       <url:http://www.w3.org/TR/REC-png-multi.html>
1623
1624    [URL] T. Berners-Lee, L. Masinter & M. McCahill, "Uniform Resource
1625    Locators (URL).", RFC 1738, December 1994.
1626
1627       <url:ftp://ftp.isi.edu/in-notes/rfc1738.txt>
1628
1629    [ZLIB] P. Deutsch, Aladdin Enterprises & J-L. Gailly, "ZLIB
1630    Compressed
1631    Data Format Specification version 3.3", RFC 1950, May 1996.
1632
1633       <url:ftp://ftp.isi.edu/in-notes/rfc1950.txt>
1634
1635
1636 7.   Appendix
1637
1638
1639 A.   Appendix A - Genre List from ID3v1
1640
1641    The following genres is defined in ID3v1
1642
1643       0.Blues
1644       1.Classic Rock
1645       2.Country
1646       3.Dance
1647       4.Disco
1648       5.Funk
1649       6.Grunge
1650       7.Hip-Hop
1651       8.Jazz
1652       9.Metal
1653      10.New Age
1654      11.Oldies
1655      12.Other
1656      13.Pop
1657      14.R&B
1658      15.Rap
1659      16.Reggae
1660      17.Rock
1661      18.Techno
1662      19.Industrial
1663      20.Alternative
1664      21.Ska
1665      22.Death Metal
1666      23.Pranks
1667      24.Soundtrack
1668      25.Euro-Techno
1669      26.Ambient
1670      27.Trip-Hop
1671      28.Vocal
1672      29.Jazz+Funk
1673      30.Fusion
1674      31.Trance
1675      32.Classical
1676      33.Instrumental
1677      34.Acid
1678      35.House
1679      36.Game
1680      37.Sound Clip
1681      38.Gospel
1682      39.Noise
1683      40.AlternRock
1684      41.Bass
1685      42.Soul
1686      43.Punk
1687      44.Space
1688      45.Meditative
1689      46.Instrumental Pop
1690      47.Instrumental Rock
1691      48.Ethnic
1692      49.Gothic
1693      50.Darkwave
1694      51.Techno-Industrial
1695      52.Electronic
1696      53.Pop-Folk
1697      54.Eurodance
1698      55.Dream
1699      56.Southern Rock
1700      57.Comedy
1701      58.Cult
1702      59.Gangsta
1703      60.Top 40
1704      61.Christian Rap
1705      62.Pop/Funk
1706      63.Jungle
1707      64.Native American
1708      65.Cabaret
1709      66.New Wave
1710      67.Psychadelic
1711      68.Rave
1712      69.Showtunes
1713      70.Trailer
1714      71.Lo-Fi
1715      72.Tribal
1716      73.Acid Punk
1717      74.Acid Jazz
1718      75.Polka
1719      76.Retro
1720      77.Musical
1721      78.Rock & Roll
1722      79.Hard Rock
1723
1724
1725 8.   Author's Address
1726
1727    Written by
1728
1729      Martin Nilsson
1730      Rydsvägen 246 C. 30
1731      SE-584 34 Linköping
1732      Sweden
1733
1734      Email: nilsson@id3.org