試験運用中なLinux備忘録・旧記事

はてなダイアリーで公開していた2007年5月-2015年3月の記事を保存しています。

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*2pavucontrol*3paman*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 XWindowsでも動作するものとなっている。
QjackctlというGUIがよく用いられ、ポートの接続/切断やJACKトランスポートの制御などの機能も持つ。
「JACK Audio Connection Kit」という名の通り、アプリケーション内の出力ポートを別のアプリケーションの入力ポートと「接続」してオーディオデータを渡す形を基本とする。
ALSA上のMIDIバイスがJACK上のMIDIバイスとして利用可能(jackdデーモンの-Xオプション)だが、JACK上のMIDIバイスのみを提供するJACKアプリケーションもある。

音声データの橋渡し的なシステム

GStreamer

GStreamerは音声や映像の処理を行うプラグイン型システムで、コーデックに関する処理、コンテナ形式に関する処理、入出力に関する処理、出力先サウンドシステムに関する処理などが全て個別のプラグインという形で存在する。
入力データを段階を追って順に処理しながらプラグイン(要素)から次のプラグイン(要素)へどんどん渡していき、最終的には前半の低レベルサウンドシステムもしくは本記事の上で扱っているサウンドデーモンに渡すか、あるいはファイルに書き出すなどという流れで処理が行われる。

Phonon

PhononはKDE4で用いられるサウンドシステムで、特定のサウンドシステムに依存せずに、GStreamerやXineライブラリといったシステムをバックエンドとしてオーディオの処理を投げる。
出力先やバックエンドはKDEの「マルチメディア」設定から優先順位が指定でき、バックエンドシステムの優先順位指定もできる。

OSSサウンドシステム向けのアプリケーションを別のサウンドシステムで実行するツール(OSSラッパー)

aossOSS向けアプリケーションの音声をALSAサウンドシステム上で出力するのに用いられる。
padspOSS向けアプリケーションの音声をPulseAudio上で出力するのに用いられる。

サウンドシステムを橋渡しするプラグイン/モジュール

ALSAには(ALSAサウンドシステム向けアプリケーションから)JACK Audio Connection KitやPulseAudioへ音声を出力するためのプラグインが存在する(「ALSA PCMデバイスとしてJACK Audio Connection Kitを使用」や「Wine上の音声をPulseAudioへ渡す」を参照)。
PulseAudioは音声の出力先(sinkモジュール)にALSAOSSのような低レベルなサウンドシステムだけでなく、JACK Audio Connection Kitを用いることができる(JACKからの取り込みも可)。これは、JACKのデーモンが動いているときにPulseAudioを用いたいときに便利だが、あまり安定していない(よく落ちる)印象がある。

関連記事:

*1:ネイティブ動作モードの他にesdの互換モードが存在する

*2:システムトレイで動作するデバイス選択ツール

*3:音量調整ツール

*4:デーモンの各種情報参照と幾つかの操作

*5:各JACKアプリケーションでJACKトランスポートの設定を有効にした状態で操作する必要があり、テンポも別途合わせる必要のある場合がある