# 39.1. `al` --- SGIのオーディオ機能

バージョン 2.6 で非推奨: `al` モジュールは Python 3 で削除されました。

このモジュールを使うと、SGI Indy と Indigo ワークステーションのオーディオ装置にアクセスできます。詳しくは IRIX の man ページのセクション 3A を参照してください。ここに書かれた関数が何をするかを理解するには、man ページを読む必要があります！ IRIX のリリース 4.0.5 より前のものでは使えない関数もあります。お使いのプラットフォームで特定の関数が使えるかどうか、マニュアルで確認してください。

このモジュールで定義された関数とメソッドは全て、名前に `AL` の接頭辞を付けた C の関数と同義です。

C のヘッダーファイル `<audio.h>` のシンボル定数は標準モジュール `AL` に定義されています。下記を参照してください。

警告

オーディオライブラリの現在のバージョンは、不正な引数が渡されるとエラーステイタスが返るのではなく、coreを吐き出すことがあります。残念ながら、この現象が確実に起こる環境は述べられていないし、確認することは難しいので、 Python インターフェースでこの種の問題に対して防御することはできません。（一つの例は過大なキューサイズを特定することです --- 上限については記載されていません。）

このモジュールには、以下の関数が定義されています:

`al.``openport`(name, direction[, config])

  引数 name と direction は文字列です。省略可能な引数 config は、 `newconfig()` で返されるコンフィギュレーションオブジェクトです。返り値は audio port object です；オーディオポートオブジェクトのメソッドは下に書かれています。

`al.``newconfig`()

  返り値は新しい audio configuration object です；オーディオコンフィギュレーションオブジェクトのメソッドは下に書かれています。

`al.``queryparams`(device)

  引数 device は整数です。返り値は `ALqueryparams()` で返されるデータを含む整数のリストです。

`al.``getparams`(device, list)

  引数 device は整数です。引数 list は `queryparams()` で返されるようなリストです； `queryparams()` を適切に（！）修正して使うことができます。

`al.``setparams`(device, list)

  引数 device は整数です。引数 list は `queryparams()` で返されるようなリストです。

## 39.1.1. コンフィギュレーションオブジェクト

`newconfig()` で返されるコンフィギュレーションオブジェクトには以下のメソッドがあります：

`audio configuration.getqueuesize()`

  キューサイズを返します。

`audio configuration.setqueuesize(size)`

  キューサイズを設定します。

`audio configuration.getwidth()`

  サンプルサイズを返します。

`audio configuration.setwidth(width)`

  サンプルサイズを設定します。

`audio configuration.getchannels()`

  チャンネル数を返します。

`audio configuration.setchannels(nchannels)`

  チャンネル数を設定します。

`audio configuration.getsampfmt()`

  サンプルのフォーマットを返します。

`audio configuration.setsampfmt(sampfmt)`

  サンプルのフォーマットを設定します。

`audio configuration.getfloatmax()`

  浮動小数点数でサンプルデータの最大値を返します。

`audio configuration.setfloatmax(floatmax)`

  浮動小数点数でサンプルデータの最大値を設定します。

## 39.1.2. ポートオブジェクト

`openport()` で返されるポートオブジェクトには以下のメソッドがあります：

`audio port.closeport()`

  ポートを閉じます。

`audio port.getfd()`

  ファイルデスクリプタを整数で返します。

`audio port.getfilled()`

  バッファに存在するサンプルの数を返します。

`audio port.getfillable()`

  バッファの空きに入れることのできるサンプルの数を返します。

`audio port.readsamps(nsamples)`

  必要ならブロックして、キューから指定のサンプル数を読み込みます。生データを文字列として（例えば、サンプルサイズが 2 バイトならサンプル当たり 2 バイトが big-endian (high byte、low byte) で）返します。

`audio port.writesamps(samples)`

  必要ならブロックして、キューにサンプルを書き込みます。サンプルは `readsamps()` で返される値のようにエンコードされていなければなりません。

`audio port.getfillpoint()`

  'fill point' を返します。

`audio port.setfillpoint(fillpoint)`

  'fill point' を設定します。

`audio port.getconfig()`

  現在のポートのコンフィギュレーションを含んだコンフィギュレーションオブジェクトを返します。

`audio port.setconfig(config)`

  コンフィギュレーションを引数に取り、そのコンフィギュレーションに設定します。

`audio port.getstatus(list)`

  最後のエラーについてのステイタスの情報を返します。

# 39.2. `AL` --- `al` モジュールで使われる定数

バージョン 2.6 で非推奨: `AL` モジュールは Python 3 で削除されました。

このモジュールには、組み込みモジュール `al` (上記参照) を使用するのに必要とされるシンボリック定数が定義されています。定数の名前は C の include ファイル `<audioio.h>` で接頭辞 `AL_` を除いたものと同じです。定義されている名前の完全なリストについてはモジュールのソースを参照してください。お勧めの使い方は以下の通りです：

    import al
    from AL import *