web-dev-qa-db-ja.com

Jack vs Pulseaudio-どのように速くなりますか?

ジャックはパルスよりも速く、レイテンシが少ないという主張がたくさんあります。どうですか? Pulseはなぜそれ自体を軽量と呼び、Jackの連中はそれを太っているのか?誰かがこれらの2つのデーモンの内部を素人に分解できますか?

29
Evan Carroll

ジャックは、あなた-知識のあるユーザー-にあなたのマシンの可能な限り低い処理待ち時間を決定するようにサーバーを設定することを要求します。 (処理レイテンシは、サーバーがクライアントアプリケーションとの間でデータを移動し、システムの外部でオーディオサンプルの次の「チャンク」を送受信するのにかかる時間です。)ジャックは、それらのオーディオデータのチャンクを時間どおりに配信するか、失敗し、バッファアンダーランが発生します(「ドロップアウト」とも呼ばれますpopsおよびclicks)。ジャックが常にアンダーランする場合は、サーバーを別の設定で再起動するか、クライアントアプリケーションで何かを変更して効率を高め、オーディオの期限に間に合わせることができます。サーバー設定はすべてのクライアントに均一に適用されるため、ジャックは複数のオーディオアプリケーション間でオーディオをルーティングし、予測可能の結果を取得するのに非常に役立ちます。 (つまり、「ジャック」をさまざまなオーディオコンポーネントに接続するようなものです。)

Pulseは、サーバーがシステムの外部でオーディオを送受信するための期限を満たしていないためにオーディオが欠落する回数を最小限に抑えるように設計されています。これは明らかに、低処理待ち時間を要求しないク​​ライアントアプリケーション用に大きなバッファーを選択することによってこれを試み、その後、期限の早いクライアントアプリケーション用にそのバッファーにサンプルを「挿入」します。期限が過ぎてアンダーランが発生するほど早くサンプルを注入しようとすると、Pulseはクライアントがサーバーにオーディオ更新を送信できる最短時間を自動的に増やします。 Pulseのドキュメントでは、ltra低レイテンシ-たとえば、10-ms未満の処理レイテンシ-は設計目標ではないと明言しています。 Linux自体(そしておそらくあなたのハードウェア)がオーディオのリアルタイムスケジューリング用に設計されていないことを考えると、私はそれらを信じがちです。

ユーザー設定に関しては、Pulseは「軽量」です。 (Pulseは構成の待ち時間と言っているかもしれませんが、これは残念ながら多くのLinux Audioアプリでは無視されているようです。)ジャックと比較してその根本的な複雑さに関して、Pulseは「太っている」のです。

より速い決定的な答えを得るには、ループバックデバイスを取得し、独自のシステムで往復の待ち時間を測定して真実を知る必要があります。 往復遅延は、システムがオーディオを処理し、処理したものをシステムに戻すまでにかかる時間です。 Linuxでこれを行う方法を説明するチュートリアルがオンラインにあります。 知覚されたレイテンシ-イベントをトリガーした瞬間(たとえば、ギターの弦をかき鳴らす)にかかる時間結果として生じる音を最初に聞く瞬間(たとえば、ギターのコードを聞くとき)。

最後に、ほとんどのGNU/Linuxディストリビューションでは、PulseとJackの両方がALSAの上にあることに注意してください。ジャック対パルスについてだけ質問しているのはわかっています。しかし、ALSAに直接接続できる単一のオーディオアプリケーションを使用している場合、PulseまたはJackを追加することで、ALSA単独よりもpercepted delayを低くすることは考えられない方法です。その意味で、PulseとJackはどちらも「太っている」のです。

tldr; ALSAだけが最速で、Jackは複数のオーディオアプリケーションをつなぐのに便利です。Pulseはおそらくeasiestで、超低レイテンシを気にしない場合に使用します。 latencyという用語を使用しているドキュメントやディスカッションは無視してください。どのタイプのレイテンシが意味されているのかを説明しないでください。 (残念ながら、Jackの公式ドキュメントとPulseに関するLennartのブログエントリの両方がこのカテゴリに分類されます。)

:単一のオーディオアプリケーションを使用したいエッジケースがあり、ALSAインターフェースと適切なジャックインターフェースがあります。その場合、ジャックを使用すると、レイテンシが低くなる可能性があります。ただし、アプリについて話している場合、レイテンシを最小限に抑えるためにdesignedを使用することはまれです。しかし、ループバックデバイスを接続して、私の仮説をテストしてください。

33
jancsika

それらは実際には サウンドサーバー と似ています。 [〜#〜] jack [〜#〜] は、プロフェッショナルレベルのオーディオソリューションで必要とされるリアルタイム/低レイテンシ応答用に設計されています。 PulseAudio は、一般的なデスクトップを対象としています(それほど厳密でないニーズが適用される場合)。 [〜#〜] pa [〜#〜] よりも重いようです [〜#〜] jack [〜#〜] -複雑になるほどオーバーヘッドが増加します。 Linuxでは両方とも、最終的に実際の出力に [〜#〜] alsa [〜#〜] を使用します。 PAでは、多くの場合、データはALSA(アプリケーション出力)からPA(処理)からALSA(出力)にルーティングされますが、これはもちろんJACK-ALSAルートよりも低速です。一方で、ALSAインターフェイスを備えた仮想サウンドカードを提供するため、ネイティブで使用できないアプリケーションに対しては透過的です。

いずれにせよ、音楽を制作するつもりであるか、アプリケーションごとのボリュームコントロールなしでは生きられない(またはサウンドをネットワーク経由で別のマシンに転送する)場合を除いて、プレーンなALSAは問題なく、オーバーヘッドも少なくなります。一部のドライバーはハードウェアミキシングを実行できますが、そうでない場合でも、ALSAはプラグインを介してミキシングできます(おそらくJACKほど簡単ではありませんが、「通常の」使用は問題ありません)。

10
peterph

ジャックは、低レイテンシを必要とするアプリケーション用です。例:ミュージシャン、ビデオメーカーなどのオーディオエンジン/クリエーション

  • リサンプリングなし!
  • ソフトウェアミキシングソースを強制する
  • アプリ、デバイス、ladspa/lv2/vstプラグインなどの間の適切なルーティング(サウンド、timesyncなど)
  • pulseAudio(ブリッジ)で使用可能

Pulseは通常のデスクトップアプリケーション用です(低レイテンシを期待しないでください)

  • aRts および esd との互換性を提供します
  • alsaおよびoss出力として使用できます
  • ソフトウェアの強制的なリサンプリング
  • ソフトウェアミキシングソースを強制する
  • ソフトウェアのアップミックス、ダウンミックスなど
  • プラグインのニースAPIを提供します(例: pulseeffects
  • 単純なルーティング(出力を別のデバイスまたはアプリに接続するため)
  • アプリごとの音量調節

Alsaユーザースペースレイヤー(ドライバーではない)が最小限の遅延([*]間の遅延)

  • [*]ハードウェアのリサンプリング、ミキシングソース、アップミキシングなど(使用するには 適切なサウンドカード が必要です。それ以外の場合は software が使用されます)
  • 醜い設定形式で設定できるladspaプラグイン
  • シンプル/グローバルボリュームレベルコントロール

ほとんどの場合、Pulseは通常のデスクトップユーザーに最適です。ジャックはミュージシャンなどに最適です。

5
3ED

それは本当に「対」の問題ではありません。一見すると、どちらも「サウンドサーバー」であることがわかります。したがって、おそらく、単にどちらかを選択する必要があると結論付けます。そうではありません。たとえば、ビデオカメラとFLIRカメラを比較してください。どちらもカメラです。ただし、それらの間で「選択」するだけではありません。それらは非常に異なる役割を果たし、それらの役割はお世辞にもなり得ますが、決して競争力はありません。 1つはジャック、1つはPulse、または1つは両方が必要です。選択は、特定のレイテンシなどの機能ではなく、問題の領域によって決まります。

「FAT」とそうではないことに関して、この用語はあまりに多くの方法で使用されており、真に意味があるとは言えません。ただし、一般的に、FATという用語は、アプリケーションが「すべてを実行する」ときに使用されます。 「軽量」は、必要な機能をロードし、オプションのパレットから選択して残りを破棄する傾向があります。 Pulseは、いくつかのパラメータを指定する「大きなblob」プログラムであり、ほとんどの場合、それが実行されます。必要かどうかにかかわらず、Pulseを起動すると大量の機能が読み込まれます。ジャックは小さなものであり、それだけでは役に立たないプログラムであり、任意の数のプラグイン、プログラムなどを接着して、必要なものを構築できます。プログラマーはマシンリソースの側から世界を見る傾向があります。

したがって、Pulseは可変レイテンシサーバーであり、Jackは固定レイテンシ1です。それらはそれらの特定の問題ドメインです。テレビを見ているだけの場合、またはネットワーク経由で音楽を聴いている場合は、きっとPulseが必要です。ライブのエレクトロニックミュージックを再生する場合は、必ずジャックが必要です。 TVを見ていて、サウンドストリームに重い処理をしている場合は、両方が必要になるはずです。

2
Will