39.3。 CD —SGIシステムでのCD-ROMアクセス
バージョン2.6以降非推奨: cd モジュールはPython3で削除されました。
このモジュールは、Silicon GraphicsCDライブラリへのインターフェイスを提供します。 シリコングラフィックスシステムでのみ使用できます。
ライブラリの動作は次のとおりです。 プログラムは、 open()を使用してCD-ROMデバイスを開き、 createparser()を使用してCDからデータを解析するパーサーを作成します。 open()によって返されるオブジェクトは、CDからデータを読み取るだけでなく、CD-ROMデバイスのステータス情報を取得したり、目次などのCDに関する情報を取得したりするためにも使用できます。 。 CDからのデータはパーサーに渡され、パーサーはフレームを解析し、以前に追加されたコールバック関数を呼び出します。
オーディオCDは、トラックまたはプログラムに分割されます(これらの用語は同じ意味で使用されます)。 トラックはインデックスに分割できます。 オーディオCDには、CDのトラックの開始を示す目次が含まれています。 インデックス0は通常、トラックの開始前の一時停止です。 目次に示されているトラックの開始は、通常、インデックス1の開始です。
CD上の位置は、2つの方法で表すことができます。 フレーム番号、または3つの値、分、秒、フレームのタプル。 ほとんどの関数は後者の表現を使用します。 位置は、CDの先頭とトラックの先頭の両方を基準にすることができます。
モジュール cd は、次の関数と定数を定義します。
- cd.createparser()
- 不透明なパーサーオブジェクトを作成して返します。 パーサーオブジェクトのメソッドを以下に説明します。
- cd.msftoframe(minutes, seconds, frames)
- 絶対時間コードで時間を表す
(minutes, seconds, frames)
トリプルを対応するCDフレーム番号に変換します。
- cd.open([device[, mode]])
- CD-ROMデバイスを開きます。 戻り値は不透明なプレーヤーオブジェクトです。 プレイヤーオブジェクトのメソッドを以下に説明します。 デバイスは、SCSIデバイスファイルの名前です。例:
'/dev/scsi/sc0d4l0'
、またはNone
。 省略またはNone
の場合、ハードウェアインベントリを参照してCD-ROMドライブを見つけます。 モードは、省略しない場合は、文字列'r'
にする必要があります。
このモジュールは、次の変数を定義します。
- exception cd.error
- さまざまなエラーで例外が発生しました。
- cd.DATASIZE
- 1フレーム分のオーディオデータのサイズ。 これは、タイプ
audio
のコールバックに渡されるオーディオデータのサイズです。
- cd.BLOCKSIZE
- オーディオデータの1つの解釈されていないフレームのサイズ。
次の変数は、getstatus()
によって返される状態です。
- cd.READY
- ドライブは、オーディオCDがロードされた操作の準備ができています。
- cd.NODISC
- ドライブにCDがロードされていません。
- cd.CDROM
- ドライブにはCD-ROMがロードされています。 後続の再生または読み取り操作は、I / Oエラーを返します。
- cd.ERROR
- ディスクまたはその目次を読み取ろうとしたときにエラーが発生しました。
- cd.PLAYING
- ドライブはCDプレーヤーモードで、オーディオジャックを介してオーディオCDを再生します。
- cd.PAUSED
- ドライブはCDレイヤーモードで、再生が一時停止しています。
- cd.STILL
- 古い(3301以外の)モデルの東芝CD-ROMドライブの PAUSED に相当します。 このようなドライブは、SGIによって出荷されたことはありません。
- cd.audio
cd.pnum
cd.index
cd.ptime
cd.atime
cd.catalog
cd.ident
cd.control
- CDパーサーオブジェクトの
addcallback()
メソッドによって設定できるさまざまなタイプのパーサーコールバックを記述する整数定数(以下を参照)。
39.3.1。 プレイヤーオブジェクト
プレーヤーオブジェクト( open()によって返される)には、次のメソッドがあります。
- CD player.allowremoval()
- CD-ROMドライブのイジェクトボタンのロックを解除して、ユーザーが必要に応じてキャディをイジェクトできるようにします。
- CD player.bestreadsize()
readda()
メソッドの num_frames パラメーターに使用するのに最適な値を返します。 最良とは、CD-ROMドライブからのデータの連続的な流れを可能にする値として定義されます。
- CD player.close()
- プレーヤーオブジェクトに関連付けられているリソースを解放します。
close()
を呼び出した後、オブジェクトのメソッドは使用されなくなります。
- CD player.eject()
- CD-ROMドライブからキャディを取り出します。
- CD player.getstatus()
- CD-ROMドライブの現在の状態に関する情報を返します。 返される情報は、 state 、 track 、 rtime 、 atime 、 ttime の値を持つタプルです。 、最初の、最後の、 scsi_audio 、 cur_block 。 rtime は、現在のトラックの開始を基準にした時間です。 atime は、ディスクの先頭を基準にした時間です。 ttime は、ディスクの合計時間です。 値の意味の詳細については、manページ CDgetstatus(3dm)を参照してください。 state の値は、 ERROR 、 NODISC 、 READY 、 PLAYING 、のいずれかです。 ] PAUSED 、 STILL 、または CDROM 。
- CD player.gettrackinfo(track)
- 指定されたトラックに関する情報を返します。 返される情報は、トラックの開始時間とトラックの長さの2つの要素で構成されるタプルです。
- CD player.msftoblock(min, sec, frame)
- 絶対時間コードで時間を表す分、秒、フレームのトリプルを、指定されたCD-ROMドライブの対応する論理ブロック番号に変換します。 時間の比較には、
msftoblock()
ではなく msftoframe()を使用する必要があります。 論理ブロック番号は、特定のCD-ROMドライブに必要なオフセットがフレーム番号と異なります。
- CD player.play(start, play)
- 指定したトラックのCD-ROMドライブのオーディオCDの再生を開始します。 オーディオ出力は、CD-ROMドライブのヘッドフォンとオーディオジャック(取り付けられている場合)に表示されます。 ディスクの終わりで再生が停止します。 start は、CDの再生を開始するトラックの番号です。 play が0の場合、CDは初期一時停止状態に設定されます。 次に、メソッド
togglepause()
を使用してプレイを開始できます。
- CD player.playabs(minutes, seconds, frames, play)
play()
と同様ですが、開始がトラック番号ではなく分、秒、フレームで指定される点が異なります。
- CD player.playtrack(start, play)
play()
と同様ですが、トラックの最後で再生が停止する点が異なります。
- CD player.playtrackabs(track, minutes, seconds, frames, play)
play()
と同様ですが、再生は指定された絶対時間に開始され、指定されたトラックの終わりに終了する点が異なります。
- CD player.preventremoval()
- CD-ROMドライブのイジェクトボタンをロックして、ユーザーがキャディを任意にイジェクトできないようにします。
- CD player.readda(num_frames)
- CD-ROMドライブにマウントされたオーディオCDから指定されたフレーム数を読み取ります。 戻り値は、オーディオフレームを表す文字列です。 この文字列は、パーサーオブジェクトの
parseframe()
メソッドに変更せずに渡すことができます。
- CD player.seek(minutes, seconds, frames)
- CD-ROMからのデジタルオーディオデータの次の読み取りの開始点を示すポインタを設定します。 ポインタは、分、秒、およびフレームで指定された絶対時間コードの場所に設定されます。 戻り値は、ポインタが設定されている論理ブロック番号です。
- CD player.seekblock(block)
- CD-ROMからのデジタルオーディオデータの次の読み取りの開始点を示すポインタを設定します。 ポインタは指定された論理ブロック番号に設定されます。 戻り値は、ポインタが設定されている論理ブロック番号です。
- CD player.seektrack(track)
- CD-ROMからのデジタルオーディオデータの次の読み取りの開始点を示すポインタを設定します。 ポインタは指定されたトラックに設定されます。 戻り値は、ポインタが設定されている論理ブロック番号です。
- CD player.stop()
- 現在の再生操作を停止します。
- CD player.togglepause()
- CDが再生中の場合は一時停止し、一時停止中の場合は再生します。
39.3.2。 パーサーオブジェクト
パーサーオブジェクト( createparser()によって返される)には、次のメソッドがあります。
- CD parser.addcallback(type, func, arg)
パーサーのコールバックを追加します。 パーサーには、デジタルオーディオデータストリーム内の8つの異なるタイプのデータに対するコールバックがあります。 これらのタイプの定数は、 cd モジュールレベルで定義されます(上記を参照)。 コールバックは次のように呼び出されます:
func(arg, type, data)
、ここで arg はユーザー指定の引数、 type は特定のタイプのコールバック、 data この type のコールバックに対して返されるデータです。 データのタイプは、次のようにコールバックの type によって異なります。タイプ
価値
audio
al.writesamps()
に変更せずに渡すことができる文字列。pnum
プログラム(トラック)番号を与える整数。
index
インデックス番号を与える整数。
ptime
分、秒、およびフレーム単位のプログラム時間で構成されるタプル。
atime
分、秒、およびフレーム単位の絶対時間で構成されるタプル。
catalog
CDのカタログ番号を示す13文字の文字列。
ident
録音のISRC識別番号を示す12文字の文字列。 文字列は、国コード2文字、所有者コード3文字、年を表す2文字、およびシリアル番号を表す5文字で構成されます。
control
CDサブコードデータからの制御ビットを与える整数
- CD parser.deleteparser()
- パーサーを削除し、使用していたメモリを解放します。 この呼び出しの後、オブジェクトを使用しないでください。 この呼び出しは、オブジェクトへの最後の参照が削除されたときに自動的に行われます。
- CD parser.parseframe(frame)
readda()
によって返されるようなCDからのデジタルオーディオデータの1つ以上のフレームを解析します。 データに存在するサブコードを判別します。 これらのサブコードが最後のフレーム以降に変更された場合、parseframe()
は適切なタイプのコールバックを実行し、フレームで見つかったサブコードデータを渡します。 C関数とは異なり、このメソッドには複数のフレームのデジタルオーディオデータを渡すことができます。
- CD parser.removecallback(type)
- 指定されたタイプのコールバックを削除します。
- CD parser.resetparser()
- サブコードの追跡に使用されるパーサーのフィールドを初期状態にリセットします。
resetparser()
は、ディスクを交換した後に呼び出す必要があります。