Internet Engineering Task Force                               M. Nilsson
INTERNET DRAFT                                           1 December 2000
Document: draft-nilsson-id3-00.txt
Expires 1 June 2001


                   The MPEG audio meta data format ID3

Status of this Memo

   This document is an Internet-Draft and is in full conformance with
   all provisions of Section 10 of RFC2026.

   Internet-Drafts are working documents of the Internet Engineering
   Task Force (IETF), its areas, and its working groups.  Note that
   other groups may also distribute working documents as Internet-
   Drafts.

   Internet-Drafts are draft documents valid for a maximum of six months
   and may be updated, replaced, or obsoleted by other documents at any
   time.  It is inappropriate to use Internet-Drafts as reference
   material or to cite them other than as ``work in progress.''

   The list of current Internet-Drafts can be accessed at
   http://www.ietf.org/ietf/1id-abstracts.txt

   The list of Internet-Draft Shadow Directories can be accessed at
   http://www.ietf.org/shadow.html.


Abstract

   This document is an informational description of the not formally
   standardized MPEG audio meta data format ID3.


1.  Conventions in this document

   This document does not use the keywords described in RFC 2119
   [RFC 2119], since this is not the definition of the ID3 tag. Hence,
   when this document states "recommended", it should be interpreted as
   recommendation for increased compatibility.


2.  History

   The audio compression defined as layer I, layer II and layer III in
   the MPEG-1 [MPEG-1] and MPEG-2 [MPEG-2] standards is a popular method
   of compressing audio with a low quality loss. The MPEG data in itself
   can only contain very little meta information, like if the audio is
   copy protected or not.

   To enable a richer experience and not having to rely on filenames to
   identify performer and title of MPEG audio, Eric Kemp created the
   tagging format ID3, presented with his program "Studio3" in 1996. By
   adding a small chunk of extra data in the end of the file one could
   get the MP3 file to carry information about the audio and not just
   the audio itself. The placement of the tag, as the data was called,
   was probably chosen as there were little chance that it should
   disturb decoders.


3.  Tag layout

   The original ID3 tag, now also referred to as ID3v1, layout is the
   following:

    3 bytes  Identifier
   30 bytes  Songname
   30 bytes  Artist
   30 bytes  Album
    4 bytes  Year
   30 bytes  Comment
    1 byte   Genre


  A later modification to ID3v1 made by Michael Mutschler, sometimes
  also called ID3v1.1, has the following layout:

    3 bytes  Identifier
   30 bytes  Songname
   30 bytes  Artist
   30 bytes  Album
    4 bytes  Year
   28 bytes  Comment
    1 byte   Null
    1 byte   Track number
    1 byte   Genre

  Both ID3v1 and ID3v1.1 adds up to 128 bytes. If the content of a field
  is of lesser size than the field size, e.g. 30 characters, it should
  be null terminated.

  For the text fields, songname, artist, album and comment, different
  programs uses different character encodings, where the most used and
  recommended encoding is ISO-8859-1 [ISO-8859-1], but one should not be
  surprised if one encounters a different character encoding.


3.1.  Identifier

  The ID3 tag identifier is the three byte string "TAG" encoded with
  ISO-8859-1 [ISO-8859-1].


3.2.  Songname

  The name/title of the audio.


3.3.  Artist

  Presumably intended for the name of the performing artist, but also
  often used for composer in cases like classical music and movie music.


3.4.  Album

  The album from which the audio originated. This is sometimes a URL
  [URL] to an online music archive.


3.5.  Year

  This is a numeric string which presumably should be used for the year
  the audio was first released. Other existing uses are composition
  year, recording year and re-release year. The original release year
  is the recommended use. The numbers should always be encoded with
  ISO-8859-1 [ISO-8859-1].


3.6.  Comment

  This field has given a lot of different uses, although seldom for
  actual comments since its size limitation to 30 characters. In ID3v1.1
  it is even more limited with a maximum text length of 28 characters,
  but according to Michael Mutschler that is not a problem since it was
  too limited from the beginning. Examples of uses for the comment filed
  includes CRC of the original PCM audio as well as URL [URL] to a
  relevant web page.


3.7.  Null

  In ID3v1.1 this byte is required to have the binary value zero (0x00).


3.8.  Track number

  In ID3v1.1 this byte indicate the track number that the song had on
  the album it came from. The track number is a binary value between 1
  and 255 (0x01 - 0xFF). In such cases where the 29:th byte is not null
  or when the 30:th byte is null, the track number is to be considered
  undefined. It is recommended that this value never is set to 255
  (0xFF). See the security considerations for details.


3.9.  Genre

  The genre is a one byte value referring to an item in a predefined
  list of genres.


4.  Genres

  While ID3 makes no claims to have a complete solution for genre
  taxonomy it provides a list that includes all major western genres as
  well as several convenient non-genres (oldies, vocal and instrumental
  to name a few). Some programs have added more genres above the value
  79 that are not supported by all ID3 software, and hence not
  recommended.

      0. Blues
      1. Classic Rock
      2. Country
      3. Dance
      4. Disco
      5. Funk
      6. Grunge
      7. Hip-Hop
      8. Jazz
      9. Metal
     10. New Age
     11. Oldies
     12. Other
     13. Pop
     14. R&B
     15. Rap
     16. Reggae
     17. Rock
     18. Techno
     19. Industrial
     20. Alternative
     21. Ska
     22. Death Metal
     23. Pranks
     24. Soundtrack
     25. Euro-Techno
     26. Ambient
     27. Trip-Hop
     28. Vocal
     29. Jazz+Funk
     30. Fusion
     31. Trance
     32. Classical
     33. Instrumental
     34. Acid
     35. House
     36. Game
     37. Sound Clip
     38. Gospel
     39. Noise
     40. AlternRock
     41. Bass
     42. Soul
     43. Punk
     44. Space
     45. Meditative
     46. Instrumental Pop
     47. Instrumental Rock
     48. Ethnic
     49. Gothic
     50. Darkwave
     51. Techno-Industrial
     52. Electronic
     53. Pop-Folk
     54. Eurodance
     55. Dream
     56. Southern Rock
     57. Comedy
     58. Cult
     59. Gangsta
     60. Top 40
     61. Christian Rap
     62. Pop/Funk
     63. Jungle
     64. Native American
     65. Cabaret
     66. New Wave
     67. Psychadelic
     68. Rave
     69. Showtunes
     70. Trailer
     71. Lo-Fi
     72. Tribal
     73. Acid Punk
     74. Acid Jazz
     75. Polka
     76. Retro
     77. Musical
     78. Rock & Roll
     79. Hard Rock


5.  Security considerations

  Since no formal standardization of ID3v1 exists all applications must
  be very fault tolerant and not expect a tag to be "well formed".
  Another factor to consider is that the ID3 tag is appended to the MPEG
  file and thus represents an unknown binary block for an ID3 unaware
  MPEG player. The problem is greatly reduced by the fact that an ID3
  block is smaller than an MPEG block, but the risk can be further
  reduced. By ensuring that the tag does not include a byte with all
  bits set (0xFF) there will be no possibility that the player will find
  a MPEG header by mistake, since a MPEG block begins with one and a
  half byte of set bits. The year and genre field is already restricted
  so that they can not be 0xFF. By disallowing the character represented
  by 0xFF and disallowing the track number to be greater than 254 there
  is no possibility for a false synchronization in the tag.


6.  References

   [ISO-8859-1] ISO/IEC DIS 8859-1.
     '8-bit single-byte coded graphic character sets, Part 1: Latin
     alphabet No. 1.' Technical committee / subcommittee: JTC 1 / SC 2

   [MPEG-1]
     ISO/IEC 11172-3:1993.
     Coding of moving pictures and associated audio for digital storage
     media at up to about 1,5 Mbit/s, Part 3: Audio.
     Technical committee / subcommittee: JTC 1 / SC 29

   [MPEG-2]
     ISO/IEC 13818-3:1995
     Generic coding of moving pictures and associated audio information,
     Part 3: Audio.
     Technical committee / subcommittee: JTC 1 / SC 29

     and

     ISO/IEC DIS 13818-3
     Generic coding of moving pictures and associated audio information,
     Part 3: Audio (Revision of ISO/IEC 13818-3:1995)

   [RFC2119]
     S. Bradner, "Key words for use in RFCs to Indicate Requirement
     Levels", RFC 2119, March 1997.

        <url:ftp://ftp.isi.edu/in-notes/rfc2119.txt>

   [URL] T. Berners-Lee, L. Masinter & M. McCahill, 'Uniform Resource
     Locators (URL)', RFC 1738, December 1994.

        <url:ftp://ftp.isi.edu/in-notes/rfc1738.txt>


7.  Authors Address

   Martin Nilsson
   Rydsv„gen 246 C. 30
   S-584 34 Link÷ping
   Sweden

   Email: nilsson@id3.org


8.  Full Copyright Statement

   Copyright (C) The Internet Society (2000).  All Rights Reserved.

   This document and translations of it may be copied and furnished to
   others, and derivative works that comment on or otherwise explain it
   or assist in its implmentation may be prepared, copied, published and
   distributed, in whole or in part, without restriction of any kind,
   provided that the above copyright notice and this paragraph are
   included on all such copies and derivative works.  However, this
   document itself may not be modified in any way, such as by removing
   the copyright notice or references to the Internet Society or other
   Internet organizations, except as needed for the purpose of
   developing Internet standards in which case the procedures for
   copyrights defined in the Internet Standards process must be
   followed, or as required to translate it into languages other than
   English.

   The limited permissions granted above are perpetual and will not be
   revoked by the Internet Society or its successors or assigns.

   This document and the information contained herein is provided on an
   "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING
   TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING
   BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION
   HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF
   MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE."