PulseAudioでソースのポートを別々のソースに分割する方法は?

PulseAudioでソースのポートを別々のソースに分割する方法は?

pactl list sources複数のポートを持つソースがあることを示します。

Ports:
    analog-input-front-mic: Front Microphone (priority: 8500, not available)
    analog-input-rear-mic: Rear Microphone (priority: 8200, available)
    analog-input-linein: Line In (priority: 8100, available)

これらのポートを別々のソースに分割したいと思います。

pactl load-module module-loopback source=whatever sink=whatever

私が何かを見逃していない限り、module-remap-source私が追求することを達成することは不可能に見えます。

別のソースがない場合は、特定のソースpavucontrolに対して一度に1つのポートのみを有効にするインターフェイスを使用して、手動でのみポートを切り替えることができます。

LXDEを使用してDebian Stretchを実行します。

xfce4-mixerミックス(この場合はマイヘッドフォン)を使用して、Windows 7とDebian Jessieでも同じ設定を簡単に実行できます

結果は次のとおりですcat /proc/asound/pcm

00-00: ALC887-VD Analog : ALC887-VD Analog : playback 1 : capture 1
00-02: ALC887-VD Alt Analog : ALC887-VD Alt Analog : capture 1
01-03: HDMI 0 : HDMI 0 : playback 1
01-07: HDMI 1 : HDMI 1 : playback 1
01-08: HDMI 2 : HDMI 2 : playback 1
02-00: USB Audio : USB Audio : playback 1 : capture 1

結果は次のとおりですcat /proc/asound/card*/codec\#*

https://pastebin.com/yusn4hJP

修正する:

その後、Alsaの上から直接消去し、完全に使用(使用およびアクティブ化)pulseaudioしてpavucontrolこのqasmixer問題を回避しました。これは現在廃止されている製品よりも多様ではありませんが、同じです。私はあまりファンではありませんが、まだ試してみる価値がある他のAlsa Blenderとはあります。Loopback MixingShow device selectionxfce4-mixervoltialsamixergui

これが私の問題を解決したにもかかわらず、この質問に対する完全な答えではありません。特に、この質問はPulseaudioポートを独立したソースに分割する可能性と方法も扱うからです。

答え1

ALSAでは、「ALC887-VDアナログ」と「ALC887-VD Altアナログ」と呼ばれる2つのA / Dコンバータ(オーディオ入力ノード)のみがあります。したがって、ソフトウェアの観点から得るための最良の方法は2つのソースであり、両方のソースのポートを手動で切り替える必要があります(今は単一のソースに対して行うように)。ただし、設定は簡単ではなく、設定ファイルとパスを操作し、/usr/share/pulseaudio/alsa-mixer/profile-sets/Pulseaudioモジュールを手動でアンロードおよびロードする必要があります。私のシステムで試してみましたが、まだ満足のいく設定が得られませんでした。

ただし、目標が「Pulseaudioのすべてのシンクにループバックできるように、複数のPulseaudioソースを使用したい」ではなく、「ハードウェアオーディオ入力をハードウェアオーディオ出力(ヘッドフォン)にループバックしたい」の場合は、ハードウェアを使用できます。ミキサー(おそらくxfce4-mixerを使用してWindows 7で実行することです)。

したがって、同様のプログラムを使用してalsamixerハードウェアamixerループバック設定を制御すると、以前と同じように機能する必要があります。

答え2

私の考えでは、あなたの問題に対する解決策を見つけたと思います。ここ。アイデアは次のとおりです。

  1. 利用可能なALSAサウンドカードと入力のリストを取得します。

    $ arecord -l
    **** List of CAPTURE Hardware Devices ****
    card 1: Generic [HD-Audio Generic], device 0: ALC887-VD Analog [ALC887-VD Analog]
      Subdevices: 0/1
      Subdevice #0: subdevice #0
    card 1: Generic [HD-Audio Generic], device 2: ALC887-VD Alt Analog [ALC887-VD Alt Analog]
      Subdevices: 0/1
      Subdevice #0: subdevice #0
    

    カードとデバイス番号を書き留めます(上記の例では、card 12つの入力デバイス:device 0そしてdevice 2)。

  2. ユーザー固有のPulseAudio設定ファイルがない場合は、コピーを作成してください。

    cp /etc/pulse/default.pa ~/.config/pulse/default.pa そして、単純なテキストエディタでコピーを開きます。静的デバイス構成に関連するセクションを見つけて、ALSAデバイスに次の行を追加します。

    ### Load audio drivers statically
    ### (it's probably better to not load these drivers manually, but instead
    ### use module-udev-detect -- see below -- for doing this automatically)
    #load-module module-alsa-sink
    #load-module module-alsa-source device=hw:1,0
    #load-module module-oss device="/dev/dsp" sink_name=output source_name=input
    #load-module module-oss-mmap device="/dev/dsp" sink_name=output source_name=input
    #load-module module-null-sink
    #load-module module-pipe-sink
    
    load-module module-alsa-sink device=hw:1,0 name="ALSAOutput"
    load-module module-alsa-source device=hw:1,0 name="ALSASource1" source_properties=device.description="ALSASource1"
    load-module module-alsa-source device=hw:1,2 name="ALSASource2" source_properties=device.description="ALSASource2"
    
    
    ### Automatically load driver modules depending on the hardware available
    #.ifexists module-udev-detect.so
    #load-module module-udev-detect
    #.else
    ### Use the static hardware detection module (for systems that lack udev support)
    #load-module module-detect
    #.endif
    

    device=hw:1,0この行では、構成に応じてパラメータを編集する必要があります。ここで最初の数字はカード数字、2番目は装備番号を入力するには、前の手順の番号を覚えておく必要があります。

    udevを使用してドライバを自動ロードする方法については、次のセクションもコメントアウトする必要があります。

  3. ユーザーのためにPulseAudioを再起動してください。

    $ systemctl --user restart pulseaudio
    

完了すると、pavucontrol1つの出力デバイスと2つの別々の入力デバイスが表示されます。

ここに画像の説明を入力してください。

ここに画像の説明を入力してください。

入力デバイスの名前は、pavucontrol上記の設定ファイルで割り当てた名前(パラメータ)ですsource_properties=device.description="ALSASource1"。これはデバイスに一意の名前を割り当てる便利な方法です。

  1. 次に、これらの入力を使用するには、実際に各ALSA入力に正しいソースを割り当てる必要があります。これを行うには、alsamixerコンソールで実行してF6を押してサウンドカードを選択し、F4を押してキャプチャタブに切り替えて、次のように必要な入力を割り当てることをお勧めします。

ここに画像の説明を入力してください。

Line inこの例では、最初の入力とFront Mic2番目の入力を選択しました。

また、両方のキャプチャデバイスがミュートされていないことを確認する必要があります。これを開くには、左/右矢印キーを使用してとコントロールに切り替え、CaptureスペースCapture 1バーを押します。という赤い文字が見えます。捕獲'デバイスがあるとき存在する

だからこの時点で、2つのポート単一のデバイスは次のように区別されます。2つの別々のデバイスpavucontrolPulseAudioでは、いつものように自由に操作できます。たとえば、これら2つのソースからの信号を接続するには、次のようにします。このレシピ

これらの変更をすべて元に戻すには、~/.config/pulse/default.paファイルを再編集し、新しい行をコメントアウトし、前の行のコメントを削除します。または、ファイルを直接削除することもできます。その後、PulseAudioを再起動してください。

PS私はこれを行うよりスマートな方法(PulseAudio用のカスタムデバイスプロファイルを作成する)があるべきだと思いますが、これに精通していません。たぶんここで他の誰かがヒントを与えるかもしれません。

関連情報