パルス/alsaのオーディオ歪みはJACKでうまく機能します。 JACKが正しく機能する理由を分析し、この知識を使用してpulse / alsa設定を変更するにはどうすればよいですか?

パルス/alsaのオーディオ歪みはJACKでうまく機能します。 JACKが正しく機能する理由を分析し、この知識を使用してpulse / alsa設定を変更するにはどうすればよいですか?

この問題をテストして解決するために、オーディオ設定やプロファイルを変更せずにFedora 33を新しくインストールしました。

デフォルトでは、オーディオはひどく歪んでいます(はい再生している項目がわかりますが、通常は使用できません。

ところでインストールしてjackd実行してみると以下のように設定されています。

jackd -r -dalsa -dhw:0 -r48000 -p256 -n2

その後、オーディオファイルmpv(JACKが利用可能)を試してみると、サウンドは鮮明でクリーンです。期待どおりに動作:

mpv --ao=jack test.flac

注:作品もjackdあります-r44100

もちろん、これは満足のいく普遍的なアプローチではありません。すべてのソフトウェアがJACKのみ使用できるわけではないため、Firefoxでは機能しません。

JACKが問題を正しく処理するため、パルスまたはalsa(自動)設定が問題を引き起こしているようです。それとも違うのでしょうか?

簡単に言うと:ALSA構成(またはパルスオーディオ)を使用してJACKが実行する操作をどのように複製できますか? ALSAによるソリューションは次のとおりです。最初の選択この回答を有効にしてください脈拍なししかも。もちろん、この問題を引き起こすのがパルスオーディオかもしれません。


追加情報:

  • 出力aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: Studio [Audiofuse Studio], device 0: USB Audio [USB Audio]
  Subdevices: 0/1
  Subdevice #0: subdevice #0
card 1: Generic [HD-Audio Generic], device 0: ALC1220 Analog [ALC1220 Analog]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 1: Generic [HD-Audio Generic], device 1: ALC1220 Digital [ALC1220 Digital]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
  • 出力jackd -r -dalsa -dhw:0 -r48000 -p256 -n2
jackdmp 1.9.14
Copyright 2001-2005 Paul Davis and others.
Copyright 2004-2016 Grame.
Copyright 2016-2019 Filipe Coelho.
jackdmp comes with ABSOLUTELY NO WARRANTY
This is free software, and you are welcome to redistribute it
under certain conditions; see the file COPYING for details
no message buffer overruns
no message buffer overruns
no message buffer overruns
JACK server starting in non-realtime mode
self-connect-mode is "Don't restrict self connect requests"
audio_reservation_init
Acquire audio card Audio0
creating alsa driver ... hw:0|hw:0|256|2|48000|0|0|nomon|swmeter|-|32bit
configuring for 48000Hz, period = 256 frames (5.3 ms), buffer = 2 periods
ALSA: final selected sample format for capture: 32bit integer little-endian
ALSA: use 2 periods for capture
ALSA: final selected sample format for playback: 32bit integer little-endian
ALSA: use 2 periods for playback
  • 出力aplay --dump-hw-params -D hw:Studio -t raw /dev/zero
Playing raw data '/dev/zero' : Unsigned 8 bit, Rate 8000 Hz, Mono
HW Params of device "hw:Studio":
--------------------
ACCESS:  MMAP_INTERLEAVED RW_INTERLEAVED
FORMAT:  S32_LE
SUBFORMAT:  STD
SAMPLE_BITS: 32
FRAME_BITS: [320 576]
CHANNELS: [10 18]
RATE: [44100 192000]
PERIOD_TIME: [125 297211)
PERIOD_SIZE: [6 13107]
PERIOD_BYTES: [240 524288]
PERIODS: [2 1024]
BUFFER_TIME: (62 594422)
BUFFER_SIZE: [12 26214]
BUFFER_BYTES: [480 1048576]
TICK_TIME: ALL
--------------------
aplay: set_params:1343: Sample format non available
Available formats:
- S32_LE
  • 出力cat /proc/asound/Studio/stream0(「再生」のみ):
Playback:
  Status: Stop
  Interface 1
    Altset 1
    Format: S32_LE
    Channels: 18
    Endpoint: 1 OUT (ASYNC)
    Rates: 44100, 48000, 88200, 96000, 176400, 192000
    Data packet interval: 125 us
    Bits: 24
  Interface 1
    Altset 2
    Format: S32_LE
    Channels: 18
    Endpoint: 1 OUT (ASYNC)
    Rates: 44100, 48000, 88200, 96000, 176400, 192000
    Data packet interval: 125 us
    Bits: 24
  Interface 1
    Altset 3
    Format: S32_LE
    Channels: 10
    Endpoint: 1 OUT (ASYNC)
    Rates: 44100, 48000, 88200, 96000, 176400, 192000
    Data packet interval: 125 us
    Bits: 24
    Channel map: FL FR FC LFE RL RR FLC FRC RC SL

答え1

わかりました。 soxを使って直接ファイル変換を試してみました。これにより、次のエラーが発生します。 WAVE 再生中 'CONVERTED-test.wav': 署名された 32 ビット Little Endian、速度 44100Hz、ステレオ再生: set_params: 1349: チャンネル数は使用できません。チャンネル18とsoxコマンドを使用すると、最終的にファイルが正確かつ明確に再生されます!注:チャンネル10でsoxを使用してファイルを変換すると、ファイルはaplayでも再生されますが、この場合ファイルは再び歪みます。チャンネルに異なる番号があると、チャンネル数が利用できないというエラーが発生します。

したがって、10チャンネルのインターフェースがドライバーや他の場所にバグがあるように見え、Pulseaudioが18チャンネルのインターフェースを使用するように説得する必要があります。

見ているモジュール alsa レシーバー、ALSAデバイスに入れることができます。

これはあなたが必要であることを意味するかもしれません~/.asoundrc

チャンネル数を設定できます。ハードウェアプラグインしかし、私はこれを直接試したことがなく、これらのチャンネル選択機能を備えたハードウェアもありません。

したがって、さまざまな設定ファイルを使用していくつかの実験が必要になるようです。これはリモートで実行するのが難しく、ステップバイステップの指示を提供することはできません。

別のオプションは、ALSAトラッカーにバグレポートを送信することです。ドライバで問題を発見したり(通常のUSBドライバの場合は特別な方法が必要な場合があります)、設定ファイルの提案を提供できます。

ALSAのバグ追跡の説明ここ

関連情報