PulseAudio Сравнение версий

Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
wiki:pulseaudio [2015/06/26 13:21]
[Bauer stereophonic-to-binaural DSP]
wiki:pulseaudio [2021/07/17 19:53] (текущий)
[module, client, sample]
Строка 75: Строка 75:
   * **Module**. Загруженный модуль PulseAudio. Например,​ загрузка module-alsa-sink с заданием пераметров,​ указывающих на устройство Alsa — создаст Sink, связанный с этим устройством. Существуют и другие модули,​ создающие объекты PulseAudio, позволяющие управлять им, использовать FIFO для обмена звуковым потоком и многое другое;​   * **Module**. Загруженный модуль PulseAudio. Например,​ загрузка module-alsa-sink с заданием пераметров,​ указывающих на устройство Alsa — создаст Sink, связанный с этим устройством. Существуют и другие модули,​ создающие объекты PulseAudio, позволяющие управлять им, использовать FIFO для обмена звуковым потоком и многое другое;​
   * **Client**. Приложение,​ подключившееся к PulseAudio. Может создавать потоки Sink-Input и Source-Output и управлять демоном PulseAudio.   * **Client**. Приложение,​ подключившееся к PulseAudio. Может создавать потоки Sink-Input и Source-Output и управлять демоном PulseAudio.
-Sample. Звуковой сэмпл, загруженный в PulseAudio для быстрого воспроизведения. Может использоваться для проигрывания стандартных звуков. Например,​ x11 bell. Могут проигрываться по команде от модуля,​ клиента или из консоли.+  * **Sample**. Звуковой сэмпл, загруженный в PulseAudio для быстрого воспроизведения. Может использоваться для проигрывания стандартных звуков. Например,​ x11 bell. Могут проигрываться по команде от модуля,​ клиента или из консоли.
  
 =====ALSA → PulseAudio===== =====ALSA → PulseAudio=====
Строка 95: Строка 95:
 =====GUI инструменты===== =====GUI инструменты=====
 Если Вы читаете эту статью чтобы решить пару нюансов и не вникать — рекомендуется попробовать GUI-tools, описанные на [[http://​pulseaudio.org/​wiki/​AboutPulseAudio#​RelatedSoftware|странице]] PulseAudio. С помощью **pavucontrol** можно будет быстро выбрать устройство записи «по умолчанию» (Input Devices, кнопка справа «Set as fallback») и Skype будет работать :) Также **pavucontrol** позволяет управлять громкостью общей и отдельных приложений. ​ Если Вы читаете эту статью чтобы решить пару нюансов и не вникать — рекомендуется попробовать GUI-tools, описанные на [[http://​pulseaudio.org/​wiki/​AboutPulseAudio#​RelatedSoftware|странице]] PulseAudio. С помощью **pavucontrol** можно будет быстро выбрать устройство записи «по умолчанию» (Input Devices, кнопка справа «Set as fallback») и Skype будет работать :) Также **pavucontrol** позволяет управлять громкостью общей и отдельных приложений. ​
 +
 +====veromix====
 +Многофункциональный микшер для звукового сервера PulseAudio, имеющий Python / GTK и QT (pyqt) графический интерфейс. Позволяет управлять LADSPA плагинами.
 +Установка через Центр приложений Ubuntu или через консоль:​
 +<​code>​sudo apt install veromix</​code>​
 +{{:​wiki:​pulseaudio:​veromix-gtk.png?​600|}}
 +====PulseEffects====
 +Удобное Python / GTK графическое приложение для набора PulseAudio эффектов. Множество плагинов в комплекте.
 +Установка через консоль:​
 +<​code>​sudo add-apt-repository ppa:​mikhailnov/​pulseeffects -y
 +sudo apt update
 +sudo apt install pulseeffects pulseaudio --install-recommends</​code>​
 +{{:​wiki:​pulseeffects.png?​600|}}
 =====Консольные инструменты===== =====Консольные инструменты=====
 ====pactl==== ====pactl====
Строка 161: Строка 174:
 Moving 1 inputs {65} to sink "​alsa_output.pci-0000_00_1b.0.analog-stereo"​... Moving 1 inputs {65} to sink "​alsa_output.pci-0000_00_1b.0.analog-stereo"​...
 Sink#0 <​alsa_output.pci-0000_00_1b.0.analog-stereo>:​ default sink</​code>​ Sink#0 <​alsa_output.pci-0000_00_1b.0.analog-stereo>:​ default sink</​code>​
 +
 +
 ======Настройка====== ======Настройка======
 =====Обзор===== =====Обзор=====
Строка 358: Строка 373:
   - Добавить всех пользователей в группу pulse-access;​   - Добавить всех пользователей в группу pulse-access;​
   -  В конфигурационном файле **/​etc/​default/​pulseaudio** (в Ubuntu 14.04 эта настройка перенесена в /​etc/​init.d/​pulseaudio) включаем system-mode:​ <code bash>​PULSEAUDIO_SYSTEM_START=1</​code>​   -  В конфигурационном файле **/​etc/​default/​pulseaudio** (в Ubuntu 14.04 эта настройка перенесена в /​etc/​init.d/​pulseaudio) включаем system-mode:​ <code bash>​PULSEAUDIO_SYSTEM_START=1</​code>​
-======Автоматическая настройка микрофона при подключении web камеры.====== 
-Ну и ещё один совет,​если у вас скайп периодически теряет веб камеру,​ что ​ лечится простым переподключением в usb,\\ 
-но поскольку web-камера ещё и микрофон,​ то слетает настройка микрофона в pulseaudio.\\ 
  
-Чтобы не обременять пользователя постоянным администрированием ​pulseaudioможно сделать скрипт.\\ +====== Автоматическое переключение ввода/​вывода звука на подключаемое устройство ====== 
-При подключении ​udev запустит скрипт который назначит микрофон от вебкамеры основным.\\ +При ​подключении наушников в порт наушников карты PCI драйвер ALSA в PulseAudio автоматически отключает ​порт громкоговорителей, ​и, если у вас в карте нет порта линейного выхода или у него меньший приоритетто порт вывода ​звука автоматически переключается на наушникиНо если вы подключаете наушники или микрофон ​по USB или Bluetooth, ​то ввод/​вывод звука на них автоматически ​не переключается. Чтобы настроить автоматическое переключение ввода/вывода звука ​на подключаемое устройство, можно подключить ​модуль PulseAudio module-switch-on-connectОн переключает сток/​источник по умолчанию в PulseAudio на новый появившийся сток/источник, соответствующий новому подключённому устройству, а также переключает все каналы вывода в сток / вывода из источника,​ используемые приложениями,​ со старого стока/источника по умолчанию на новый. Он идёт в стандартной поставке PulseAudio и подключается редактированием файла /​etc/​pulse/​default.pa,​ в него ​нужно добавить:
-Приведу голые скрипты (если файл не существует то создаём его):\\+
  
-/​etc/​udev/​rules.d/​90-webcam_mic.rules +  ​### Local additions from <​user>​ 
-  ​#SUBSYSTEM=="​usb",​ ATTR{idVendor}=="​046d",​ ATTR{idProduct}=="​09c1",​ RUN+="/​usr/​bin/​setsid /​usr/​local/​bin/​webcammic_udev"​ +  ​load-module module-switch-on-connect
-  ​SUBSYSTEM=="​sound",​ KERNEL=="​card1",​ ACTION=="​change",​ RUN+="/​usr/​local/​bin/​webcammic_udev"​+
  
-/​usr/​local/​bin/​webcammic_udev+В случае устройства,​ подключаемого по USB (например,​ веб-камеры или USB-наушников),​ альтернативным решением является настройка udev на автоматический запуск скрипта,​ который переключает в PulseAudio сток/​источник по умолчанию и каналы ввода/​вывода,​ при подключении устройства. Для этого нужно создать следующие файлы:​ 
 + 
 +/​etc/​udev/​rules.d/​90-usb-switch-to.rules:​ 
 +  SUBSYSTEM=="​sound",​ KERNEL=="​card1",​ ACTION=="​change",​ RUN+="/​usr/​local/​bin/​usb_switch_to_udev.sh"​ 
 + 
 +/​usr/​local/​bin/​usb_switch_to_udev.sh:​
   #!/bin/sh   #!/bin/sh
-  /​usr/​local/​bin/​webcammic ​&+  ​su <​user>​ -c "/​usr/​local/​bin/​usb_switch_to.sh" ​&
  
-/​usr/​local/​bin/​webcammic+/​usr/​local/​bin/​usb_switch_to.sh:​
   #!/bin/sh   #!/bin/sh
   sleep 5   sleep 5
-  ​su linux_user -c "echo \"set-default-source alsa_input.usb-046d_09c1-02-U0x46d0x9c1.analog-mono\" | pacmd"+  ​pacmd set-default-sink <​sink>​ 
 +  pacmd list-sink-inputs | awk '/​index:/​{print $2}' | xargs --I{} pacmd move-sink-input {} <​sink>​
  
-где alsa_input.usb-046d_09c1-02-U0x46d0x9c1.analog-mono - это имя микрофона в pulseaudio\\ +card1 — название подключаемого устройства, которое ​можно определить по файлу, появляющемуся в /​sys/​class/​sound при подключении устройства. Скрипт запускает другой скрипт в фон, который,​ в свою очередь,​ ждёт 5 секунд,​ пока появится нужный сток/источник, и затем производит переключение. <​user>​ — имя обычного пользователя, которому ​нужно ​выполнить переключение (можно эту строчку повторить несколько раз, меняя ​только имена пользователей,​ для переключения нескольким пользователям). <​sink>​ — имя стока, ​соответствующего подключаемому ​устройству (можно узнать, подключив устройство и выполнив команду pactl list sinks, см. поле name). Если ​нужно переключить не сток, ​а источник (подключается не наушники,​ а микрофон), то вместо set-default-sink <​sink>​ будет set-default-source <​source>,​ имя источника можно ​узнать из вывода команды pactl list sources.
-linux_user - логин вашего простого пользователя.\\ +
-такая связка ​нужна чтобы запустить ​webcammic в фоне, дождаться пока появится устройство ​в Pulseaudio и только тогда менять настройку.\\+
  
-Чтобы узнать ​  ​как называется ваш микрофон можно использовать команду 
-  pactl list sources 
-  ​ 
-  ​ 
 ======Bauer stereophonic-to-binaural DSP====== ======Bauer stereophonic-to-binaural DSP======
 Пример подключения LADSPA модуля [[http://​bs2b.sourceforge.net/​|bs2b]].\\ ​ Пример подключения LADSPA модуля [[http://​bs2b.sourceforge.net/​|bs2b]].\\ ​
 Установить плагин Установить плагин
 <​code>​sudo apt install bs2b-ladspa ladspa-sdk</​code>​ <​code>​sudo apt install bs2b-ladspa ladspa-sdk</​code>​
 +Далее либо командами в консоли,​ либо с помощью [[pulseaudio#​veromix|veromix]].
 Получить имя выхода по-умолчанию. Получить имя выхода по-умолчанию.
 <​code>​pacmd list-sinks</​code>​ <​code>​pacmd list-sinks</​code>​
Строка 397: Строка 408:
 pacmd load-module module-ladspa-sink sink_name=**[name]** master=**[default sink]** plugin=bs2b label=bs2b control=700,​4.5 pacmd load-module module-ladspa-sink sink_name=**[name]** master=**[default sink]** plugin=bs2b label=bs2b control=700,​4.5
  
-<​code>​pacmd load-module module-ladspa-sink ​+<​code>​pacmd load-module module-ladspa-sink sink_name=ladspa_out master=alsa_output.pci-0000_00_1b.0.analog-stereo plugin=bs2b label=bs2b control=700,​4.5</​code>​
-    ​sink_name=ladspa_out master=alsa_output.pci-0000_00_1b.0.analog-stereo ​+
-    ​plugin=bs2b label=bs2b control=700,​4.5</​code>​+
 Установить выход звука через плагин\\ ​ Установить выход звука через плагин\\ ​
-<​code>​set-default-sink ladspa_out</​code>​+<​code>​pacmd set-default-sink ladspa_out</​code>​
 или это же, но мышкой в настройках звука\\ ​ или это же, но мышкой в настройках звука\\ ​
 {{:​wiki:​pulseaudio:​bs2b-ladspa.png?​400|}} {{:​wiki:​pulseaudio:​bs2b-ladspa.png?​400|}}
  
-Если всё заработало,​ то можно добавить в настройки **/​etc/​pulse/​default.pa**+Если всё заработало,​ то можно добавить в настройки **/​etc/​pulse/​default.pa**\\ 
 +Или копируем **/​etc/​pulse/​default.pa** в **~/​.config/​pulse/​default.pa** и вписываем уже в него для применения только для данного пользователя.
 <​code>###​ BS2B plugin <​code>###​ BS2B plugin
-load-module module-ladspa-sink sink_name=ladspa_out master=alsa_output.pci-0000_00_1b.0.analog-stereo plugin=bs2b label=bs2b control=700,​4.5+load-module module-ladspa-sink sink_name=ladspa_out master=alsa_output.pci-0000_00_1b.0.analog-stereo plugin=bs2b label=bs2b control=700,​4.5 ​sink_properties=device.description=Bauer_stereophonic-to-binaural
 set-default-sink ladspa_out</​code>​ set-default-sink ladspa_out</​code>​
  
-======Шумоподавитель для микрофона в skype======+======Шумоподавитель для микрофона в skype, steam и т.п.======
  
 Сначала проверим работу фильтра.\\ ​ Сначала проверим работу фильтра.\\ ​
Строка 416: Строка 426:
 <​code>​PULSE_PROP="​filter.want=echo-cancel"​ skype</​code>​ <​code>​PULSE_PROP="​filter.want=echo-cancel"​ skype</​code>​
  
-Вписываем в **/​etc/​pulse/​default.pa** для автозапуска при старте pulseaudio+Вписываем в **/​etc/​pulse/​default.pa** для автозапуска при старте pulseaudio.\\ 
 +Или копируем **/​etc/​pulse/​default.pa** в **~/​.config/​pulse/​default.pa** и вписываем уже в него для применения только для данного пользователя.
 <​code>###​ Шумоподавитель <​code>###​ Шумоподавитель
-load-module module-echo-cancel source_name=noechosource sink_name=noechosink+load-module module-echo-cancel source_name=noechosource sink_name=noechosink ​source_properties=device.description=Микрофон_с_шумоподавителем sink_properties=device.description=Выход_без_эха
 set-default-source noechosource</​code>​ set-default-source noechosource</​code>​
 +
 +В моём случае эта строка выглядит так:
 +<​code>###​ Шумоподавитель
 +load-module module-echo-cancel source_name=alsa_input.pci-0000_00_1b.0.analog-stereo sink_name=alsa_output.pci-0000_00_1b.0.analog-stereo source_properties=device.description=Микрофон_с_шумоподавителем sink_properties=device.description=Выход_без_эха
 +set-default-source alsa_input.pci-0000_00_1b.0.analog-stereo.2</​code>​
 +Далее в skype (steam и т.п.) указываем в качестве микрофона новый «Микрофон_с_шумоподавителем».
  
 К сожалению,​ в текущей версии PulseAudio существует [[https://​bugs.freedesktop.org/​show_bug.cgi?​id=83557|баг]],​ из-за которого этот модуль работает только тогда, когда производится не только запись,​ но и воспроизведение. Скажем,​ в Skype, Mumble и прочих голосовых телефонах будет все сразу замечательно,​ а если вы заходите только записать звук, например,​ через audacity, то следует включить в нем какую-то музыку фоном, даже с минимальной громкостью. К сожалению,​ в текущей версии PulseAudio существует [[https://​bugs.freedesktop.org/​show_bug.cgi?​id=83557|баг]],​ из-за которого этот модуль работает только тогда, когда производится не только запись,​ но и воспроизведение. Скажем,​ в Skype, Mumble и прочих голосовых телефонах будет все сразу замечательно,​ а если вы заходите только записать звук, например,​ через audacity, то следует включить в нем какую-то музыку фоном, даже с минимальной громкостью.