ジャックvsパルスオーディオ—どのように高速ですか?


27

JackはPulseよりも高速で、レイテンシーが少ないという主張がたくさんあります。どうですか?なぜPulseはそれ自体を軽量と呼んでいますか?誰もがこれら2つのデーモンの内部を素人に分解できますか?


2
私が理解しているように、それらは異なる目的のために設計されており、それらは比較の問題を説明するかもしれません。
NN

回答:


30

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を使用すると待ち時間が短くなる場合があります。しかし、レイテンシを最小限に抑えるように設計されたアプリについて話している場合、これらのケースはまれです。しかし、ループバックデバイスを接続して、仮説をテストしてください!


9

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

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


PAイメージへのリンクの方向が間違っていますか?
NN

@NNは私のために働きましたが、私は今それを変えたので、うまくいけばうまくいくでしょう。
ペテルフ

@Sukminderのエラーはかなりランダムなようです。
ペテルフ

1
私はこの答えがそれを減らすとは思いません:最初にジャックがどのように高速であるかを言わず、次に、直接パルスシンクではなく、擬似アルサドライバを含む例で答えを畳み込みます。質問はかなり明確ですが、より直接的に言えば、最速のPulseと比較して、最速のJACKはどのように高速ですか?
エヴァンキャロル

ジャックチームが、ヘビーウェイト-ヘビーウェイトで-がパルスを遅くする理由を説明せずに、ヘビーウェイトではないので速いと言うのを聞くのはうんざりです。この答えは、問題の前提をデカルトで再表明したように感じます。
エヴァンキャロル

4

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

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

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

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

Alsaユーザースペースレイヤー(ドライバーではない)が最低限必要です([*]間のレイテンシー)

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

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


私は賛成票を落としましたが、それが良い比較と同じくらい質問に対する答えであるかどうかはわかりません。再サンプリングを実行していない場合、PulseAudioが遅くなるのはなぜですか?
エヴァンキャロル

>再サンプリングを行わない場合、PulseAudioが遅くなるのはなぜですか?
3ED

違いますか?それらはソフトウェアで処理を行います。たとえば、強制的にリサンプリングします(2つから選択できます)。ジャックはアルザを部分的にバイパスします。ジャックはasioに似たものです。標準のWindowsに似たパルスは、Vistaから上向きに聞こえます。同じではなく類似した概念。Pulseは、ハードウェアでは処理できない安価な/統合された/適切にサポートされていないサウンドカードに最適です。
3ED

2

これは、実際には「vs」の問題ではありません。一見したところ、どちらも「サウンドサーバー」であることがわかります。したがって、おそらく、どちらかを選択するだけでよいと結論付けます。そうではありません。たとえば、ビデオカメラとFLIRカメラを比較してください。どちらもカメラです。しかし、それらの間で「選択」するだけではありません。それらは非常に異なる役割を果たし、それらの役割は補完的である可能性がありますが、決して競争的ではありません。ジャックが必要な場合、パルスが必要な場合、または両方が必要な場合があります。選択は、特定の遅延などの機能ではなく、問題のドメインによって決まります。

「FAT」とそうでないことに関しては、この用語はあまりにも多くの方法で使用されているため、本当に意味がありません。しかし、一般に、アプリケーションが「すべてをあなたのために」行うときに使用されるFATという用語は、多かれ少なかれ。「軽量」は、必要な機能をロードし、オプションのパレットから選択し、残りを破棄する傾向があります。Pulseは、いくつかのパラメーターを指定する「ビッグブロブ」プログラムであり、ほとんどの場合、実行されます。必要かどうかに関係なく、パルスを開始すると大量の機能がロードされます。ジャックは、必要なものを構築するために任意の数のプラグイン、プログラムなどに糊付けする小さなプログラムであり、それだけでは役に立ちません。プログラマーは、マシンリソースの側面から世界を見る傾向があります。

したがって、pulseは可変遅延サーバーであり、jackは固定遅延サーバーです。それらは特定の問題領域です。テレビを見ているだけの場合、またはネットワーク経由で音楽を聞いている場合は、必ずパルスが必要です。ライブの電子音楽を再生する場合は、必ずジャックが必要です。テレビを見ていて、サウンドストリームで重い処理を行っている場合は、必ず両方が必要になります。


1
やや主観:サウンドサーバーはJACKデザインに従うべきだと思います。サーバーによって追加されるレイテンシを取り除くことは不可能だからです。その後、ディスクまたはネットワークI / O、サンプルレート変換などに大きなバッファを使用するかどうかは、アプリケーション開発者次第です。10ミリ秒を超えるレイテンシは非常に高くなります。
-user877329
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.