PulseAudio を使用してオーディオ デバイスをループバック デバイスに接続するにはどうすればよいですか?

PulseAudio を使用してオーディオ デバイスをループバック デバイスに接続するにはどうすればよいですか?

私はデジタルピアノを Focusrite Scarlett 2i2 USB オーディオインターフェイスに接続しています。このインターフェイスと Logitech USB ウェブカメラは両方とも私のコンピュータに接続されています。Scarlett とウェブカメラのマイクからの音をヌルシンクに統合し、そのモニターを Skype の「マイク」として使用してリモートピアノレッスンを行いたいと考えています。そうすれば、先生は私の声と音楽を Scarlett から直接聞くことができます (空中録音ではありません)。

これまでのところ、私はこれを行っています:

pactl load-module module-null-sink sink_name=piano_lesson
pactl load-module module-loopback sink=piano_lesson
pactl load-module module-loopback sink=piano_lesson

そのため、ループバックをヌルシンクに送る必要があります。次に、pavucontrol GUI を開き、録音タブで Scarlett を最初のループバックに割り当て、Web カメラのマイクを 2 番目のループバックに割り当てます。これでうまくいきます。ただし、これは面倒なので、プロセスを自動化するスクリプトを書き始めました。

しかし、デバイスをこれらのループバックに割り当てるコマンドを見つけるのに苦労しています。pactl move-sink-input|move-source-outputこれが適切なコマンドかどうかはわかりませんし、ドキュメントや他の Stack の質問/回答を読んでも、その目的を完全に理解できていません。コマンドは自動補完を提供しますが、パラメータの提案がわかりにくかったり、予想されるパラメータ (マイクなど) が表示されなかったりします。

Q: コマンドライン経由で Scarlett/マイクをループバック デバイスに接続するにはどうすればよいですか?

私の目標:

  • ソース #4 (alsa_input.usb-Focusrite_Scarlett_2i2_[...].analog-stereo) をシンク入力 1 に接続します。
  • ソース#5 (alsa_input.usb-046d_09a1_C5BDCE20-02.analog-mono [=ウェブカメラ]) をシンク入力2に接続します。

出力は次のとおりです:

$ pactl list sinks short
0   alsa_output.pci-0000_00_1b.0.analog-stereo  module-alsa-card.c  s16le 2ch 44100Hz   SUSPENDED
1   alsa_output.usb-Focusrite_Scarlett_2i2_USB_Y8GCE759613412-00.analog-stereo  module-alsa-card.c  s32le 2ch 44100Hz   SUSPENDED
2   piano_lesson    module-null-sink.c  s16le 2ch 44100Hz   RUNNING

$ pactl list sink-inputs short
0   0   1   protocol-native.c   float32le 2ch 44100Hz
1   2   -   module-loopback.c   s16le 2ch 44073Hz
2   2   -   module-loopback.c   s16le 2ch 44032Hz

$ pactl list sources short
0   alsa_output.pci-0000_00_1b.0.analog-stereo.monitor  module-alsa-card.c  s16le 2ch 44100Hz   SUSPENDED
1   alsa_input.pci-0000_00_1b.0.analog-stereo   module-alsa-card.c  s16le 2ch 44100Hz   SUSPENDED
3   alsa_output.usb-Focusrite_Scarlett_2i2_USB_Y8GCE759613412-00.analog-stereo.monitor  module-alsa-card.c  s32le 2ch 44100Hz   SUSPENDED
4   alsa_input.usb-Focusrite_Scarlett_2i2_USB_Y8GCE759613412-00.analog-stereo   module-alsa-card.c  s32le 2ch 44100Hz   RUNNING
5   alsa_input.usb-046d_09a1_C5BDCE20-02.analog-mono    module-alsa-card.c  s16le 1ch 16000Hz   RUNNING
6   piano_lesson.monitor    module-null-sink.c  s16le 2ch 44100Hz   IDLE

$ pactl list source-outputs short
7   4   -   module-loopback.c   s16le 2ch 44100Hz
9   5   -   module-loopback.c   s16le 2ch 44100Hz

注記: 私は PulseAudio 以外のソリューションも検討しており、それがスクリプトであっても、プロファイルなどからそのような構成をロードできる GUI ベースのツールであっても問題ありません。

答え1

ループバック デバイスのソースを設定できます。

pactl load-module module-loopback source=alsa_input.usb-Focusrite_Scarlett_2i2_USB_Y8GCE759613412-00.analog-stereo sink=piano_lesson
pactl load-module module-loopback source=alsa_input.usb-046d_09a1_C5BDCE20-02.analog-mono sink=piano_lesson

関連情報