回答:
ALSAはカーネルレベルのサウンドミキサーで、サウンドカードを直接管理します。ALSA自体は、一度に1つのアプリケーションしか処理できません。もちろん、この問題を解決するために書かれた「dmix」があります。(これはALSAモジュールです。)
PulseAudioは、ユーザーランドの上にあるソフトウェアミキサーです(アプリを実行する場合と同様)。実行時には、Almix(dmixなし)を使用し、あらゆる種類のミキシング、デバイス、ネットワークデバイス、すべてをすべて単独で管理します。
2014年でも、ALSAのみを実行できます。ただし、アプリケーションを自分用にコンパイルし、どこでもALSAサポートを有効にするか、Gentooなどのソースベースのディストリビューションを使用しない限り、ミキシングの問題が発生する可能性があります。ディストリビューションが出荷するプリコンパイル済みアプリケーションは、通常、純粋なALSAではなく、Pulseaudioのサポートのみで構築されます。たとえば、UbuntuはPulseAudioを好みます。デフォルトではPulseAudioが付属しているため、すべてのアプリケーションはPulseAudioのみを使用するようにコンパイルされています。
PulseAudioには利点があります。ネットワークを介してオーディオを操作するのに適していると言われ、純粋なALSAで発生したマルチチャネルオーディオストリームの問題を解決します。また、PA用のアプリを開発する方が簡単だと思われます。エンドユーザー側では、新しいデバイスの選択、アプリごとの音量の制御などが簡単です。
ただし、デフォルト構成では、重要ではないレイテンシーがミックスに追加されます。これは、一部のゲームやソフトウェアのように低レイテンシを必要とする特定のタイプのタスクにとって大きな欠点です。
OSSはこれらの両方に代わるものですが、GPLのもとではライセンスされていないため、ディストリビューションで多く採用されることはほとんどありません。
イラスト:
Ubuntuのような典型的なのPulseAudioパワードサウンドシステム、:
カーネル:ALSA - >ユーザランド:PulseAudioは- > APP1、APP2、APP3
すべての異なるアプリケーションやフィードそれらをチェーンからALSAへの典型的なLinuxシステム、PulseAudioはミックスオーディオで。
ALSA:
カーネル:ALSA-> dmix->ユーザーランド:app1、app2、app3
純粋なALSAでは、複数のアプリを混在させるためにdmixが必要です。これがないと、ALSAは一度に1つのアプリからのみオーディオストリームを再生できます。
OSS:
カーネル:OSS->ユーザーランド:app1、app2、app3
OSSでは、ユーザーランドアプリはカーネル内のOSSと直接通信し、ストリーム自体を混合します。
要約すると、最近の典型的なシステムでは、ALSAはサウンドカードと直接対話し、Pulseaudioはアプリとプログラムと対話し、それをALSAにフィードします。
On MAC, Windows, Haiku, GUI runs from the kernel (okay its inside the kernel). Well. It would make sense doesnt it?
実際にはそうではありません。「システムを破壊したNT 4ビデオドライバー」の悪い昔を覚えていますか?ええ、それが原因でした-カーネルスペースでくだらないドライバを実行しています。マイクロソフトが、署名されたドライバーをWindowsに取り込むことについて、突然すべての準備を整えたと思うのはなぜですか?ビンゴ!ぎこちないドライバーがシステムクラッシュを引き起こしていたからです。彼らは、彼らが得ることを意味し署名しましょう吟味し、QAのsmidgeonが長い方法...行く