40.1. sunaudiodev — Sunオーディオハードウェアへのアクセス—Pythonドキュメント

提供:Dev Guides
< PythonPython/docs/2.7/library/sunaudio
移動先:案内検索

40.1。 sunaudiodev —Sunオーディオハードウェアへのアクセス

バージョン2.6以降非推奨: sunaudiodev モジュールはPython3で削除されました。


このモジュールを使用すると、Sunオーディオインターフェイスにアクセスできます。 Sunオーディオハードウェアは、8K /秒のサンプルレートでu-LAW形式のオーディオデータを録音および再生できます。 詳細な説明は、 audio(7I)のマニュアルページにあります。

モジュール SUNAUDIODEV は、このモジュールで使用できる定数を定義します。

このモジュールは、次の変数と関数を定義します。

exception sunaudiodev.error
この例外は、すべてのエラーで発生します。 引数は、何が悪かったのかを説明する文字列です。
sunaudiodev.open(mode)

この関数はオーディオデバイスを開き、Sunオーディオデバイスオブジェクトを返します。 このオブジェクトを使用して、I / Oを実行できます。 mode パラメーターは、レコードのみのアクセスの場合は'r'、再生のみのアクセスの場合は'w'、両方の場合は'rw''control'のいずれかです。 ]制御装置へのアクセス用。 レコーダーまたはプレーヤーを同時に開くことができるプロセスは1つだけなので、必要なアクティビティのためだけにデバイスを開くことをお勧めします。 詳細については、 audio(7I)を参照してください。

マンページに従って、このモジュールは最初に環境変数AUDIODEVでベースオーディオデバイスのファイル名を探します。 見つからない場合は、/dev/audioにフォールバックします。 制御デバイスは、ベースオーディオデバイスに「ctl」を追加することによって計算されます。

40.1.1。 オーディオデバイスオブジェクト

オーディオデバイスオブジェクトは、 open()によって返され、次のメソッドを定義します(getinfo()setinfo()、 [のみを提供するcontrolオブジェクトを除く) X157X]、およびdrain()):

audio device.close()
このメソッドは、デバイスを明示的に閉じます。 オブジェクトへの他の参照があるため、オブジェクトを削除してもすぐには閉じない場合に便利です。 閉じたデバイスを再度使用しないでください。
audio device.fileno()
デバイスに関連付けられているファイル記述子を返します。 これは、以下で説明するように、SIGPOLL通知を設定するために使用できます。
audio device.drain()
このメソッドは、保留中のすべての出力が処理されるまで待機してから戻ります。 多くの場合、このメソッドを呼び出す必要はありません。オブジェクトを破棄すると、オーディオデバイスが自動的に閉じられ、暗黙的にドレインされます。
audio device.flush()
このメソッドは、保留中の出力をすべて破棄します。 これは、ユーザーの停止要求への応答が遅いことを回避するために使用できます(最大1秒のサウンドのバッファリングによる)。
audio device.getinfo()
このメソッドは、入力および出力ボリュームなどのステータス情報を取得します。 オーディオステータスオブジェクトの形式で返します。 このオブジェクトにはメソッドはありませんが、現在のデバイスステータスを説明するいくつかの属性が含まれています。 属性の名前と意味は、<sun/audioio.h>および audio(7I)のマニュアルページに記載されています。 メンバー名は、対応するCのメンバー名とは少し異なります。ステータスオブジェクトは単一の構造体にすぎません。 playサブ構造のメンバーには、名前の前にo_が付加され、record構造のメンバーにはi_が付加されます。 したがって、Cメンバーplay.sample_rateは、o_sample_raterecord.gaini_gainmonitor_gainmonitor_gainとしてアクセスされます。
audio device.ibufcount()
このメソッドは、記録側でバッファリングされているサンプルの数を返します。 プログラムは、非常に多くのサンプルのread()呼び出しでブロックしません。
audio device.obufcount()
このメソッドは、再生側でバッファリングされたサンプルの数を返します。 残念ながら、カーネル出力キューの長さは可変であるように思われるため、この数を使用して、ブロックせずに書き込むことができるサンプルの数を決定することはできません。
audio device.read(size)
このメソッドは、オーディオ入力から size サンプルを読み取り、それらをPython文字列として返します。 この関数は、十分なデータが利用可能になるまでブロックします。
audio device.setinfo(status)
このメソッドは、オーディオデバイスのステータスパラメータを設定します。 status パラメータは、getinfo()によって返され、プログラムによって変更される可能性のあるデバイスステータスオブジェクトです。
audio device.write(samples)
Writeには、再生するオーディオサンプルを含むPython文字列が渡されます。 十分な空きバッファスペースがある場合はすぐに戻り、そうでない場合はブロックされます。

オーディオデバイスは、SIGPOLL信号を介したさまざまなイベントの非同期通知をサポートしています。 Pythonでこれを有効にする方法の例を次に示します。

def handle_sigpoll(signum, frame):
    print 'I got a SIGPOLL update'

import fcntl, signal, STROPTS

signal.signal(signal.SIGPOLL, handle_sigpoll)
fcntl.ioctl(audio_obj.fileno(), STROPTS.I_SETSIG, STROPTS.S_MSG)

40.2。 SUNAUDIODEV —で使用される定数 sunaudiodev

バージョン2.6以降非推奨: SUNAUDIODEV モジュールはPython3で削除されました。


これは、 sunaudiodev のコンパニオンモジュールであり、MIN_GAINMAX_GAINSPEAKERなどの便利なシンボリック定数を定義します。 定数の名前は、Cインクルードファイル<sun/audioio.h>で使用されている名前と同じですが、先頭の文字列AUDIO_が削除されています。