web-dev-qa-db-ja.com

ALSAでサンプリングレートを変更する

私はコンピューターオーディオファンで、Windows(ASIO4ALLを使用)とOSX for Audioを使用しています。現在、Ubuntu 13をHTPC /ステレオオーディオにしています。まず、Pulseオーディオを無効にし、ALSAでGooMusicplayerを使用します。

私のDACは24ビット96 kHzに対応しています。 ALSAが出力サンプリングレートを設定するための構成が見つからないようです。どうすれば設定できますか?

5
Taranfx

デフォルトでは、デバイスのサンプルレートは、アプリケーションがデバイス用に構成したもの、つまり元のファイルのサンプルレートです。

5
CL.

Alsaはデフォルトで、ソースと同じサンプリングレートとフォーマットを使用します。ただし、サンプルレートを強制的に上げる(または下げる)ことは可能です。

これがあなたがそれを行うことができる一つの方法です。 (/ etc/asound.confまたは〜/ .asoundrc)内)

pcm.device{
        format S24_LE
        rate 96000
        type hw
        card 0
        device 0
}

次に、そのpcmをデフォルト(ステレオ)pcmのような別のpcmのスレーブにします(警告:互換性のあるカードがない限り、24ビット形式は機能しません。通常、ほとんどのカードで機能するS32_LEを使用します)。

pcm.!default{
    type plug
    slave.pcm "device"
}

ただし、上記はステレオソースに対してのみ機能します(したがって、デフォルトでSurround51 pcmを使用する5.1ソースから再生する場合、状況は少し複雑になります)。

非ステレオソースのサンプルレートを強制する方法について私が知っている(そして個人的に使用している)方法の1つは、 this asound.conf/asoundrc から一部を取り出して変更することです。 (注:私はそのファイルを自分で作成しませんでした)

(あなたは私の asound.conf をこの質問で見つけて、以下で手動でそれを手動で変更する煩わしさを経験する代わりに、それを直接コピーすることができます)

最初に "dmixed" pcmをコピーし、ハードウェアセクションを目的のサンプルレートとフォーマットに変更します。

次に、!default、surround40、surround51 pcmsをそのままコピーします。これにより、すべての出力が効果的にdmixされ、2.0、4.0、5.1のすべてのソースのサンプルレートが、dmixed pcmで設定されたサンプルレートにアップコンバートされます。

その構成ファイルでは、「upmix20_51」pcmも興味深いかもしれません。これは、他のチャネルにサウンドを選択的に複製することによって2.0ソースを5.1にアップミックスする効率的な方法であるためです。これを使用したい場合は、タイプを「プラグ」から「ルート」に変更し、それをスレーブとしてデフォルトのpcmに設定する必要があります。

pcm.!default{
    type plug
    slave.pcm "upmix20_51"
}

そのpcmが使用する「surround51」は「dmixed」をスレーブとして使用するため、強制サンプルレートはこのpcmにも適用されます。

悲しいことに、モノのソースは左側のスピーカーからしか出力されませんが、モノの音源はまれなのでこれらの問題はほとんどありません。私がちょうど与えた例は、私が自分のasound.confをどのように構成しているのか、5.1スピーカーのセットアップがあり、96kHzのサンプルを強制したい場合に楽しんでください料金。

理論的には、サンプルレートを強制しても何も達成されないと思います(サンプルレートが低いソースからのオーディオの品質が向上するとは不合理な考えなので)。 96khz出力を使用するようにアプリケーションを構成する方がはるかに優れています。

しかし、私にとっては、96 kHzまたは44.1 kHzの周波数を強制しないと、パチパチという音(Xcom:Enemy Unknownなどの特定のゲーム)でいくつかの問題がありました。私が96khzを強制することで何も失うことはない(それは44.1/48khzソースの品質を増加も減少もしない)ので、それは完璧なソリューションでした。

6
Cestarian

他の答えは幾分正しいです。

ほとんどのサウンドカードには、デフォルトでマルチチャネルがありません。マルチチャネルミキサーが搭載されているカードのいずれかを使用している場合は、おそらくここを読む必要はありません。 ALSAはソフトウェアで複数のサウンドのミキシングを行います。

一般的に言えば、2つのオプションが可能です。

  1. ミキシングソフトウェアの出力をすべて一緒にバイパスすると、より広い範囲のサウンドを楽しむことができます(たとえば、6つ以上のスピーカーへのチャネリングなど、より高いサンプルレートとビットレート)。

    サウンドカードを使用できるプログラムは1つだけです。

  2. ソフトウェアミキシングを有効にして、おそらく気付かないであろういくつかの品質を失います(テストされたSennheiser HD598のAsus Xonair DXは、まったく違いに気づかず、96 khz 6チャネルのサンプルレートフラックと192 khz 2チャネルのものを使用しました)。

    複数のプログラムがそのように機能します!私はオーディオファンではありません。

ハードウェアが同時に複数のストリームの混合をサポートしていない場合、2番目のオプションはデフォルトで有効になります。

注: 3番目のオプションもあります。 ALSAはソフトウェアでの再サンプリングを使用して構成できますが、私の経験から、すべてのアプリを再サンプリングして最大最高サンプルレートとビットレートに調整することは可能です-FPSゲームで顕著な遅延が発生しましたが、これは問題ですゲーマー向けです(3分の1秒ほど、銃から弾丸を発射したとき、私は地獄に悩まされました)。

3番目のオプションは、いくつかの理由でおそらく実用的ではないことに注意してください。

  1. 私はそれをうまくテストしませんでした、しかし、いくつかのアプリはまだそれで問題があるかもしれないと思います。
  2. 多くのFLACを使用しない限り、ほとんどのオーディオコレクションは16ビットレートの44.1/44 khzサンプルレートですが、それでもFLACはより高いサンプルレートを持つ必要があります。
  3. アップサンプリングでは音質は向上しません(理論的にはそうですが、安価なヘッドフォンを使用している場合は、気付かないでしょう、私は99%確信しています)。
  4. ゲームでのラグは非常に現実的です。ただし、.asoundrcファイル。

物事をより混乱させるために、それは良い意味でさらに悪化するかもしれません。さまざまな設定(チャネル/レート/サンプルレート/物理的な出力と入力の構成)で「デバイス」を作成できます。また、手動で作成したデバイスを使用できるアプリもあれば、そうでないアプリもあります。それは私の地獄を苛立たせます。

最も悪名高い、問題の多いもの:フラッシュプレーヤー。

この答えは、USB接続のイヤホンを使用していない人にも当てはまります。彼らは独自のサウンドカードを内蔵しており、私はその知識が限られています。マザーボードのサウンドカードを内蔵しているユーザーの方が本当でしょう。まだUSBヘッドセットに適用できますが、塩分で全体をとります。ハードウェアがオプションとしてそれを欠いているので、私はおそらく、生産されたすべてのサウンドカードの10%がハードウェアミキシングを使用していると思います。光出力は1つの大きな例外です。 AFAIK光出力にはミキサーは必要ありません。逆多重化は、「レシーバー」で行われ、そこで行われるのはハードウェアです。私の言葉をそれに取ってはいけません。

2
user57766

それは真実ではないと考えてください。同じ問題がありました。 Alsamixerは常にすべてのストリームをデフォルトの44,1 kHzにリサンプリングします。ストリームを1つの共通のものにリサンプリングする以外に、サンプリングレートの異なる方法でストリームを混合する方法を想像することはできません。変更に適切なファイルは〜/ .asoundrcです

http://www.alsa-project.org/main/index.php/Asoundrc

ここで結果を確認できます:cat/proc/asound/card0/pcm0p/sub0/hw_params(または2枚のカードがある場合はcard1)

1
gnat

@Cestarianの上の情報をありがとう。これにより、USBセミプロオーディオインターフェイスを、再コーディングで標準化されているサンプリングレート(96K)に合わせることができます。このマシンをスタジオ用にセットアップすることは、非常に洞察に満ちています。

あなたを助けるために、あなたが私を助けたので、私はこれらの質問に答えます:

"理論的には、サンプルレートを強制しても何も達成できないと思います(サンプルレートが低いソースからのオーディオの品質が向上するのは不合理な考えであるため)。 96khz出力を使用するようにアプリケーションを構成する方がはるかに優れています。

しかし、私にとっては、96 kHzまたは44.1 kHzの周波数を強制しないと、パチパチという音(Xcom:Enemy Unknownなどの特定のゲーム)に問題がありました。私が96kHzを強制しても何も失わないので(44.1/48kHzソースの品質を向上も低下もしない)、それは完璧なソリューションでした。」

デジタル信号を取得して、それを元の乗数よりも高い乗数に変換するアプリケーションが1つあります。それは、デジタルジッターの削減です。この目的でマスタリングスタジオで使用される外部サンプルレートコンバーターボックスに対するコンピューターの精度を調べることは興味深いでしょう。

2番目:サンプリングレートが定義されていないときに発生する必要のある処理フレームが必要です。論理的には、ハードドライブからの着信データを検知し、データストリームに出力するだけでなく、データストリームにフォーマットする(正しくない場合)必要があります。サウンドはCPUではなくリアルタイム処理を使用します。しかし、あなたもサンプリングしているので、ゲームのサウンドファイルのソースサンプリングレートジッターを修正している可能性があります。

0
drtechno