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 "Michelle Jackson"
注意:
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]
[REM REPLAYGAIN_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 - Niki Nana (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 01 00:00:00
REM 每個文件的第一個 TRACK 不能有 INDEX 00,其 INDEX 01 必須為 00:00:00。
TRACK 02 AUDIO
INDEX 00 00:05:00
REM 此處跳過 50s 的空檔,直接到 05:50 繼續播放。
REM 因為 INDEX 01 才是 TRACK 02 的開始,所以 INDEX 00 可以
REM 看作是 TRACK 01 的有效結束時間。
INDEX 01 00: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 01 00: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 01 00: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 |
=====================================================
三、范例解析
