Como conectar dispositivos de áudio a dispositivos de loopback com PulseAudio?

Como conectar dispositivos de áudio a dispositivos de loopback com PulseAudio?

Eu tenho um piano digital conectado a uma interface de áudio USB Focusrite Scarlett 2i2. Essa interface e uma webcam USB da Logitech estão conectadas ao meu computador. Quero mesclar os sons da Scarlett e do microfone da webcam em um null-sink e usar seu monitor como "microfone" no Skype para aulas remotas de piano. O professor poderá então me ouvir falar e também a música diretamente da Scarlett (e não gravada via aérea).

Até agora eu faço isso:

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

Então agora eu tenho que fazer loopbacks indo para o coletor nulo. Em seguida, abro a GUI do pavucontrol e na guia de gravação atribuo a Scarlett ao primeiro loopback e o microfone da webcam ao segundo loopback. Isso funciona. No entanto, isso é tedioso e comecei a escrever um script para automatizar o processo.

No entanto, tenho dificuldade em encontrar o comando para atribuir os dispositivos a esses loopbacks. Não tenho certeza se pactl move-sink-input|move-source-outputsão os comandos corretos para isso, nem entendi completamente seu propósito, mesmo lendo a documentação e outras perguntas/respostas do Stack. Os comandos fornecem preenchimento automático, mas as sugestões para os parâmetros são confusas ou os parâmetros esperados (por exemplo, o microfone) não aparecem.

P: Como eu conectaria a Scarlett/microfone aos dispositivos de loopback via linha de comando?

Meu gol:

  • conecte a fonte nº 4 (alsa_input.usb-Focusrite_Scarlett_2i2_[...].analog-stereo) à entrada do coletor 1
  • conecte a fonte nº 5 (alsa_input.usb-046d_09a1_C5BDCE20-02.analog-mono [=webcam]) à entrada do coletor 2

Aqui estão algumas saídas:

$ 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

Observação: Também estou aberto a soluções que não sejam do PulseAudio e não importa se é um script ou uma ferramenta baseada em GUI na qual eu poderia carregar tal configuração, por exemplo, a partir de um perfil.

Responder1

Você pode definir a origem dos dispositivos de loopback.

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

informação relacionada