Не делать конкретные микрофон или динамики устройством по умолчанию в PulseAudio (Linux)

В PulseAudio есть модуль module-switch-on-connect, который делает подключаемое устройство ввода или вывода звука устройством по умолчанию.

Допустим, вы подключили USB-микрофон, а он в PulseAudio стал устройством ввода по умолчанию (см., как отмечена серая галочка справа в pavucontrol):

Это обычно очень удобно. Подключили устройство и всё, ни о чем не думаете. Во многих дистрибутивах, в т.ч. Ubuntu и ROSA, это включено по умолчанию в файле /etc/pulse/default.pa:

### Use hot-plugged devices like Bluetooth or USB automatically (LP: #1702794)
.ifexists module-switch-on-connect.so
load-module module-switch-on-connect
.endif

Столкнулся с тем, что USB-микрофон Samson GoMic еще и звуковой картой может быть (в нем есть Jack-разъем). При его подключении к рабочей станции с Linux module-switch-on-connect делал не только его микрофон микрофоном по умолчанию, но и его устройство вывода. А мне это не нужно, нужно, чтобы звук продолжал по умолчанию выводиться на обычные динамики.

Идем в документацию по module-switch-on-connect и видим, что у него существует параметр blacklist, в котором можно регулярным выражением задать список устройств, которые исключим из автоматического переключения в статус по умолчанию. Выведем список звуковых устройств командой pactl list (не от root) и видим, что интересующее нас устройство вывода звука называется «alsa_output.usb-Samson_Technologies_Samson_GoMic-00.analog-stereo». В документации сказано, что регулярным выражением по умолчанию, если не задано иное, в т.ч. пустое выражение, является «hdmi». Это сделано, т.к. часто видеокарта умеет выводить звук по HDMI, но мало кто этим пользуется.

В файле /etc/pulse/default.pa заменяем
load-module module-switch-on-connect
на:
load-module module-switch-on-connect blacklist="(hdmi|output.*Samson.*GoMic)"
В регулярном выражении выше .* означает любые символы или их отсутствие, ( | ) — конструкция «или».

Вместо /etc/pulse/default.pa можно править ~/.config/pulse/default.pa в домашней папке, но в моем дистрибутиве в /etc/pulse/default.pa уже есть module-switch-on-connect, поэтому правил в нем.

Перезапускаем PulseAudio или весь сеанс и видим, что при подключении этого USB-микрофона Samson GoMic к Linux его микрофон становится микрофоном по умолчанию сразу и автоматически, а звук на него выводиться автоматически не начинает. То, что надо! Очень люблю PulseAudio за гибкость (и даже когда-то написал небольшую программу PulseJoin).

1
Отправить ответ

avatar
1 Comment threads
0 Thread replies
2 Followers
 
Most reacted comment
Hottest comment thread
1 Comment authors
Алексей Recent comment authors
  Subscribe  
самые новые самые старые рейтинг
Сообщать по почте
Алексей
Гость
Алексей

А у меня как раз ситуация обратная. Использую аудио выход монитора. И каждый раз когда он уснет приходилось выполнять pacmd set-default-sink alsa_output.pci-0000_01_00.1.hdmi-stereo
По умолчанию blacklist = «hdmi», соответственно пришлось его установить в » «.