回答:
Jackは、あなたのマシン(知識のあるユーザー)に、サーバーを構成して、マシンの可能な限り低い処理遅延を決定することを要求します。(処理遅延とは、サーバーがクライアントアプリケーションとの間でデータを移動し、システムの外部のオーディオサンプルの次の「チャンク」を送受信するのにかかる時間です。)ジャックは、これらのオーディオデータのチャンクを時間通りに配信するか、失敗し、バッファアンダーラン(「ドロップアウト」と呼ばれることもあります。または、ポップしてクリックすることもあります。)。ジャックが一貫してアンダーランを取得する場合は、異なる設定でサーバーを再起動するか、クライアントアプリケーションで何かを変更して、オーディオの期限に間に合うように効率を上げるのが仕事です。サーバー設定はすべてのクライアントに均一に適用されるため、ジャックは複数のオーディオアプリケーション間でオーディオをルーティングし、予測可能な結果を得るのに非常に役立ちます。(つまり、「ジャック」をさまざまなオーディオコンポーネントに接続するようなものです。)
Pulseは、サーバーがシステムの外部で音声を送受信する期限に間に合わないために音声が途切れる回数を最小限に抑えるように設計されています。低い処理レイテンシを要求しないクライアントアプリケーション用に大きなバッファを選択することで、これを実行しようとしているようです。期限を過ぎてアンダーランが発生するほどサンプルを注入しようとすると、Pulseは自動的に最短時間を延長し、クライアントがサーバーにオーディオ更新を送信できるようにします。Pulse Docsは、超低レイテンシー-例えば、10ms未満の処理レイテンシー-を明示的に述べています-設計目標ではありません。Linux自体(およびおそらくハードウェア)がオーディオのリアルタイムスケジューリング用に設計されていないことを考えると、私はそれらを信じがちです。
ユーザー設定に関しては、Pulseは「軽い」です。(Pulseの設定レイテンシは低いと言う人もいるかもしれませんが、残念ながら多くのLinux Audioアプリはそれを無視しているようです。)Jackと比較した根本的な複雑さの点で、Pulseは「太っている」。
より高速な決定的な答えを得るには、ループバックデバイスを取得し、自分のシステムで往復遅延を測定して真実を知る必要があります。 ラウンドトリップレイテンシは、システムがオーディオを処理し、処理したものをシステムに戻すのにかかる時間です。Linuxでこれを行う方法を説明するオンラインチュートリアルがあります。これにより、実際に何を求めているのかがわかります。これは知覚されるレイテンシーです。イベントをトリガーした瞬間(たとえば、ギターの弦をかき鳴らした瞬間)から最初に音が聞こえる瞬間までにかかる時間です。その結果(たとえば、ギターのコードを聞く)。
最後に、PulseとJackは、ほとんどのGNU / LinuxディストリビューションでALSAの上に位置していることに注意してください。あなたはジャック対パルスについてだけ質問していることを知っています。しかし、ALSAに直接接続できる単一のオーディオアプリケーションを使用している場合、PulseまたはJackを追加しても、ALSA単独よりも知覚されるレイテンシーを低くする方法は考えられません。その意味で、PulseとJackはどちらも「脂肪」です。
tldr; ALSAだけが最速で、ジャックは複数のオーディオアプリケーションを連結するのに便利です。超低レイテンシを気にしない場合は、おそらくPulseが最も使いやすいでしょう。レイテンシーの種類を説明せずに、レイテンシーという用語を使用しているドキュメントやディスカッションを無視します。(残念ながら、公式のJack docsとLennartのPulseに関するブログエントリの両方がこのカテゴリに分類されます。)
注:単一のオーディオアプリケーションを使用するエッジケースがあります。このアプリケーションには、ぎこちないALSAインターフェイスとまともなジャックインターフェイスがあります。その場合、Jackを使用すると待ち時間が短くなる場合があります。しかし、レイテンシを最小限に抑えるように設計されたアプリについて話している場合、これらのケースはまれです。しかし、ループバックデバイスを接続して、仮説をテストしてください!
それらはサウンドサーバーであることで実際に同様です。JACKは、プロフェッショナルレベルのオーディオソリューションに必要なリアルタイム/低遅延応答用に設計されています。PulseAudioは、一般的なデスクトップ(より厳しいニーズが適用される)をよりターゲットにしています。PAはJACKよりも重いようです。複雑になるほどオーバーヘッドが大きくなります。Linuxでは、両方とも最終的に実際の出力にALSAを使用します。PAでは、データはしばしばALSA(アプリケーション出力)からPA(処理)からALSA(出力)にルーティングされますが、これはもちろんJACK-ALSAルートよりも低速です。一方、ネイティブに使用できないアプリケーションでは、ALSAインターフェイスを備えた仮想サウンドカードが表示されるため、透過的です。
いずれにせよ、音楽を作成するか、アプリケーションごとのボリュームコントロールなしでライブできない(またはネットワーク経由で別のマシンにサウンドを転送する)場合を除き、プレーンALSAはオーバーヘッドが少なく、問題なく動作します。一部のドライバーはハードウェアのミキシングを行うことができ、そうでない場合でも、ALSAはプラグインを介してミキシングできます(おそらくJACKほどスナッピーではありませんが、「通常の」使用は大丈夫です)。
ジャックは、低レイテンシーを必要とするアプリケーション用です。例えば、ミュージシャン、ビデオメーカーなどのオーディオエンジンリング/作成
Pulseは通常のデスクトップアプリケーション用です(低レイテンシーは期待しないでください)
alsa
し、oss
出力Alsaユーザースペースレイヤー(ドライバーではない)が最低限必要です([*]間のレイテンシー)
ほとんどの場合、Pulseは通常のデスクトップユーザーに最適です。ジャックはミュージシャンなどに最適です。
これは、実際には「vs」の問題ではありません。一見したところ、どちらも「サウンドサーバー」であることがわかります。したがって、おそらく、どちらかを選択するだけでよいと結論付けます。そうではありません。たとえば、ビデオカメラとFLIRカメラを比較してください。どちらもカメラです。しかし、それらの間で「選択」するだけではありません。それらは非常に異なる役割を果たし、それらの役割は補完的である可能性がありますが、決して競争的ではありません。ジャックが必要な場合、パルスが必要な場合、または両方が必要な場合があります。選択は、特定の遅延などの機能ではなく、問題のドメインによって決まります。
「FAT」とそうでないことに関しては、この用語はあまりにも多くの方法で使用されているため、本当に意味がありません。しかし、一般に、アプリケーションが「すべてをあなたのために」行うときに使用されるFATという用語は、多かれ少なかれ。「軽量」は、必要な機能をロードし、オプションのパレットから選択し、残りを破棄する傾向があります。Pulseは、いくつかのパラメーターを指定する「ビッグブロブ」プログラムであり、ほとんどの場合、実行されます。必要かどうかに関係なく、パルスを開始すると大量の機能がロードされます。ジャックは、必要なものを構築するために任意の数のプラグイン、プログラムなどに糊付けする小さなプログラムであり、それだけでは役に立ちません。プログラマーは、マシンリソースの側面から世界を見る傾向があります。
したがって、pulseは可変遅延サーバーであり、jackは固定遅延サーバーです。それらは特定の問題領域です。テレビを見ているだけの場合、またはネットワーク経由で音楽を聞いている場合は、必ずパルスが必要です。ライブの電子音楽を再生する場合は、必ずジャックが必要です。テレビを見ていて、サウンドストリームで重い処理を行っている場合は、必ず両方が必要になります。