GNU/Linux上のサウンドシステムについて(後半)
「GNU/Linux上のサウンドシステムについて(前半)」の続き。
サウンドデーモン(実際)
以下の各サウンドデーモンにはデーモン本体の他にライブラリが存在し、対応アプリケーションからそのサウンドシステム(デーモン)にアクセスする方法を提供する。
PulseAudio
PulseAudioは汎用のサウンドデーモンで、2009年11月現在、多くのディストリで採用されている。GNOMEで用いられていたesdの置き換え*1として用いられた時期もあるが、その後GNOMEでも標準となり、KDEでもバージョン4では後述のPhononからバックエンド経由で出力先として使用でき、色々な環境で広く使われるようになった。
出力先(sink)や入力元(source)、各種追加機能などはモジュールの形で提供され、この設定もモジュール読み込みの記述という形で行う。
モジュールに関する設定は${HOME}/.pulse/default.pa(システム設定は/etc/pulse/default.pa)、デーモンの動作に関する設定は${HOME}/.pulse/daemon.conf(システム設定は/etc/pulse/daemon.conf)で行う。これ以外にも設定ファイルは存在する。
動作中はpadevchooser*2やpavucontrol*3、paman*4といったツールによる制御や情報取得などができる。
JACK Audio Connection Kit
JACKは低遅延なのに加え、複数アプリケーションの演奏位置同期(JACKトランスポート)*5や音飛びチェックなどの機能も持ち、オーディオの作成用途に特化している。
バージョン1系(0.1xx.x)と2系(1.9.x)とがあり、2009年11月の時点ではバージョン1系が広く使われているが、jackdmp(www.grame.fr/~letz/jackdmp.html)という新しい実装をもとにこの複製からバージョン2系の開発が開始されていて、Mac OS XやWindowsでも動作するものとなっている。
QjackctlというGUIがよく用いられ、ポートの接続/切断やJACKトランスポートの制御などの機能も持つ。
「JACK Audio Connection Kit」という名の通り、アプリケーション内の出力ポートを別のアプリケーションの入力ポートと「接続」してオーディオデータを渡す形を基本とする。
ALSA上のMIDIデバイスがJACK上のMIDIデバイスとして利用可能(jackdデーモンの-Xオプション)だが、JACK上のMIDIデバイスのみを提供するJACKアプリケーションもある。
音声データの橋渡し的なシステム
OSSサウンドシステム向けのアプリケーションを別のサウンドシステムで実行するツール(OSSラッパー)
aossはOSS向けアプリケーションの音声をALSAサウンドシステム上で出力するのに用いられる。
padspはOSS向けアプリケーションの音声をPulseAudio上で出力するのに用いられる。
サウンドシステムを橋渡しするプラグイン/モジュール
ALSAには(ALSAサウンドシステム向けアプリケーションから)JACK Audio Connection KitやPulseAudioへ音声を出力するためのプラグインが存在する(「ALSA PCMデバイスとしてJACK Audio Connection Kitを使用」や「Wine上の音声をPulseAudioへ渡す」を参照)。
PulseAudioは音声の出力先(sinkモジュール)にALSAやOSSのような低レベルなサウンドシステムだけでなく、JACK Audio Connection Kitを用いることができる(JACKからの取り込みも可)。これは、JACKのデーモンが動いているときにPulseAudioを用いたいときに便利だが、あまり安定していない(よく落ちる)印象がある。
関連記事: