# 20.3 `cd` -- SGIシステムのCD-ROMへのアクセス

利用可能な条件: IRIX.

このモジュールはSilicon Graphics CD ライブラリへのインターフェースを提供 します。 Silicon Graphics システムだけで利用可能です。

ライブラリは以下のように使われます。

CD-ROMデバイスを`open()`で開き、 `createparser()`でCDからデータをパースするためのパーザを作りま す。 `open()`で返されるオブジェクトはCDからデータを読み込むのに使わ れますが、CD-ROMデバイスのステータス情報や、CDの情報、たとえば目次などを 得るのにも使われます。 CDから得たデータはパーザに渡され、パーザはフレームをパースし、あらかじめ 加えられたコールバック関数を呼び出します。

オーディオCDはトラックtracksあるいはプログラムprograms（同じ 意味で、どちらかの用語が使われます）に分けられます。 トラックはさらにインデックスindicesに分けられます。 オーディオCDは、CD上の各トラックのスタート位置を示す 目次table of contentsを持っています。 インデックス0は普通、トラックの始まりの前のポーズです。 目次から得られるトラックのスタート位置は通常、インデックス1のスタート位 置です。

CD上の位置は2通りの方法で得ることができます。 それはフレームナンバーと、分、秒、フレームの3つの値からなるタプ ルの2つです。 ほとんどの関数は後者を使います。 位置はCDの開始位置とトラックの開始位置の両方に相対的になります。

モジュール`cd`は、以下の関数と定数を定義しています：

`createparser`( | )

  不透明なパーザオブジェクトを作って返します。 パーザオブジェクトのメソッドは下に記載されています。

`msftoframe`( | minutes, seconds, frames)

  絶対的なタイムコードである`(minutes, seconds, frames)`の3つ組の表現を、相当するCDのフレームナンバーに変換しま す。

`open`( | [device[, mode]])

  CD-ROMデバイスを開きます。 不透明なプレーヤーオブジェクトを返します； プレーヤーオブジェクトのメソッドは下に記載されています。 デバイスdeviceはSCSIデバイスファイルの名前で、例えば `'/dev/scsi/sc0d4l0'`あるいは`None`です。 もし省略したり、`None`なら、ハードウエアが検索されてCD-ROMデバイス を割り当てます。 modeは、省略しないなら`'r'`にすべきです。

このモジュールでは以下の変数を定義しています：

exception `error`
  様々なエラーについて発生する例外です。

`DATASIZE`
  オーディオデータの1フレームのサイズです。 これは`audio`タイプのコールバックへ渡されるオーディオデータのサイ ズです。

`BLOCKSIZE`
  オーディオデータが読み取られていないフレーム1つのサイズです。

以下の変数は`getstatus()`で返されるステータス情報です：

`READY`
  オーディオCDがロードされて、ドライブが操作可能であることを示します。

`NODISC`
  ドライブにCDがロードされていないことを示します。

`CDROM`
  ドライブにCD-ROMがロードされていることを示します。 続いてplayあるいはreadの操作をすると、I/Oエラーを返します。

`ERROR`
  ディスクや目次を読み込もうとしているときに起こるエラー。

`PLAYING`
  ドライブがオーディオCDをCDプレーヤーモードでオーディオ端子から再生 していることを示します。

`PAUSED`
  ドライブがCDプレーヤーモードで、再生を一時停止していることを示します。

`STILL`
  `PAUSED`と同じですが、古いモデル（non 3301）である Toshiba CD-ROMドライブのものです。 このドライブはもうSGIから出荷されていません。

`audio`
`pnum`
`index`
`ptime`
`atime`
`catalog`
`ident`
`control`
  これらは整数の定数で、パーザのいろいろなタイプのコールバックを示していま す。コールバックはCDパーザオブジェクトの`addcallback()`で設定でき ます（下記参照）。