Files
cuetools/docs/formats
2004-08-28 10:02:50 +00:00

361 lines
6.2 KiB
Plaintext

============================================
Description of the Cuesheet/TOC File Formats
============================================
:Author: Svend Sorensen
:Contact: sorensen@users.berlios.de
.. contents::
The Cuesheet (cue) and TOC (toc) file formats both describe the layout of a CD.
Notes
=====
A Cuesheet or TOC file has an (optional) global section, followed by any number
of track sections.
Lines (with a few exceptions for the toc format) begin with a keyword, which
may be followed by whitespace separated fields. Some keywords are only allowed
in the global section or a track section.
Format Notation
---------------
``<field>``
a required field
``[field]``
an optional field
``...``
preceding field may be repeated any number of times
Cuesheet Format
===============
Keywords
--------
REM
~~~
Begin a comment line. All lines beginning with ``REM`` are ignored.
:Section(s): any
:Format: ``REM [comments]``
CATALOG
~~~~~~~
Sets the catalog number of the CD. The ``catalog_number`` must be exactly 13
digits.
:Section(s): global
:Format: ``CATALOG "<catalog_number>"``
FILE
~~~~
Sets a new input file. ``FILE`` line precedes the beginning of the track
section. Allowable ``file_format`` entries are ``BINARY``, ``MOTOROLA``,
``AIFF``, ``WAVE``, or ``MP3``.
:Section(s): track
:Format: ``FILE "<filename>" [file_format]``
TRACK
~~~~~
Starts a new track. ``track_number`` must be a positive integer. Allowable
``track_mode`` entries are ``MODE1/2048``, ``MODE1/2352``, ``MODE2/2336``,
``MODE2/2048``, ``MODE2/2324``, ``MODE2/2336``, or ``MODE2/2352``.
:Section(s): track
:Format: ``TRACK <track_number> <track_mode>``
FLAGS
~~~~~
Sets track flags. Allowable ``flag`` entries are ``PRE``, ``DCP``, ``4CH``,
and ``SCMS``.
:Section(s): track
:Format: ``FLAGS [flag]...``
ISRC
~~~~
Sets track ISRC number. ``ISRC_number`` must be of the format CCOOOOYYSSSSS.
:Section(s): track
:Format: ``ISRC <ISRC_number>``
PREGAP
~~~~~~
Sets track pregap. ``pregap`` must be in MSF format.
:Section(s): track
:Format: ``PREGAP <pregap>``
INDEX
~~~~~
Sets a track index. ``index_number`` must be a non-negative integer.
``index`` must be in MSF format.
:Section(s): track
:Format: ``INDEX <index_number> <index>``
(CD-TEXT keywords)
~~~~~~~~~~~~~~~~~~
See `CD-TEXT`_ section for a list of CD-TEXT keywords. The cue format cannot
handle binary CD-TEXT.
:Section(s): any
:Format: ``<CDTEXT_keyword> "<CDTEXT_field>"``
TOC File Format
===============
Certain keywords begin a block, which must be enclosed between ``{`` and ``}``
brackets.
Comments
--------
Comments begin with ``//`` and may be placed anywhere. Because they can be
placed anywhere in a line, toc comments are treated as a special case (not as a
keyword). Any text beginning with ``//`` is stripped from each line.
Keywords
--------
CATALOG
~~~~~~~
Sets the catalog number of the CD. ``catalog_number`` must be exactly 13
digits.
:Section(s): global
:Format: ``CATALOG "<catalog_number>"``
CD_DA
~~~~~
Sets the CD format to audio.
:Section(s): global
:Format: ``CD_DA``
CD_ROM
~~~~~~
Sets the CD format to data.
:Section(s): global
:Format: ``CD_ROM``
CD_ROM_XA
~~~~~~~~~
Sets the CD format to mixed.
:Section(s): global
:Format: ``CD_ROM_XA``
TRACK
~~~~~
:Section(s): track
:Format: ``TRACK <track_mode> [sub_channel_mode]``
NO
~~
Negates (clears) track flags. Allowable ``flag`` entries are ``COPY`` and
``PRE_EMPHASIS``.
:Section(s): track
:Format: ``NO <flag>``
COPY
~~~~
Sets the copy permitted flag.
:Section(s): track
:Format: ``COPY``
PRE_EMPHASIS
~~~~~~~~~~~~
Sets the pre-emphasis flag.
:Section(s): track
:Format: ``PRE_EMPHASIS``
TWO_CHANNEL_AUDIO
~~~~~~~~~~~~~~~~~
Sets the two channel audio flag.
:Section(s): track
:Format: ``TWO_CHANNEL_AUDIO``
FOUR_CHANNEL_AUDIO
~~~~~~~~~~~~~~~~~~
Sets the four channel audio flag.
:Section(s): track
:Format: ``FOUR_CHANNEL_AUDIO``
ISRC
~~~~
Sets track ISRC number. ``ISRC_number`` must be of the format CCOOOOYYSSSSS.
:Section(s): track
:Format: ISRC "<ISRC_number>"
SILENCE
~~~~~~~
*TODO*
:Section(s): track
ZERO
~~~~
*TODO*
:Section(s): track
FILE
~~~~
Add file to current track. ``start`` and ``length`` must be in MSF format.
:Section(s): track
:Format: ``FILE "<filename>" <start> [length]``
AUDIOFILE
~~~~~~~~~
Add file to current track. ``start`` and ``length`` must be in MSF format.
:Section(s): track
:Format: ``AUDIOFILE "<filename>" <start> [length]``
DATAFILE
~~~~~~~~
*TODO*
:Section(s): track
FIFO
~~~~
*TODO*
:Section(s): track
START
~~~~~
:Section(s): track
:Format: ``START <start>``
PREGAP
~~~~~~
Sets track pregap. ``pregap`` must be in MSF format.
Section(s): track
Format: ``PREGAP <pregap>``
INDEX
~~~~~
Sets a track index. ``index_number`` must be a non-negative integer.
``index_time`` must be in MSF format.
:Section(s): track
:Format: ``INDEX <index_number> <index_time>``
CD_TEXT
~~~~~~~
Begins a CD-TEXT block.
:Section(s): any
:Format: ``CD_TEXT {}``
LANGUAGE_MAP
~~~~~~~~~~~~
Begins a language map block. ``language_map`` is a mapping of an integer in
the range 0-255 to a country code.
:Section(s): global
:Subsection(s): CD-TEXT block
:Format: ``LANGUAGE_MAP { language_map... }``
LANGUAGE
~~~~~~~~
Begins a language block. ``language_number`` must be an integer in the range
0-255. ``cd_text`` is a series of CD-TEXT keyword lines.
:Section(s): track
:Subsection(s): CD-TEXT block
:Format: ``LANGUAGE language_number { cd_text }``
(CD-TEXT keywords)
~~~~~~~~~~~~~~~~~~
See `CD-TEXT`_ section for a list of CD-TEXT keywords. Format1 is for
character data and Format2 is for binary data. ``CDTEXT_binary_data`` is a
comma seperated list of integers in the range 0-255.
:Section(s): any
:Subsection(s): language block
:Format1: ``<CDTEXT_keyword> "<CDTEXT_field>"``
:Format2: ``<CDTEXT_keyword> { CDTEXT_binary_data }``
CD-TEXT
=======
Keywords
--------
========== ======
Keyword Format
========== ======
TITLE char
PERFORMER char
SONGWRITER char
COMPOSER char
ARRANGER char
MESSAGE char
DISC_ID binary
GENRE binary
TOC_INFO binary
TOC_INFO2 binary
UPC_EAN char
ISRC char
SIZE_INFO binary
========== ======
Definitions
===========
MSF format
a representation of time in the form ``mm:ss:ff``. ``mm`` is minutes,
``ss`` is seconds, and ``ff`` is frames
frame
1/74 of a second