読み込みのときは READ CD (MSF) コマンドで読み取る部分をいちいち指定したのですが、 書き込む際には送るデータブロックの形式を、これで先に指定しておきます。
Data Block Type | 1セクタあたりに 必要なバイト数 | 内容 |
0 | 2352 | メインチャンネルのRAWデータ 2352 バイトのみ |
1 | 2368 | メインチャンネルのRAWデータ 2352 バイト + 16 バイトのP-Qサブチャネルデータ |
2 | 2448 | メインチャンネルのRAWデータ 2352 バイト + 96 バイトのP-Wサブチャネルデータ (packed) |
3 | 2448 | メインチャンネルのRAWデータ 2352 バイト + 96 バイトの生(RAW)のP-Wサブチャネルデータ |
8 | 2048 | Mode1 2048 バイトのユーザーデータのみ |
9 | 2336 | Mode2 2336 バイトのユーザーデータのみ |
10 | 2048 | Mode2 Form1 2048 バイトのユーザーデータのみ サブヘッダには同時に指定する Sub-header Byte 0〜3 の値を使用します。 |
11 | 2056 | Mode2 Form1 サブヘッダ 8 バイト + 2048バイトのユーザーデータ |
12 | 2324 | Mode2 Form2 2324 バイトのユーザーデータのみ サブヘッダには同時に指定する Sub-header Byte 0〜3 の値を使用します。 |
13 | 2332 | Mode2 Form2 サブヘッダ 8 バイト + 2332 バイトのユーザーデータ |
Write Type に 0x03 (RAW) を指定した場合は、 Data Block Type に 1 か 3 を選択し、Write (10) コマンドで メインチャネルとサブチャネルのデータを一緒に(つなげて)送ります。
Write Type に 0x02 (Session At Once) を指定した場合は、 Data Block Type に 0 もしくは 8〜13 を選択します。 これは、SEND CUE SHEET コマンドで指定したデータトラックに適用されます。 8〜13 を選択した場合は 同期信号やヘッダ、CRC (EDC) や P parity、Q parity などを自動的に計算して 書き込んでくれます。 音楽トラックでは1セクタあたりの大きさは 2324 で一定なので、 ミックスCDを作ろうという場合にはトラック毎に送るデータ量に注意してください。 音楽トラックばかりの場合や、キューシートの内容が MODE1/2352 のような 場合には、Data Block Type に 0 を選択します。
これを書いていて、RAW+96(Packed) を一度も試したことが無いことに気付いた…。