More formatting changes

This commit is contained in:
R. Bernstein
2012-02-04 19:48:53 -05:00
parent 6e7e152056
commit efc5ebd30c

View File

@@ -38,63 +38,53 @@ Copyright @copyright{} 2011-2012 Thomas Schmitt @email{scdbackup@@gmx.net}.
@insertcopying @insertcopying
@menu @menu
* CD-TEXT from the User Viewpoint:: * CD-TEXT Attribute Categories::
* Content Specification:: * Text Pack Content Specification::
* CD-TEXT Packet Format:: * CD-TEXT Packet Format::
* CD-TEXT Decoding Example::
* Sony Text File Format (Input Sheet Version 0.7T):: * Sony Text File Format (Input Sheet Version 0.7T)::
* CDRWIN Cue Sheet with CD Text:: * CDRWIN Cue Sheet with CD Text::
* References:: * References::
@end menu @end menu
@end ifnottex @end ifnottex
@node CD-TEXT from the User Viewpoint @node CD-TEXT Attribute Categories
@chapter CD-TEXT from the User Viewpoint @chapter CD-TEXT Attribute Categories
CD-TEXT records attributes of disc and tracks on audio CD. CD-TEXT records attributes of disc and tracks on audio CD.
The attributes are grouped into blocks which represent particular languages. The attributes are grouped into blocks. Each block contains data for
Up to 8 blocks are possible. a particular language. Up to 8 blocks (languages) are possible.
There are 13 defined attribute categories, which are called Pack Types and are There are 13 defined attribute categories, which are called Pack Types.
identified by a single-byte code:
@table @kbd
@item 0x80
Title
@item 0x81
Performers
@item 0x82
Songwriters
@item 0x83
Composers
@item 0x84
Arrangers
@item 0x85
Message Area
@item 0x86
Disc Identification (text-and-binary)
@item 0x87
Genre Identification (text-and-binary)
@item 0x88
Table of Contents (binary)
@item 0x89
Second Table of Content information (binary; 0x8a to 0x8c are reserved.)
@item 0x8d
Closed Information
@item 0x8e
UPC/EAN code of the album and ISRC code of each track
@item 0x8f
binary: Size Information of the Block
@end table
Categories @kbd{0x86}, @kbd{0x87}, @kbd{0x88}, @kbd{0x89}, @kbd{0x8d} The categories are identified by a single-byte code as follows:
apply to the whole disc. @smallexample
0x80: Title
0x81: Performers
0x82: Songwriters
0x83: Composers
0x84: Arrangers
0x85: Message Area
0x86: Disc Identification (in text and binary)
0x87: Genre Identification (in text and binary)
0x88: Table of Contents (in binary)
0x89: Second Table of Contents (in binary)
0x8d: Closed Information
0x8e: UPC/EAN code of the album and ISRC code of each track
0x8f: Block Size (binary)
@end smallexample
Categories @kbd{0x80}, @kbd{0x81}, @kbd{0x82}, @kbd{0x83}, @kbd{0x84}, Some additional information regarding specific codes:
@itemize
@item Codes @kbd{0x8a} to @kbd{0x8c} are reserved.
@item Codes @kbd{0x86},@kbd{0x87}, @kbd{0x88}, @kbd{0x89}, @kbd{0x8d} apply to the whole
disc.
@item Codes @kbd{0x80}, @kbd{0x81}, @kbd{0x82}, @kbd{0x83}, @kbd{0x84},
@kbd{0x85}, and @kbd{0x8e} have to also be attributed to each @kbd{0x85}, and @kbd{0x8e} have to also be attributed to each
track if they are present for the whole disc. track if they are present for the whole disc.
@item Code @kbd{0x8f} describes the overall content of a block and in part of all other blocks.
Category @kbd{0x8f} describes the overall content of a block and in part of all @end itemize
other blocks.
The total size of a block's attribute set is restricted by the fact that The total size of a block's attribute set is restricted by the fact that
it has to be stored in at most 253 records with 12 bytes of it has to be stored in at most 253 records with 12 bytes of
@@ -102,92 +92,69 @@ payload. These records are called Text Packs. A shortcut for repeated
identical track texts is provided, so that a text that is identical to identical track texts is provided, so that a text that is identical to
the one of the previous track occupies only 2 or 4 bytes. the one of the previous track occupies only 2 or 4 bytes.
@node Content Specification @node Text Pack Content Specification
@chapter Content Specificiation @chapter Text Pack Content Specificiation
Pack types @kbd{0x80} to @kbd{0x85} and @kbd{0x8e} contain 0-terminated Pack types @kbd{0x80} to @kbd{0x85} and @kbd{0x8e} contain a 0-byte
cleartext. If double-byte characters are used, then two 0-bytes terminating its text. If double-byte characters are used, then two
terminate the cleartext. The meaning of @kbd{0x80} to @kbd{0x85} should zero bytes terminate the text. Pack types @kbd{0x80} (Title) and
be clear by above list. They are encoded according to the Character Code @kbd{0x85} (Message Area) and are encoded according to their block's
of their block. Either as ISO-8859-1 single byte characters, or as 7-bit Character Code. This could be either as ISO-8859-1 single byte
ASCII single byte characters, or as MS-JIS double byte characters. More characters, as 7-bit ASCII single byte characters, or as MS-JIS double
info on @kbd{0x8e} is given below. byte characters. Pack type @kbd{0x8e} is given below.
Pack type @kbd{0x86} (Disc Identification) Sony documents as Pack type @kbd{0x86} (Disc Identification) Sony documents this:
``Catalog Number: (use ASCII Code) Catalog Number of the album''. So it is @quotation
not really binary but might be non-printable, and should contain only Catalog Number: (use ASCII Code) Catalog Number of the album
@end quotation
So it is not really binary but might be non-printable, and should contain only
bytes with bit 7 set to zero. bytes with bit 7 set to zero.
Pack type 0x87 contains 2 binary bytes, followed by 0-terminated cleartext. Pack type @kbd{0x87} (Genre Identification) contains 2 binary bytes,
The two binary bytes form a Big-endian index to the following list. followed by 0-terminated text. The two bytes constitute a 16-bit
Big-endian number are decoded as follows:
@smallexample
0x0000: Not Used. Sony prescribes to use this if no genre applies
0x0001: Not Defined
0x0002: Adult Contemporary
0x0003: Alternative Rock
0x0004: Childrens Music
0x0005: Classical
0x0006: Contemporary Christian
0x0007: Country
0x0008: Dance
0x0009: Easy Listening
0x000a: Erotic
0x000b: Folk
0x000c: Gospel
0x000d: Hip Hop
0x000e: Jazz
0x000f: Latin
0x0010: Musical
0x0011: New Age
0x0012: Opera
0x0013: Operetta
0x0014: Pop Music
0x0015: Rap
0x0016: Reggae
0x0017: Rock Music
0x0018: Rhythm & Blues
0x0019: Sound Effects
0x001a: Spoken Word
0x001b: World Music
@end smallexample
@table @kbd Sony documents report that this field contains:
@item 0x0000 @quotation
Not Used --- Sony prescribes this if no genre applies. Genre information that would supplement
@item 0x0001 the Genre Code, such as ``USA Rock music in the 60's''.
Not Defined @end quotation
@item 0x0002
Adult Contemporary
@item 0x0003
Alternative Rock
@item 0x0004
Childrens Music
@item 0x0005
Classical
@item 0x0006
Contemporary Christian
@item 0x0007
Country
@item 0x0008
Dance
@item 0x0009
Easy Listening
@item 0x000a
Erotic
@item 0x000b
Folk
@item 0x000c
Gospel
@item 0x000d
Hip Hop
@item 0x000e
Jazz
@item 0x000f
Latin
@item 0x0010
Musical
@item 0x0011
New Age
@item 0x0012
Opera
@item 0x0013
Operetta
@item 0x0014
Pop Music
@item 0x0015
Rap
@item 0x0016
Reggae
@item 0x0017
Rock Music
@item 0x0018
Rhythm & Blues
@item 0x0019
Sound Effects
@item 0x001a
Spoken Word
@item 0x001b
World Music
@end table
Sony documents the cleartext part as "Genre information that would supplement This information is always ASCII encoded.
the Genre Code, such as ``USA Rock music in the 60s\'''. Always ASCII encoded.
Pack type @kbd{0x88} records information from the CD's Table of Content, as of Pack type @kbd{0x88} records information from the CD's Table of
READ PMA/TOC/ATIP Format 0010b (mmc5r03c.pdf, table 490 TOC Track Descriptor Contents, as of READ PMA/TOC/ATIP Format 0010b (mmc5r03c.pdf, table
Format, Q Sub-channel). 490 TOC Track Descriptor Format, Q Sub-channel). See @pxref{CD-TEXT Packet Format} for more details about the content of this pack type.
See below, Format of CD-TEXT packs, for more details about the content of
pack type @kbd{0x88}.
Pack type @kbd{0x89} is yet quite unclear. It might be a representation Pack type @kbd{0x89} is yet quite unclear. It might be a representation
of Playback Skip Interval, Mode-5 Q sub-channel, POINT 01 to 40 of Playback Skip Interval, Mode-5 Q sub-channel, POINT 01 to 40
@@ -196,19 +163,27 @@ type SAO, because the CUE SHEET format offers no way to express Mode-5
Q. See below, Format of CD-TEXT packs, for an example of this pack Q. See below, Format of CD-TEXT packs, for an example of this pack
type. type.
Pack type @kbd{0x8d} Sony documentes as ``Closed Information: (use Pack type @kbd{0x8d} Sony documents says:
8859-1 Code) Any information can be recorded on disc as @quotation
Closed Information: (use 8859-1 Code) Any information can be recorded on disc as
memorandum. Information in this field will not be read by CD TEXT memorandum. Information in this field will not be read by CD TEXT
players available to the public.'' It is always ISO-8859-1 encoded. players available to the public.
@end quotation
Pack type 0x8e is documented by Sony as ``UPC/EAN Code (POS Code) of the It is always ISO-8859-1 encoded.
album. This field typically consists of 13 characters.'' This is always
ASCII encoded. It applies to tracks as ``ISRC code [which] typically Pack type @kbd{0x8e} is documented by Sony as
consists of 12 characters'' and is always ISO-8859-1 encoded. MMC calls @quotation
these information entities Media Catalog Number and ISRC. The catalog UPC/EAN Code (POS Code) of the
number consists of 13 decimal digits. ISRC consists of 12 characters: 2 album. This field typically consists of 13 characters.
country code [0-9A-Z], 3 owner code [0-9A-Z], 2 year digits (00 to 99), @end quotation
5 serial number digits (00000 to 99999). This is always ASCII encoded. It applies to tracks as ``ISRC code
[which] typically consists of 12 characters'' and is always ISO-8859-1
encoded. MMC calls these information entities Media Catalog Number
and ISRC. The catalog number consists of 13 decimal digits. ISRC
consists of 12 characters: 2 country code [0-9A-Z], 3 owner code
[0-9A-Z], 2 year digits (00 to 99), 5 serial number digits (00000 to
99999).
Pack type @kbd{0x8f} summarizes the whole list of text packs of a block. Pack type @kbd{0x8f} summarizes the whole list of text packs of a block.
See the next section for details. See the next section for details.
@@ -218,7 +193,7 @@ See the next section for details.
The attributes are represented on CD as Text Packs in the sub-channel of The attributes are represented on CD as Text Packs in the sub-channel of
the Lead-in of the disc. The file @file{doc/cookbook.txt} of the the Lead-in of the disc. The file @file{doc/cookbook.txt} of the
libburnia distribution ddescribe write the readily formatted CD-TEXT libburnia distribution describe write the readily formatted CD-TEXT
pack array to CD, and how to read CD-TEXT packs from CD. pack array to CD, and how to read CD-TEXT packs from CD.
The format is explained in part in MMC-3 @xref{mmc3r10g.pdf,, The format is explained in part in MMC-3 @xref{mmc3r10g.pdf,,
@@ -378,225 +353,79 @@ The track number bytes of the three packs have the values 0, 1, 2.
28 - 36 : Language code for blocks 0 to 7 (tech3264.pdf appendix 3) 28 - 36 : Language code for blocks 0 to 7 (tech3264.pdf appendix 3)
@end smallexample @end smallexample
@table @kbd Codes for Languages are as follows:
@item 0x00
Unknown @smallexample
@item 0x01 0x00: Unknown 0x50: Sranan Tongo
Albanian 0x01: Albanian 0x51: Somali
@item 0x02 0x02: Breton 0x52: Sinhalese
Breton 0x03: Catalan 0x53: Shona
@item 0x03 0x04: Croatian 0x54: Serbo-croat
Catalan 0x05: Welsh 0x55: Ruthenian
@item 0x04 0x06: Czech 0x56: Russian
Croatian 0x07: Danish 0x57: Quechua
@item 0x05 0x08: German 0x58: Pushtu
Welsh 0x09: English 0x59: Punjabi
@item 0x06 0x0a: Spanish 0x5a: Persian
Czech 0x0b: Esperanto 0x5b: Papamiento
@item 0x07 0x0c: Estonian 0x5c: Oriya
Danish 0x0d: Basque 0x5d: Nepali
@item 0x08 0x0e: Faroese 0x5e: Ndebele
German 0x0f: French 0x5f: Marathi
@item 0x09 0x10: Frisian 0x60: Moldavian
English 0x11: Irish 0x61: Malaysian
@item 0x0a 0x12: Gaelic 0x62: Malagasay
Spanish 0x13: Galician 0x63: Macedonian
@item 0x0b 0x14: Iceland 0x64: Laotian
Esperanto 0x15: Italian 0x65: Korean
@item 0x0c 0x16: Lappish 0x66: Khmer
Estonian 0x17: Latin 0x67: Kazakh
@item 0x0d 0x18: Latvian 0x68: Kannada
Basque 0x19: Luxembourgian 0x69: Japanese
@item 0x0e 0x1a: Lithuanian 0x6a: Indonesian
Faroese 0x1b: Hungarian 0x6b: Hindi
@item 0x0f 0x1c: Maltese 0x6c: Hebrew
French 0x1d: Dutch 0x6d: Hausa
@item 0x10 0x1e: Norwegian 0x6e: Gurani
Frisian 0x1f: Occitan 0x6f: Gujurati
@item 0x11 0x20: Polish 0x70: Greek
Irish 0x21: Portuguese 0x71: Georgian
@item 0x12 0x22: Romanian 0x72: Fulani
Gaelic 0x23: Romansh 0x73: Dari
@item 0x13 0x24: Serbian 0x74: Churash
Galician 0x25: Slovak 0x75: Chinese
@item 0x14 0x26: Slovenian 0x76: Burmese
Icelandic 0x27: Finnish 0x77: Bulgarian
@item 0x15 0x28: Swedish 0x78: Bengali
Italian 0x29: Turkish 0x79: Bielorussian
@item 0x16 0x2a: Flemish 0x7a: Bambora
Lappish 0x2b: Wallon 0x7b: Azerbaijani
@item 0x17 0x45: Zulu 0x7c: Assamese
Latin 0x46: Vietnamese 0x7d: Armenian
@item 0x18 0x47: Uzbek 0x7e: Arabic
Latvian 0x48: Urdu 0x7f: Amharic
@item 0x19 0x49: Ukrainian
Luxembourgian 0x4a: Thai
@item 0x1a 0x4b: Telugu
Lithuanian 0x4c: Tatar
@item 0x1b 0x4d: Tamil
Hungarian 0x4e: Tadzhik
@item 0x1c 0x4f: Swahili
Maltese @end smallexample
@item 0x1d
Dutch
@item 0x1e
Norwegian
@item 0x1f
Occitan
@item 0x20
Polish
@item 0x21
Portuguese
@item 0x22
Romanian
@item 0x23
Romansh
@item 0x24
Serbian
@item 0x25
Slovak
@item 0x26
Slovenian
@item 0x27
Finnish
@item 0x28
Swedish
@item 0x29
Turkish
@item 0x2a
Flemish
@item 0x2b
Wallon
@item 0x45
Zulu
@item 0x46
Vietnamese
@item 0x47
Uzbek
@item 0x48
Urdu
@item 0x49
Ukrainian
@item 0x4a
Thai
@item 0x4b
Telugu
@item 0x4c
Tatar
@item 0x4d
Tamil
@item 0x4e
Tadzhik
@item 0x4f
Swahili
@item 0x50
Sranan Tongo
@item 0x51
Somali
@item 0x52
Sinhalese
@item 0x53
Shona
@item 0x54
Serbo-croat
@item 0x55
Ruthenian
@item 0x56
Russian
@item 0x57
Quechua
@item 0x58
Pushtu
@item 0x59
Punjabi
@item 0x5a
Persian
@item 0x5b
Papamiento
@item 0x5c
Oriya
@item 0x5d
Nepali
@item 0x5e
Ndebele
@item 0x5f
Marathi
@item 0x60
Moldavian
@item 0x61
Malaysian
@item 0x62
Malagasay
@item 0x63
Macedonian
@item 0x64
Laotian
@item 0x65
Korean
@item 0x66
Khmer
@item 0x67
Kazakh
@item 0x68
Kannada
@item 0x69
Japanese
@item 0x6a
Indonesian
@item 0x6b
Hindi
@item 0x6c
Hebrew
@item 0x6d
Hausa
@item 0x6e
Gurani
@item 0x6f
Gujurati
@item 0x70
Greek
@item 0x71
Georgian
@item 0x72
Fulani
@item 0x73
Dari
@item 0x74
Churash
@item 0x75
Chinese
@item 0x76
Burmese
@item 0x77
Bulgarian
@item 0x78
Bengali
@item 0x79
Bielorussian
@item 0x7a
Bambora
@item 0x7b
Azerbaijani
@item 0x7c
Assamese
@item 0x7d
Armenian
@item 0x7e
Arabic
@item 0x7f
Amharic
@end table
Note: Not all of thes above codes have ever been seen with CD-TEXT. Note: Not all of thes above codes have ever been seen with CD-TEXT.
For example these three packs @node CD-TEXT Decoding Example
@chapter CD-TEXT Decoding Example
Using the preceding information, we can work out the following example.
@smallexample @smallexample
42 : 8f 00 2a 00 01 01 03 00 06 05 04 05 07 06 01 02 48 65 42 : 8f 00 2a 00 01 01 03 00 06 05 04 05 07 06 01 02 48 65
43 : 8f 01 2b 00 00 00 00 00 00 00 06 03 2c 00 00 00 c0 20 43 : 8f 01 2b 00 00 00 00 00 00 00 06 03 2c 00 00 00 c0 20
44 : 8f 02 2c 00 00 00 00 00 09 00 00 00 00 00 00 00 11 45 44 : 8f 02 2c 00 00 00 00 00 09 00 00 00 00 00 00 00 11 45
@end smallexample @end smallexample
decode to: This decode tos
@smallexample @smallexample
Byte :Value Meaning Byte :Value Meaning
0 : 01 = ASCII 7-bit 0 : 01 = ASCII 7-bit