¿Cómo conectar dispositivos de audio a dispositivos loopback con PulseAudio?

¿Cómo conectar dispositivos de audio a dispositivos loopback con PulseAudio?

Tengo un piano digital conectado a una interfaz de audio USB Focusrite Scarlett 2i2. Esa interfaz y una cámara web USB de Logitech están conectadas a mi computadora. Quiero fusionar los sonidos de Scarlett y el micrófono de la cámara web en un disipador nulo y usar su monitor como "micrófono" en Skype para lecciones de piano remotas. Luego, el profesor puede oírme hablar y también la música directamente desde Scarlett (y no grabada por aire).

Hasta ahora hago esto:

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

Así que ahora tengo que hacer loopbacks para entrar en el sumidero nulo. Luego abro la GUI de pavucontrol y en la pestaña de grabación asigno Scarlett al primer loopback y el micrófono de la cámara web al segundo loopback. Esto funciona. Sin embargo, esto es tedioso y comencé a escribir un guión para automatizar el proceso.

Sin embargo, me cuesta encontrar el comando para asignar los dispositivos a esos loopbacks. No estoy seguro de si pactl move-sink-input|move-source-outputson los comandos correctos para esto ni he entendido completamente su propósito, incluso leyendo la documentación y otras preguntas/respuestas de Stack. Los comandos proporcionan autocompletado, pero las sugerencias para los parámetros son confusas o los parámetros esperados (por ejemplo, el micrófono) no aparecen.

P: ¿Cómo conectaría Scarlett/micrófono a los dispositivos loopback a través de la línea de comando?

Mi meta:

  • conecte la fuente n.° 4 (alsa_input.usb-Focusrite_Scarlett_2i2_[...].analog-stereo) a la entrada 1 del receptor
  • conecte la fuente n.° 5 (alsa_input.usb-046d_09a1_C5BDCE20-02.analog-mono [=webcam]) a la entrada 2 del receptor

A continuación se muestran algunos resultados:

$ 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

Nota: También estoy abierto a soluciones que no sean PulseAudio y no importa si se trata de un script o una herramienta basada en GUI en la que pueda cargar dicha configuración, por ejemplo, desde un perfil.

Respuesta1

Puede configurar la fuente para los dispositivos de bucle invertido.

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

información relacionada