サウンドを機能させる をしようとしているときに、ALSAとPulseAudioの役割について考えていました。私は両方をインストールしていて、たとえば、どちらが私のサウンドカードについて知る必要があるのか疑問に思いました。
どちらもお互いに使用できるようです。ALSA用のPulseAudioプラグインがあり、私のシステムでは、AlsaがPulseAudioのサウンドカードとして表示されます。
2つのうちどちらが何をするか、それらは代替か補完か?
ALSAはカーネルレベルのサウンドミキサーで、サウンドカードを直接管理します。 ALSA自体は、一度に1つのアプリケーションしか処理できません。もちろん、この問題を解決するために書かれた ' dmix 'があります。 (これはALSAモジュールです。)
PulseAudioは、(アプリを実行するような)ユーザーランドの上にあるソフトウェアミキサーです。実行時には、dsaなしでAlsaを使用し、あらゆる種類のミキシング、デバイス、ネットワークデバイス、その他すべてを単独で管理します。
2014年も、ALSAのみを実行できます。しかし、自分でアプリケーションをコンパイルして、どこでもALSAサポートを有効にしない限り、またはGentooのようなソースベースのディストリビューションを使用しない限り、混合の問題が発生する可能性があります。ディストリビューションが出荷する事前コンパイルされたアプリケーションは、通常、Pulseaudioのサポートのみで構築されており、純粋なALSAではありません。例えばUbuntuはPulseAudioを好みます。デフォルトではPulseAudioが付属しているため、すべてのアプリケーションはPulseAudioのみを使用するようにコンパイルされています。
PulseAudioにはその利点があります。これは、ネットワーク全体でオーディオを操作するのに適しており、純粋なALSAで発生したマルチチャネルオーディオストリームの問題を解決すると言われています。また、PA用のアプリを開発する方が簡単だと思われます。エンドユーザー側では、新しいデバイスの選択、アプリによる音量の制御などが簡単です。
ただし、デフォルトの構成では、それほど重要ではない待ち時間がミックスに追加されます。これは、一部のゲームやソフトウェアのように低レイテンシを必要とする特定のタイプのタスクの大きな欠点です。
OSSはこれらの両方に代わるものですが、GPLでライセンスされていないため、ディストリビューションによる多くの採用は見られません。
イラスト:
Ubuntuなどの典型的なPulseAudio搭載のサウンドシステム:
カーネル:ALSA->ユーザーランド:PulseAudio-> app1、app2、app3
典型的なLinuxシステムでは、PulseAudioはすべてのさまざまなアプリからのオーディオをミックスし、それらをALSAにチェーンでフィードします。
ALSA:
カーネル:ALSA-> dmix->ユーザーランド:app1、app2、app3
純粋なALSAでは、複数のアプリをミックスするためにdmixが必要です。これがないと、ALSAは一度に1つのアプリからのオーディオストリームしか再生できません。
OSS:
カーネル:OSS->ユーザーランド:app1、app2、app3
OSSを使用すると、ユーザーランドアプリは、ストリーム自体を混合するカーネル内のOSSと直接通信します。
つまり、最近の一般的なシステムでは、ALSAはサウンドカードと直接通信し、Pulseaudioはアプリとプログラムと通信して、ALSAにフィードします。