X

Pavucontrol: module-loopback

Иногда требуется перенаправить звук с микрофона в колонки, сделать этом можно так..

Ищем id, микрофона (input устройства) и запоминаем его

pactl list sources

в моем случае это #3

...
Source #3
        State: RUNNING
        Name: alsa_input.pci-0000_00_1b.0.analog-stereo
        Description: Built-in Audio Analog Stereo
...

Теперь ищем id, колонок (output устройства)

pactl list sinks

в моем случае это #1

Sink #1
        State: IDLE
        Name: alsa_output.pci-0000_00_1b.0.analog-stereo
        Description: Built-in Audio Analog Stereo

Теперь можно перенаправить звук с помощью loopback модуля

pactl load-module module-loopback latency_msec=1 source=3 sink=1

Отключить перенаправление, можно выгрузив модуль

pactl unload-module module-loopback

Виртуальные устройства

При необходимости, можно создать виртуальное output-устройство вот так

pactl load-module module-null-sink sink_name=MySink
pacmd update-sink-proplist MySink device.description=MySink

К примеру, это позволит перенаправить сразу несколько микрофонов на него, что позволит писать весь звук одновременно.

Как миксовать микрофон и колонки/наушники

Решение найдено тут: Recording game audio

Create null outputs and connect them with loopback streams so the game audio is sent to the speakers, but also combined with the microphone and sent to SimpleScreenRecorder. This is what we want to achieve:

Pulseaudio Loopback Diagram

To do this, run the following commands:

pactl load-module module-null-sink sink_name=duplex_out
pactl load-module module-null-sink sink_name=game_out
pactl load-module module-loopback source=game_out.monitor
pactl load-module module-loopback source=game_out.monitor sink=duplex_out
pactl load-module module-loopback sink=duplex_out

ow you should open PulseAudio Volume Control and send the audio from the game to the second null output (game_out), and set the audio source in SimpleScreenRecorder to the first null output (duplex_out). This should be done from the input page - do not use PulseAudio Volume Control to change the audio source for SimpleScreenRecorder because the change will be lost whenever you pause and resume the recording.

Pulseaudio Loopback Pavucontrol

As with the previous method, you should probably reduce the volume of the game a bit, because it's usually very loud compared to the microphone volume.

When you're done, remove all the extra outputs and loopback streams with this command:

pactl unload-module module-loopback
pactl unload-module module-null-sink

Теперь разберем на примере Skype-а.

В моем случае получилось так

# Создаем виртуальное устройство миксинга (вывода где будет миксоваться микрофон и колонки)
pactl load-module module-null-sink sink_name=skype_duplex_out
pacmd update-sink-proplist skype_duplex_out device.description=skype_duplex_out

# Создаем виртуальное устройство вывода звуков скайпа
pactl load-module module-null-sink sink_name=skype_out
pacmd update-sink-proplist skype_out device.description=skype_out

# Перенаправляем устройство вывода скайпа на колонки/наушники
pactl load-module module-loopback source=skype_out.monitor sink=1

# Перенаправляем устройство вывода скайпа на устройство миксинга
pactl load-module module-loopback source=skype_out.monitor sink=skype_duplex_out

# Перенаправляем микрофон на на устройство миксинга
pactl load-module module-loopback source=3 sink=skype_duplex_out

Тут source=3 это мое устройство ввода - микрофон (который можно найти командой pactl list sources ), а sink=1 устройство вывода - наушники (которые можно найти командой pactl list sinks ). Тоже самое, можно переписать используя не id, а имена source-а и sink-а, вот так

pactl load-module module-null-sink sink_name=skype_duplex_out sink_properties=device.description="Skype-Duplex-Out"\
&& pactl load-module module-null-sink sink_name=skype_out sink_properties=device.description="Skype-Out"\
&& pactl load-module module-loopback source=skype_out.monitor sink=alsa_output.pci-0000_00_1b.0.analog-stereo \
&& pactl load-module module-loopback source=skype_out.monitor sink=skype_duplex_out \
&& pactl load-module module-loopback source=alsa_input.pci-0000_00_1b.0.analog-stereo sink=skype_duplex_out

Теперь перезапускаем скайп и в настройках "Audio & Video" выбираем в качестве Speakers, устройство "skype_out".

Теперь можно в программе записи экрана/звука выбирает в качестве источника звука "skype_duplex_out" и будет идти одновременно запись звука из наушниках (собеседника) и вашего микрофона, при этом звук микрофона не будет дублироваться в наушники.

Удалить все эти перенаправления можно так

pactl unload-module module-loopback 
pactl unload-module module-null-sink

Конфигурация по-умолчанию

Так же стоит упомянуть, что вернуть всё к настройкам по-умолчанию всегда можно так

pulseaudio -k

эта команда загрузит конфигурацию по-умолчанию (/etc/pulse/default.pa)

Если же, вы хотите переписать/добавить какие-то настройки на уровне пользователя, то нужно скопировать файл с настройками по-умолчанию, к себе в домашнюю директорию и модифицировать его так, как Вам будет нужно

cp /etc/pulse/default.pa ~/.config/pulse/default.pa

Категории: Linux
Тэги: microphonepavucontrolsound