CUE 文件及其格式說明

CUE 文件及其格式說明

CUE 文件,即 CUESheets ,光盤鏡像輔助文件。通常用於光盤刻錄、音樂播放等等。比如用 EAC 刻錄CD光盤,或者用 Foobar2000 播放整軌音樂文件。

CUE 文件是非常好的音樂專輯信息載體,使用它可以使專輯信息和音樂文件分離,從而達到播放整軌 WAV、FLAC、APE 等文件的目的。

  由於篇幅有限,本文只描述音樂文件播放相關的內容,因此和刻錄有關的信息可能不大詳細,敬請原諒。

  本文檔分爲三部分:

  一、CUE 基本規範
  二、CUE 命令參考
  三、範例解析

==========================================================================================

一、CUE 基本規範

1、CUE 是使用 ANSI 編碼文本 格式儲存的,以 .cue 爲後綴儲存的文件。
2、其內容分爲 Header 文件頭,和 Tracks-Info 數據軌描述表兩部分。其中 Header 文件頭是可選的。
3、CUE 文件必須與文件內描述的數據文件位於同一目錄下。(FLAC 音頻文件可以內嵌 CUE 文件)
4、CUE 文件的修改與數據文件無關,因而 CUE 文件的丟失對數據文件無實質影響。

==========================================================================================
一、CUE 命令參考

  首先我們來看看 Header 文件頭,其常見格式如下:(文件頭是可選的,其全部內容都不是必須的)

TITLE <cd-title>
PERFORMER <performer-name>
SONGWRITER <writer-name>
CATALOG <catalog-id>
REM DATE <date>
REM DISCID <discid-id>
REM GENRE <classes>
REM COMMENT <comments>
CDTEXTFILE <cd-text-file-name>

  這裏出現瞭如下命令:(也許你發現了,這些命令全部用大寫,其實大小寫沒關係,但是爲了格式化,所以命令再次統一用大寫的)
TITLE、CATALOG、SONGWRITER、PERFORMER、REM、CDTEXTFILE

  下面我們對上面的命令逐行分析,記住 頭部信息全部都是可有可無的,當然有就最好不過了。
----------------------------------------------------------------------------------------------------
TITLE 命令(頭部)
  這條命令很明顯,指定唱片標題。格式爲:
TITLE <title>
  比如MJ的專輯《Thriller》
TITLE "Thriller"
  注意:
  1、<title>必須小於80個字符。
  2、對於長且有空格的名稱,必須用半角雙引號引起來。這裏建議在任何情況下都把<title>用雙引號引起來。
  3、刻錄時,如果刻錄機不支持 CD-TEXT,則此命令將被忽略。但是在播放器裏是有效的。
----------------------------------------------------------------------------------------------------
PERFORMER 命令(頭部)
  這條命令也很簡單,指定唱片演唱者。格式爲:
PERFORMER <performer-name>
  比如MJ的專輯《Thriller》
PERFORMER "MichelleJackson"
  注意:
  1、<performer-name>必須小於80個字符。
  2、對於長且有空格的名稱,必須用半角雙引號引起來。這裏建議在任何情況下都把<performer-name>用雙引號引起來。
  3、刻錄時,如果刻錄機不支持 CD-TEXT,則此命令將被忽略。但是在播放器裏是有效的。
----------------------------------------------------------------------------------------------------
SONGWRITER 命令(頭部)
  這條命令也很簡單,指定唱片樂曲編曲者。格式爲:
SONGWRITER <writer-name>
  比如馮曦妤的歌曲《幸運兒》
SONGWRITER "馮曦妤"
  注意:
  1、<writer-name>必須小於80個字符。
  2、對於長且有空格的名稱,必須用半角雙引號引起來。這裏建議在任何情況下都把<writer-name>用雙引號引起來。
  3、刻錄時,如果刻錄機不支持 CD-TEXT,則此命令將被忽略。但是在播放器裏是有效的。
----------------------------------------------------------------------------------------------------
REM 命令(頭部)
  這條命令表示註釋,通常用來標明一些 CUE 閱讀說明。格式爲:
REM <comments>
  比如
REM 這是說明哦。
  但是 REM 命令通常不會被這麼使用,因爲 CUE 文件格式簡單,不需要寫什麼註釋。於是 REM 就被用來指定各種 CUE 的擴展命令,這些擴展命令一般也是用於頭部信息(音軌信息部分也有,後面會提到),一般作用於 Foobar2000 等音樂播放器。下面將逐個說明:



REM GENRE <class-names>這個命令用於指定唱片、專輯的分類,建議後面的 <class-names> 用半角雙引號引起來。例如貝多芬精選集裏其中一張 CD:REM GENRE "Classical"
REM DISCID <cd-id>這個命令用於指定 CD 的唯一編號,建議後面的 <cd-id> 用半角雙引號引起來。例如貝多芬精選集裏其中一張 CD:REM DISCID "5C0D6808"
REM DATE <date>這個命令用於指定光盤的發行時間,精確到年。其中<date>可以用半角雙引號引起來。例如,一張 2009 年發佈的 CD:REM DATE 2009
REM COMMENT <comment-string>這個命令用於指定 CUE 的生成說明,建議後面的 <comment-string> 用半角雙引號引起來。例如使用 EAC 生成的 CUE 文件一般都帶如下類似信息:REM COMMENT "ExactAudioCopy v0.99pb4"

----------------------------------------------------------------------------------------------------
CATALOG 命令
  這條命令用於指定唱片的唯一 EAN 編號。格式爲:
CATALOG <catalog-id>
  比如 George Michael 的專輯《Songs From The Last Century》。
CATALOG "7243848740251"
  這是個比較重要的玩意兒,它表示這張唱片的身份證,是一個 13 位的數字,通常和唱片的 EAN 碼一致。也就是說,這張唱片的唯一編號。世界上不會有兩張唱片的 CATALOG 相同的。關於這個 CATALOG 碼,要了解更多請參考百度百科。
  注意:
  1、<catalog-id> 必須爲13個字符。
  2、這裏建議把 <catalog-id> 用半角雙引號引起來。
  3、注意本命令最多隻能在 CUE 文件內出現一次,可以沒有。通常位於頭部。
----------------------------------------------------------------------------------------------------
CDTEXTFILE 命令
  這條命令用於指定光盤上使用的 CD-TEXT 信息文件的名稱,具體用途不在此說明,需要的請自行查閱相關文獻。格式爲:
CDTEXTFILE <cd-text-filename>
  比如
CDTEXTFILE "cd-text1.cdt"
CDTEXTFILE "c:\cds\cd-text2.cdt"
  注意:
  1、<cd-text-filename> 可以是文件名,也可以包含文件路徑。
  2、如果 <cd-text-filename> 內包含空格,那麼必須用半角雙引號引起來。這裏建議總是把 <cd-text-filename> 用半角雙引號引起來。
  3、如果刻錄機不支持 CD-TEXT,那麼此命令將被忽略。
----------------------------------------------------------------------------------------------------

  至此,頭部信息文件介紹完畢。下面開始介紹數據軌描述表部分。
  數據軌描述表分爲兩部分:

    一、核心部分,即下面格式中未被[]包含的內容,這一部分是必須存在的;
    二、單軌描述信息,即下面格式中被[]包含的部分。

  數據軌描述表的格式如下:(注意[]不是內容,只是表示其裏面的內容爲可選段)

FILE <data-file-name><file-type>
TRACK <track-id><track-data-type>
INDEX 01<track-begin-time>
[TITLE <track-title>]
[PERFORMER <performer-name>]
[SONGWRITER <writer-name>]
[ISRC <isrc-code>]
[FLAGS <flags>]
[PREGAP <pre-mute-time>]
[POSTGAP <post-mute-time>]
[REM REPLAYGAIN_TRACK_GAIN +/-*.** dB]
[REMREPLAYGAIN_TRACK_PEAK *.******]
[INDEX <index><track-begin-time>]

  數據信息描述表格式如上所示,其中 FILE 命令可以有多條,而每條 FILE 命令下又可以有多條 TRACK 命令。下面介紹各條命令。
----------------------------------------------------------------------------------------------------
FILE 命令
  這條命令用於聲明一個數據文件。格式爲:
FILE <data-file-name> <file-type>
  其中 <data-file-name> 是位於 CUE 文件相同目錄下的數據文件名稱。<file-type> 爲文件的數據類型:
<file-type> 說明
BINARY 二進制數據文件,必須是 Little-Endian 編碼格式。
MOTOROLA 二進制數據文件,必須是 Big-Endian 編碼格式。
AIFF AIFF 音頻文件
WAVE WAVE 音頻文件(WAV/FLAC/APE)
MP3 MP3 音頻文件

  不同的文件應該對應不同的文件類型。
  比如:
FILE "01 - NikiNana (We're One).flac"WAVE
  注意:
  1、每個 CUE 文件內至少含有一條 FILE 命令。
  2、<data-file-name> 必須用半角雙引號引起來。
  3、注意 <data-file-name> 必須與 CUE 文件位於相同目錄下。
----------------------------------------------------------------------------------------------------
TRACK 命令
  這條命令用於聲明某個數據文件內的一條數據軌段。格式爲:
TRACK <track-id> <track-data-type>
  其中 <track-id> 是軌段編號,取值必須在 01 到 99 之內。<track-data-type> 爲軌段的數據類型,與刻錄機型號有關,一般爲 AUDIO,其他 <track-data-type> 類型請自行查閱相關文獻。
  比如:
TRACK 01 AUDIO
  注意:
  1、每個 FILE 命令內至少含有一條 TRACK 命令。
  2、<track-id> 即爲播放器內識別的音軌號。
----------------------------------------------------------------------------------------------------
INDEX 命令
  這條命令對某個數據文件內的一條數據軌進行分段。格式爲:
INDEX <index> <begin-time>
  其中 <index> 是子軌段編號,取值必須在 00 到 99 之內。<begin-time> 爲子軌段的時間起點。對於<index>,其中00和01爲比較特殊的點。00 爲要跳過的軌內空白段,而 01 爲軌段的有效起點。
  比如一個 TRACK 和前一個 TRACK 之間有50秒的空檔:
TRACK 01 AUDIO
INDEX 0100:00:00
REM 每個文件的第一個 TRACK 不能有 INDEX 00,其 INDEX 01必須爲00:00:00。
TRACK 02 AUDIO
INDEX 0000:05:00
REM 此處跳過50s的空檔,直接到05:50繼續播放。
REM 因爲 INDEX 01纔是 TRACK 02的開始,所以 INDEX 00可以
REM 看作是 TRACK 01的有效結束時間。
INDEX 0100:05:50
  注意:
  1、每個 TRACK 命令內至少含有 INDEX 01。
2、每個文件第一個 TRACK 的 INDEX 01 都應從 00:00:00 開始,且不得有 INDEX 00。很多 CUE 文件無法被 Foobar2000 識別,就是因爲這個錯誤。
----------------------------------------------------------------------------------------------------
PREGAP 命令
  這條命令類似於 INDEX 00,但又略有所不同。格式爲:
PREGAP <skip-time>
  這條命令的作用和 INDEX 00 相似,但卻又不相同。其中 <skip-time> 是要插入的空白時間長度。區別在於:
  1、PREGAP 是在該軌段前硬性加入一段空白時間(數據全爲0),常用於刻錄中,Foobar2000 不支持。
  2、PREGAP 是在軌段前插入真實數據,而 INDEX 00 只是跳過軌段內部的一段數據,因此兩者不同。
  3、PREGAP 可以用於文件的第一個 TRACK 中,而 INDEX 00 不可以。
  比如:
TRACK 01 AUDIO
PREGAP 00:02:00
INDEX 0100:00:00
  注意:
  1、每個 TRACK 命令內最多隻能有一條 PREGAP 命令。
  2、PREGAP 必須位於 TRACK 命令後,所有 INDEX 命令之前。
----------------------------------------------------------------------------------------------------
POSTGAP 命令
  這條命令類似於 INDEX 00,但又略有所不同。格式爲:
POSTGAP <skip-time>
  這條命令的作用和 INDEX 00 相似,但卻又不相同。其中 <skip-time> 是要插入的空白時間長度。區別在於:
  1、POSTGAP 是在該軌段後硬性加入一段空白時間(數據全爲0),常用於刻錄中,Foobar2000 不支持。
  2、POSTGAP 是在軌段後插入真實數據,而 INDEX 00 只是跳過軌段內部的一段數據,因此兩者不同。
  3、POSTGAP 可以文件的第一個 TRACK 中,而 INDEX 00 不可以。
  比如:
TRACK 01 AUDIO
INDEX 0100:00:00
POSTGAP 00:02:00
  注意:
  1、每個 TRACK 命令內最多隻能有一條 POSTGAP 命令。
  2、POSTGAP 必須位於所有 INDEX 命令之後。
----------------------------------------------------------------------------------------------------
TITLE、SONGWRITER、PERFORMER 命令
  用於描述每條數據軌段的信息,用法參考 Header 部分。
  注意:
  1、在數據軌描述表內,這3條命令必須在 TRACK 命令後使用。
-----------------------------------------------------------
ISRC 命令
  該命令指定數據軌的 ISRC 碼(參考百度百科)。格式爲:
ISRC <isrc-code>
  例如 NightWish 的《Imaginearum》專輯裏第1軌:
ISRC FI3SN1100001
  注意:
  1、該命令是單軌信息部分,必須出現在 TRACK 命令後面,且每軌只能有一條 ISRC 命令。
  2、<isrc-code> 可以並建議用半角雙引號引起來。
----------------------------------------------------------------------------------------------------
FALGS 命令
  該命令指定數據軌的 SUBCODES,用於刻錄中。格式爲:
FLAGS <subcodes>
  可用 SUBCODES 如下:

<subcode> 說明
DCP 允許數位複製。
PRE 允許預加重。
4CH 四聲道音訊。
SCMS 連續複製管理系統。
  例如 Bandari 的《Emerald Valley》專輯裏第1軌:
FLAGS DCP
  注意:
  1、該命令是單軌信息部分,必須出現在 TRACK 命令後面,且每軌只能有一條 FLAGS 命令。
  2、FLAGS 命令一次可以指定多條 subcode。
----------------------------------------------------------------------------------------------------
REM 命令
REM 命令在頭部信息中已經描述過,此處對其擴展命令的用法進行補充說明,只用於 TRACK 命令中。格式爲:

REM REPLAYGAIN_TRACK_GAIN +/- *.** dB這個命令用於指定音軌的增益回放信息,用於提高/降低音量。例如Groove Coverage的《21st Century》第02軌:REM REPLAYGAIN_TRACK_GAIN -10.22 dB
REM REPLAYGAIN_TRACK_PEAK *.******這個命令用於指定音軌的增益回放信息,指定音軌峯值。例如Groove Coverage的《21st Century》第02軌:REM REPLAYGAIN_TRACK_PEAK 0.977142

----------------------------------------------------------------------------------------------------
==========================================================================================

三、範例解析

實例1:(此處 /**/ 表示我的註釋,注意 “/**/” 並非CUE內容

PERFORMER "Nightwish"/* 指定音樂光盤作者 */
TITLE "Nemo, CDS,Normal Version"/* 指定光盤標題 */
REM GENRE "HeavyMetal"/* 音樂分類 */
REM DATE 2004/* 發行年份 */
REM DISCID 3F054305/* 光盤 DISCID 編碼 */
REM COMMENT "ExactAudioCopyv0.99pb4"/* CUE 生成信息 */
FILE "Nightwish -Nemo, CDS, Normal Version.ape" WAVE /* FILE 命令,指定音樂文件 */
TRACK 01 AUDIO /* 第一個音軌 */
TITLE "Nemo (From The Album 'Once')"/* 音軌標題 */
PERFORMER "Nightwish"/* 音樂演唱者 */
INDEX 0100:00:00/* 第一軌 INDEX 01 必須從 00:00:00 開始 */
TRACK 02 AUDIO /* 第二個音軌 */
TITLE "Planet Hell(From The Album 'Once')"/* 音軌標題 */
PERFORMER "Nightwish"/* 音樂演唱者 */
REM REPLAYGAIN_TRACK_GAIN -8.32 dB /* 音樂增益回放信息 */
REM REPLAYGAIN_TRACK_PEAK 0.977234/* 音樂增益回放信息 */
INDEX 0004:29:03/* 跳過兩軌間的空檔 */
INDEX 0104:29:04/* 第二個音軌的起點 */

實例2:

TITLE "Imaginaerum"
PERFORMER "Nightwish"
REM GENRE "SymphonicMetal"
REM DATE 2011
REM DISCID BA118E0D
REM COMMENT "ExactAudioCopyv1.0b3"
FILE "01 -Taikatalvi.flac"WAVE /* 第一個文件 */
TRACK 01 AUDIO /* 只有一個 TRACK */
TITLE "Taikatalvi"
PERFORMER "Nightwish"
REM REPLAYGAIN_TRACK_GAIN -5.14 dB
REM REPLAYGAIN_TRACK_PEAK 0.977142
ISRC FI3SN1100001 /* 指定音軌的 ISRC 編號 */
INDEX 0100:00:00/* 每個文件第一個 TRACK 的 INDEX 01 必須從 00:00:00 開始,且不能有 INDEX 00*/
FILE "02 -Storytime.flac" WAVE /* 第二個文件 */
TRACK 02 AUDIO /* 只有一個 TRACK */
TITLE "Storytime"
PERFORMER "Nightwish"
ISRC FI3SN1100002 /* 指定音軌的 ISRC 編號 */
INDEX 0100:00:00/* 每個文件第一個 TRACK 的 INDEX 01 必須從 00:00:00 開始,且不能有 INDEX 00*/

實例3:

TITLE "Example"
PERFORMER "Unknown"
FILE "exp1.wav" WAVE /* 第一個文件 */
TRACK 01 AUDIO /* 文件的第一個音軌 */
TITLE "Track 01"
INDEX 0100:00:00
TRACK 02 AUDIO /* 文件的第二個音軌 */
TITLE "Track 02"
INDEX 0000:04:49/* 跳過其中 7s 空白*/
INDEX 0100:04:56
FILE"exp2.wav" WAVE /* 第二個文件 */
TRACK 03 AUDIO /* 文件的第一個音軌 */
TITLE "Track 03"
INDEX 0100:00:00

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章