オーディオデバイスに読み書きできるようになるには、まず 3 つのメソッドを正しい順序で呼び出さねばなりません:
open() の返すオーディオデバイスオブジェクトには以下のメ ソッドがあります:
) |
) |
size) |
data) |
data) |
以下のメソッドの各々は ioctl() システムコール
一つ一つに対応しています。対応関係ははっきりしています:
例えば、setfmt() は SNDCTL_DSP_SETFMT
ioctl
に対応していますし、sync() はSNDCTL_DSP_SYNC
に対応しています (このシンボル名は OSS のドキュメントを参照する
時に助けになるでしょう)。根底にある ioctl() が
失敗した場合、これらの関数は全て IOError を
送出します。
) |
) |
フォーマット | 説明 |
---|---|
AFMT_MU_LAW | 対数符号化 (Sun の .au 形式や
/dev/audio で使われている形式) |
AFMT_A_LAW | 対数符号化 |
AFMT_IMA_ADPCM | Interactive Multimedia Association で 定義されている 4:1 圧縮形式 |
AFMT_U8 | 符号なし 8 ビットオーディオ |
AFMT_S16_LE | 符号つき 16 ビットオーディオ、リトルエンディアン バイトオーダ (Intelプロセッサで使われている形式) |
AFMT_S16_BE | 符号つき16ビットオーディオ、ビッグエンディアン バイトオーダ (68k、PowerPC、Sparcで使われている形式) |
AFMT_S8 | 符号つき 8 ビットオーディオ |
AFMT_U16_LE | 符号なし 16 ビットリトルエンディアンオーディオ |
AFMT_U16_BE | 符号なし 16 ビットビッグエンディアンオーディオ |
ほとんどのシステムは、上記の形式のサブセットしかサポートしていません。 また、多くのデバイスが AFMT_U8 だけしかサポートしていません。 現在使われている最も一般的な形式はAFMT_S16_LEです。
format) |
num_channels) |
samplerate) |
レート | 説明 |
---|---|
8000 | /dev/audio のデフォルト |
11025 | 会話音声の録音に使われるレート |
22050 | |
44100 | (サンプルあたり 16 ビットで 2 チャネルの場合) CD 品質のオーディオ |
96000 | (サンプル当たり 24 ビットの場合) DVD 品質のオーディオ |
) |
) |
) |
以下のメソッドは、複数の ioctl を組み合わせたり、 ioctl と単純な計算を組み合わせたりした便宜用メソッドです。
format, nchannels, samplerate, [, strict=False]) |
主要なオーディオパラメタ、サンプル形式、チャネル数、サンプルレートを 一つのメソッド呼び出しで設定します。 format、nchannels および samplerate には、 それぞれsetfmt()、channels() および speed() と同じやり方で値を設定します。strict の値が真の場合、 setparameters() は値が実際に要求通りにデバイスに設定されたか どうか調べ、違っていれば OSSAudioError を送出します。 実際にデバイスドライバが設定したパラメタ値を表す (format, nchannels, samplerate) からなるタプルを 返します (setfmt()、channels() および speed() の返す値と同じです)。
以下に例を示します:
(fmt, channels, rate) = dsp.setparameters(fmt, channels, rate)
fmt = dsp.setfmt(fmt) channels = dsp.channels(channels) rate = dsp.rate(channels)
) |
) |
) |
ご意見やご指摘をお寄せになりたい方は、 このドキュメントについて... をご覧ください。