CD-R/W をセッションアットワンス方式で書き込む時には、
データ本体の転送する前に SEND CUE SHEET コマンドで
トラックの構造をドライブに送ります。
ユーザーはデータ本体のみを逐次転送すればよく、
リードイン、リードアウト、サブチャネル、
そして設定によってはメインチャネルのヘッダやエラー検出、修正コードなどは
SEND CUE SHEET コマンドで設定された内容にしたがって自動的に書き込まれます。
SEND CUE SHEET コマンドの CDB は次のとおりです。
BYTE\bit |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
0 | Operation Code = 0x5D |
1 | 予約 |
2 | 予約 |
3 | 予約 |
4 | 予約 |
5 | 予約 |
6 |
(MSB) |
Cue Sheet の大きさ [byte] |
(LSB) |
|
7 |
8 |
9 | Control |
SEND CUE SHEET コマンドで設定するトラックの構造は、
"せんべえ焼き" や "CD Manipularor" で使用する、
あのテキストファイルとして記述されメモ帳などで簡単に閲覧、編集できる
形式ではありません。
ドライブ側が判るように翻訳した形になります。
そのフォーマットは、一つが8バイトのブロックを順にならべたものです。
一つのブロックには、
トラックとインデックスの開始位置
MCN (Media Catalog Number、メディアカタログ番号)
ISRC (International Standard Recording Code、国際標準レコーディングコード)
のいづれかを記述します。
トラックとインデックスは順番に書き込みます。
MCN を書き込む場合には、全ブロックの一番先頭に置きます。
無ければ省略できます。
ISRC を書き込む場合には、そのトラックの先頭に置きます。
無ければ省略できます。
Byte No | 内容 | 注釈 |
0〜7 | MCN 1〜7 | |
8〜15 | MCN 8〜13 | |
16〜23 | Lead In (Track 0) | 必須 |
24〜31 | Track 1 ISRC 1〜6 | |
32〜39 | Track 1 ISRC 7〜12 | |
40〜47 | Track 1 Index 0 | 必須 |
48〜55 | Track 1 Index 1 | 必須 |
56〜63 | Track 2 ISRC 1〜6 | |
64〜71 | Track 2 ISRC 7〜12 | |
72〜79 | Track 2 Index 0 | |
80〜87 | Track 2 Index 1 | Track 2 があれば必須 |
・・・ | ・・・ | ・・・ |
8*(m-1)〜8*m-1 | Lead Out (Track AA) | 必須 |
トラック2以降のインデックス 0 はなければ省略できますが、
トラック1のインデックス 0 と全トラックのインデックス 1 は必要です。
いらないところは詰めてください。
1トラックのデータCDで、MCNが無い場合(データCDではISRCは無い)、
4ブロック32バイトのデータを送れば十分です。
ふと疑問に思ったのですが、
インデックス2以降は設定できるのでしょうか。
("せんべえ焼き"では .cueファイルの INDEX 2 以降を無視するため不可)
2006/09/18 修正
2006/09/19 修正
この記事へのトラックバック
32バイトではなく?
早速修正しました。
ご指摘、ありがとうございました。