##
14.11.2 ミキサーデバイスオブジェクト

ミキサーオブジェクトは、2つのファイル風メソッドを提供します。

`close`( | )

  このメソッドは、開かれたミキサーデバイスファイルを閉じます。 ファイルを閉じた後でミキサーを使おうとすると、IOErrorを発生します。

`fileno`( | )

  開いたミキサーデバイスファイルのファイルハンドルナンバーを返します。

以下はオーディオミキシング固有のメソッドです。

`controls`( | )

  このメソッドは、利用可能なミキサーコントロールを指定するビットマスクを返 します (``コントロール''はミックス可能な特定の``チャンネル''で、たとえば `SOUND_MIXER_PCM`あるいは`SOUND_MIXER_SYNTH`です) 。 このビットマスクは全ての利用可能なミキサーコントロールのサブセットを示しま す --定数`SOUND_MIXER_*`はモジュールレベルで定義されています。 例えば、もし現在のミキサーオブジェクトがPCMミキサーをサポートしているか 調べるには、以下のPythonコードを実行します:

      if mixer.controls() & (1 << ossaudiodev.SOUND_MIXER_PCM):
          # PCM is supported
          ... code ...

  たいていの目的では、`SOUND_MIXER_VOLUME` (マスターボリューム) と`SOUND_MIXER_PCM`コントロールで十分です-- しかし、サウンドコントロールを選ぶときに、ミキサーを使用するコードはフレキ シブルでなければなりません。 例えば、Gravis Ultrasoundでは`SOUND_MIXER_VOLUME`は存在しませ ん。

`stereocontrols`( | )

  ステレオミキサーコントロールを示すビットマスクを返します。 もしビットがセットされていたら対応するコントロールはステレオで、もしセット されていないならそのコントロールはモノラルか、ミキサーでサポートされていな いかどちらかです (そのどちらかを調べるには`controls()`を組み合わ せて使います) 。

  ビットマスクのデータを得る例としては、関数`controls()`のコードの 例を参照してください。

`reccontrols`( | )

  録音に使用できるミキサーコントロールを特定するビットマスクを返します。 ビットマスクから読み取る例としては、`controls()`のコードの例を参 照してください。

`get`( | control)

  与えられたミキサーコントロールのボリュームを返します。 返される値は2要素のタプル`(left_volume,right_volume)`です。 ボリュームの値は0 (無音) から100 (最大) で示されます。 もしコントロールがモノラルでも2要素のタプルが返されますが、2つの要素の値は 同じになります。

  不正なコントロールを指定した場合は`OSSAudioError`が発生しま す。また、サポートされていないコントロールを指定した場合には `IOError`が発生します。

`set`( | control, (left, right))

  与えられたミキサーコントロールのボリュームを`(left,right)`に設定しま す。 `left`と`right`は整数で、0 (無音) から100 (最大) の間でなけれ ばなりません。 成功したら、新しいボリューム値が2要素のタプルで返されます。 あるサウンドカードではミキサーの分解能の限界のため、指定したボリューム値 と厳密には同じにならないかもしれません。

  不正なコントロールを指定するか、指定したボリューム値が範囲外なら `OSSAudioError`が発生します。

`get_recsrc`( | )

  このメソッドは、現在録音のソースとして使われているコントロールを示すビット マスクを返します。

`set_recsrc`( | bitmask)

  録音のソースを指定するのにこの関数を使います。 成功したら、新たな録音のソースを示すビットマスクを返します; 不正なソースが指定されたら`IOError`が発生します。 現在の録音のソースとしてマイク入力を設定する方法は以下の通りです:

      mixer.setrecsrc (1 << ossaudiodev.SOUND_MIXER_MIC)