Это старая версия документа.


Содержание

Кратко о PulseAudio

Обзор хорошо написан в википедии.
Cводный список основных отличий от Alsa:

  1. PulseAudio — «слой звуковой абстракции», принимающий звуковой поток от приложений и передающий его Alsa;
  2. PulseAudio оперирует объектами и позволяет перенаправлять звуковой поток между ними (роутинг);
  3. PulseAudio — демон, обычно запускаемый от имени пользователя;
  4. Позволяет передавать звук по сети и «расшаривать» микрофоны, установленные на других компьютерах. Теперь при отключении USB-колонки ни одна прога не подвиснет, а будет переброшена на другую доступную карту.

Установка Pulseaudio 2.0

На данный момент (6.08.2012) в репозиториях Ubuntu 12.04 лежит пакет pulseaudio версии 1.1, тем временем уже давно доступна версия 2.0, поэтому если у вас есть какие либо проблемы со звуком, есть смысл попробовать установить более новую версию. Улучшения описаны на официальном сайте(eng).

sudo add-apt-repository ppa:ubuntu-audio-dev/ppa
sudo apt-get update && sudo apt-get upgrade

для восстановления предыдущей версии:

sudo apt-get install ppa-purge && sudo ppa-purge ppa:ubuntu-audio-dev

Заикается звук в skype

Проблема со skype и pulseaudio.
На старом проце (AMD Athlon™ XP 1500+), звук в скайпе сильно квакает.
Процессор нагружен на 100%.
Долго разбирался, в результате нашёл инструкцию http://pc-freak.net/blog/fix-to-gnome-pulseaudio-server-crappy-sound-on-debian-gnu-linux-pulseaudio-debian-workaround/
Продублирую:
прописываем в файле /etc/pulse/daemon.conf

default-fragments = 8
default-fragment-size-msec = 5

ставим пакет sudo apt-get install paprefs
после установки запускаем от имени простого пользователя,
На закладке Simultaneous output
ставим галку «Add virtual output device for simultaneous output on all local sound cards»

перезапускаем

pulseaudio -k

если не поможет попробуйте дополнительно прописать в файле /etc/pulse/daemon.conf следующие настройки.

enable-shm = yes
shm-size-bytes = 0
high-priority = yes
nice-level = -11
realtime-scheduling = yes
realtime-priority = 5

и снова перезапускаем

pulseaudio -k

Замечено, что чем меньше клиентов у pulseaudio тем лучше он работает, не зависимо от нагрузки процессора.
Поэтому, особенно на слабых процессорах, когда разговариваете по skype рекомендую закрывать других клиентов.
Таким клиентами являются: видео проигрыватель, музыкальный проигрыватель и даже pavucontrol.

Основные понятия PulseAudio

Card, Sink & Source

Известно, что у звуковой карты два типа гнёзд: входы (line in, микрофон) и выходы (наушники, line out, S/PDIF). В типовой конфигурации для каждой имеющейся звуковой карты и её «гнёзд» PulseAudio создаёт следующие объекты:

  • Card. Объект представляет физическую звуковую карту со всеми её входами и выходами;
  • Sink (англ. низина) — «сток», принимающий звуковой поток. Представляет выход звуковой карты: линейный выход, наушники, колонки ноутбука;
  • Source (англ. источник) — источник звука, создающий звуковой поток. Представляет вход звуковой карты: линейный вход, микрофон.

В PulseAudio задаётся «default Sink» и «default Source»: объекты, используемые по умолчанию для свежезапущенных приложений. Замечу, что Sink не обязательно должен описывать физический порт звуковой карты: это абстракция приёмника потока звука. PulseAudio — штука высокоуровневая и позволяет создавать весьма «хитрые» объекты: например, Sink типа 'NULL' (реализуемый модулем PulseAudio module-null-sink) просто поглотит звук, а модуль module-pipe-sink позволит передавать звуковой поток через файл FIFO. Также можно создавать сетевые Sink'и, ведущие multicast-вещание или передающие звуковой поток определённому хосту. Всё это реализуется модулями PulseAudio.

Итак, звук проигрывается через «Sink», а записывается через «Source».

Sink-Input & Source-Output

  • Sink-Input Когда приложение, поддерживающее PulseAudio, собирается проигрывать звук — оно направляет свой вывод в один из объявленных Sink'ов и становится «входом Sink'a»: Sink Input. Приложение может создавать несколько потоков вывода, создавая отдельные Sink-Input'ы для каждого потока.
  • Source-Output. Если же приложение собирается принимать звук из некоторого Source (звукозапись) — оно становится «выходом Source'а»: Source-Output.

Каждый Sink-Input по умолчанию связываться с одним из Sink'ов и передаёт звуковой поток. PulseAudio далее определяет с чем связан Sink (например, звуковая карта) и передаёт его по назначению. Существует особый тип Source'а: Monitor. Для каждого Sink'а может быть создан отдельный монитор, позволяющий вести запись. Так, получается запись «звука из колонок».

Итак, медиаплеер создаёт Sink-Input, а Skype — и Sink-Input, и Source-Output.

module, client, sample

В рамках статьи — чисто информационные :)

  • Module. Загруженный модуль PulseAudio. Например, загрузка module-alsa-sink с заданием пераметров, указывающих на устройство Alsa — создаст Sink, связанный с этим устройством. Существуют и другие модули, создающие объекты PulseAudio, позволяющие управлять им, использовать FIFO для обмена звуковым потоком и многое другое;
  • Client. Приложение, подключившееся к PulseAudio. Может создавать потоки Sink-Input и Source-Output и управлять демоном PulseAudio.

Sample. Звуковой сэмпл, загруженный в PulseAudio для быстрого воспроизведения. Может использоваться для проигрывания стандартных звуков. Например, x11 bell. Могут проигрываться по команде от модуля, клиента или из консоли.

ALSA → PulseAudio

Конечно же, сперва нужно убедиться что PulseAudio установлен и запущен:

sudo apt-get install pulseaudio
pulseaudio --start -D

Далеко не каждое приложение умеет работать с PulseAudio напрямую: обычно они умеют использовать Alsa. Для таких приложений нужно сообщить, чтобы Alsa перенаправляла их звуковые потоки к PulseAudio. Для этого в файл ~/.asoundrc вставляем следующие строки (Которые, кстати, вылечат микрофон Skype'а! если ещё отключить «Позволить скайп автоматически подстраивать громкость»):

pcm.pulse { type pulse }
ctl.pulse { type pulse }
pcm.!default { type pulse }
ctl.!default { type pulse }

Первые две строки создадут виртуальные устройства ALSA с именем 'pulse' для ввода и вывода, а также устройство контроля (громкости). Следующие две — определяют их как «по умолчанию»: теперь все приложения вместо Alsa будут использовать PulseAudio через специальный плагин (и ничего не подозревать). Для применения измений нужно перезапустить звуковые приложения. Свежезапущенные приложения подхватят изменения сами. Приложения, использующие OSS (/dev/dsp), нужно запускать через враппер

padsp [options] PROGRAM [ARGUMENTS ...]

Программы управления Pulseaudio

GUI инструменты

Если Вы читаете эту статью чтобы решить пару нюансов и не вникать — рекомендуется попробовать GUI-tools, описанные на странице PulseAudio. С помощью pavucontrol можно будет быстро выбрать устройство записи «по умолчанию» (Input Devices, кнопка справа «Set as fallback») и Skype будет работать :) Также pavucontrol позволяет управлять громкостью общей и отдельных приложений.

veromix

Многофункциональный микшер для звукового сервера PulseAudio, имеющий Python / GTK и QT (pyqt) графический интерфейс. Установка через Центр приложений Ubuntu или через консоль:

sudo apt install veromix

Консольные инструменты

pactl

Управление PulseAudio осуществляется с помощью команды pactl, про которую нельзя сказать что она удобная и продвинутая :) однако тренироваться будем с ней.

pacmd

Кроме pactl существует другая утилита для управления PulseAudio: pacmd. Если к PulseAudio подключен модуль module-cli-protocol — создаётся UNIX-сокет на котором висит PulseAudio-shell. Это во многом похоже на telnet. Шелл принимает текстовые команды и исполняет их. pacmd help покажет список доступных команд.
Проблема в том, что pactl умеет не всё, а pacmd не так удобен в использовании. В дальнейшем будем придерживаться pactl, однако если его функционала не хватит — используем pacmd.

patricks

Утилита для управления демоном PulseAudio :)

Особенности:

  • Короткие, интуитивные команды
  • Дозированная подача информации командой ls: теперь в терминал не будет вываливаться тонна информации (особенно properties)
  • Все объекты — в том числе порты и профайлы — можно задавать как по имени, так и по индексу
  • Команда set sink 0 port next — можно не гадать номер порта и просто переключиться на следующий. Удобно для хоткея.
  • Наличие команды mv sink 0 all для перемещения всех звуковых потоков в нужный Sink (USB-Колонка)

Полакомиться можно на GitHub: ootync/Patricks (файлы скрипта положить куда-нибудь и сделать симлинк на patricks.php)

Пример работы: Посмотреть список Sink'ов. Текущий Sink выделен символом >:

ootync@rtfm ~ $ patricks ls sinks
>Sink#0 <alsa_output.pci-0000_00_1b.0.analog-stereo>
 Sink#1 <alsa_output.pci-0000_00_2b.0.hdmi-stereo>

Внимательнее присмотретсья к Sink #0:

ootync@rtfm ~ $ patricks ls sink 0
Sink#0 <alsa_output.pci-0000_00_1b.0.analog-stereo>
Is Default: yes
Description: Internal Audio Analog Stereo
State: RUNNING
Driver: module-alsa-card.c
Owner Module: Module#4 <module-alsa-card>
Sample Spec: s16le 44100ch 2Hz
Channel Map: front-left, front-right
Mute: no
Volume: 25%
Base Volume: 100
Latency: 199703
Configured Latency: 210000
Flags: HARDWARE, HW_MUTE_CTRL, HW_VOLUME_CTRL, DECIBEL_VOLUME, LATENCY
Ports: analog-output, analog-output-headphones
Active Port: analog-output
Monitor Source: Source#0 <alsa_output.pci-0000_00_1b.0.analog-stereo.monitor>
Id: 0
Name: alsa_output.pci-0000_00_1b.0.analog-stereo
Proplist: 33 items

Внимательнее посмотреть на список портов Sink #0:

ootync@rtfm ~ $ patricks ls sink 0 ports
>#0 analog-output: "Analog Output" prio=9900
 #1 analog-output-headphones: "Analog Headphones" prio=9000

Переключить Sink #0 на следующий порт

ootync@rtfm ~ $ patricks set sink 0 port next
Sink#0 <alsa_output.pci-0000_00_1b.0.analog-stereo>: analog-output-headphones

Перекинуть все Sink-Input'ы на следующий Sink (например, свежеподключенную USB-колонку)

ootync@rtfm ~ $ patricks mv sink next all
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

Настройка

Обзор

Для начала давайте посмотрим что у нас есть: какие объекты определены в PulseAudio. Рекомендую запустить фоновую музыку чтобы было на что смотреть Команда

pactl list

покажет длинный список существующих объектов.
У каждого объекта есть набор описывающих его полей, а также специальное поле «Properties»: список key-value свойств (обычно строковых).
У всех объектов есть index (Sink #0) — уникальный номер объекта определённого типа. Также многие объекты имеют имена (Name: ): index и Name можно использовать для обращения к конкретному объекту.

Рекомендую присмотреться к полям объектов Sink и Source: по умолчанию они описывают Ваше железо. Покажу свой пример:

Sink #1 — Sink: вопроизводит звук
        State: RUNNING — Sink работает: через него проигрывается музыка
        Name: alsa_output.pci-0000_00_1b.0.analog-stereo — Уникальное имя Sink'а
        Description: Internal Audio Analog Stereo — Текстовое описание Sink'а
        Driver: module-alsa-card.c — Используемый "драйвер": модуль PulseAudio, создавший этот Sink
        Sample Specification: s16le 2ch 44100Hz — Параметры дискретизации, количество каналов, кодирование.
        Channel Map: front-left,front-right — Звуковые каналы
        Owner Module: 5 — index модуля, создавшего этот Sink
        Mute: no
        Volume: 0:  26% 1:  26% — Громкость обоих каналов
                0: -35.42 dB 1: -35.42 dB
                balance 0.00
        Base Volume: 100% — "Базовая громкость": указывает на некоторую "неусиленную" громкость устройства вывода
                     0.00 dB
        Monitor Source: alsa_output.pci-0000_00_1b.0.analog-stereo.monitor — Имя "монитора", связанного с этим Sink
                                                        (виртуальный Source: позволяет писать "звук с колонок")
        Latency: 161458 usec, configured 210000 usec — Параметры звукового лага
        Flags: HARDWARE HW_MUTE_CTRL HW_VOLUME_CTRL DECIBEL_VOLUME LATENCY 
        Properties: ... — Всякие свойства. Там можно увидеть имя устройства Alsa, куда этот Sink отдаёт звук
        Ports: — Порты Sink'а: соответствуют физическим портам звуковой карты
                analog-output: Analog Output (priority. 9900) — Выход наушников
                analog-output-speaker: Analog Speakers (priority. 10000) — Колонки ноутбука
        Active Port: analog-output-speaker — Текущий выбранный порт: музыка у меня играет из колонок ноута.
Card #1 — Физическая звуковая карта
        Name: alsa_card.pci-0000_00_1b.0
        Driver: module-alsa-card.c
        Owner Module: 5
        Properties: ...
        Profiles: — Профили звуковой карты: выбранный пресет маппинга физических портов. 
                output:analog-stereo: Analog Stereo Output (sinks: 1, sources: 0, priority. 6000)
                output:analog-stereo+input:analog-stereo: Analog Stereo Duplex (sinks: 1, sources: 1, priority. 6060)
                output:iec958-stereo: Digital Stereo Duplex (IEC958) (sinks: 1, sources: 0, priority. 5500)
                output:iec958-stereo+input:analog-stereo: Digital Stereo (IEC958) Output + Analog Stereo Input (sinks: 1, sources: 1, priority. 5560)
                input:analog-stereo: Analog Stereo Input (sinks: 0, sources: 1, priority. 60)
                off: Off (sinks: 0, sources: 0, priority. 0)
        Active Profile: output:analog-stereo+input:analog-stereo
Source #1 — Source: позволяет записывать звук
        State: IDLE — Source бездействует: я ничего не записываю :)
        Name: alsa_output.pci-0000_00_1b.0.analog-stereo.monitor
        Description: Monitor of Internal Audio Analog Stereo
        Driver: module-alsa-card.c
        Sample Specification: s16le 2ch 44100Hz
        Channel Map: front-left,front-right
        Owner Module: 5
        Mute: no
        Volume: 0: 100% 1: 100%
                0: 0.00 dB 1: 0.00 dB
                balance 0.00
        Base Volume: 100%
                     0.00 dB
        Monitor of Sink: alsa_output.pci-0000_00_1b.0.analog-stereo — Этот Source создан как монитор 1го Sink'а:
                                                 из него можно записывать то что слышно из колонок
        Latency: 0 usec, configured 1999818 usec
        Flags: DECIBEL_VOLUME LATENCY 
        Properties: ...

Card Profile: маппинг портов звуковой карты

У звуковой карты ограниченное количество разъёмов, а применений им может найтись масса: можно задействовать все под вывод звука 5.1 и оставить один для микрофона; или же оставить один джек под стерео-выход, зато получить входы для микрофона и линейный; или…
Увы, магия здесь не прокатит: наборы предустановлены производителем. Их список можно посмотреть в поле «Profiles» объекта «Card». Для каждого профиля задаётся приоритет (priority): число, определяющее «степень привлекательности» именно этого профайла. По умолчанию PulseAudio выбирает профайл с наибольшим приоритетом. Для каждого профайла указывается сколько Sink'ов и Source'ов он породит если его выбрать: sinks: 1, sources: 0.

На данный момент нельзя изменить приоритеты, однако можно выбрать тот или иной профиль. Подсматриваем в выводе pactl list имя карты и профиля, и выбираем:

pactl set-card-profile 'alsa_card.pci-0000_00_1b.0' 'output:analog-stereo+input:analog-stereo'

Всё, порты карты переназначены. Можно вообще выключить все разъёмы, выбрав профайл «off»:

pactl set-card-profile 'alsa_card.pci-0000_00_1b.0' 'off'

Sink Port: переключение звука на наушники

У одного Sink'а может быть несколько звуковых портов. Например, Sink созданный на основе звуковой карты ноутбука, может иметь два порта: встроенные колонки и выход на наушники. Текущий порт Sink'а можно посмотреть в его поле Active Port: analog-output-speaker. Глядя на список Ports нужного объекта Sink, назначаем порт:

pactl set-sink-port 'alsa_output.pci-0000_00_1b.0.analog-stereo' 'analog-output'

и звук моментально перебрасывается на наушники, отключая колонки.
Аналогично для Source. Возможно, Ваш микрофон не работает в Skype именно из-за того что выбран не тот порт записи :)

Default Sink: звуковой выход по умолчанию

PulseAudio метит один из Sink'ов как «по умолчанию»: новые запущенные приложения по умолчанию будут проигрываться через него. Другими словами, если приложение при создании Sink-Input'а не выбирает Sink самостоятельно (например, из пользовательских настроек) — выбирается default-sink. Sink по умолчанию можно посмотреть выполнив команду pactl stat:

$ pactl stat
...
Default Sink: alsa_output.pci-0000_00_1b.0.analog-stereo
Default Source: alsa_input.usb-046d_0802_0825F490-02-U0x46d0x802.analog-mono

Изменим его: смотрим имя нужного Sink'а и пишем:

pacmd set-default-sink '1'

Обратите внимание что pacmd в некоторых случаях позволяет использовать номера вместо длинных имён. Аналогично для Source. Кстати, неверно выбранный default-Source тоже может не давать общаться в Skype :)

Move Sink-Input: перемещение звукового потока

Этим действием можно перекинуть Sink-Input с одного Sink'а на другой. Таким образом можно перебросить музыку на только что подключенную USB-колонку. Смотрим имена двух Sink'ов, находим нужный Sink-Input и пишем:

pactl move-sink-input 16 '1'

и звук Sink-Input#16 моментально переключается на Sink #1. Это может быть USB-колонка. Увы, перебросить сразу все Sink-Input'ы с помощью pactl или pacmd нельзя. В конце статьи будет решение. Source-Output также можно переключать между Source'ами.

Управление громкостью

Громкость в PulseAudio задаётся численно: 0..65535 (соответствует 0% и 100%), а также — сюрприз! — значения большие чем 100% вызывают усиление сигнала что незаменимо при просмотре фильмов с ненормализованной громкостью. Здесь можно использовать index Sink'а:

pactl set-sink-volume '1' 100 # очень тихо! 100/65535 = 0,15%
pactl set-sink-volume '1' 65535 # 100%
pactl set-sink-volume '1' 78642 # 120% — усиление
pactl set-sink-mute '1' true # соседи могут засыпать

Усиление может вызывать clipping: всем известный «дребезг». Аналогично можно управлять громкостью Source'ов. UPD: с версии 0.9.15 появилась фича «FLAT_VOLUME» (её можно увидеть в Sink 'Flags'). При наличии этого флага громкость Sink'а автоматически устанавливается как максимальная громкость всех Sink-Input'ов. Отключить её можно так: echo «flat-volumes = no» » /etc/pulse/daemon.conf

Громкость приложений

С появлением Windows7 линуксоиды, не знакомые с PulseAudio, обзавидовались возможности регулировать громкость отдельных приложений :) Теперь это возможно: смотрим index нужного Sink-Input'а и усиливаем отдельное приложение:

pactl set-sink-input-volume '16' 80000

Приостановка

Sink и Source можно «приостановить»:

pactl suspend-sink '1'

Конфиг

Когда Вам в голову придёт мысль добавить одну из этих команд в автозагрузку — немедленно выбросьте её! В таких случаях нужно использовать файл конфигурации PulseAudio. Пример можно найти в файле /etc/pulse/default.pa. Обратите внимание на shebang #!/usr/bin/pulseaudio -nF: это скрипт, синтаксис которого очень похож на команды, которые понимаем pacmd. Для самообразования: pacmd — Запускает интерактивную консоль PulseAudio
pacmd help — список команд, на оффсайте
Модули PulseAudio

Звуковой сервер

Одна из интереснейших возможностей аудиосервера pulseaudio — это передача аудиопотока по сети на удалённые аудиоустройства. В общем случае- это сервер с подключенными колонками.
В результате Вы получаете полностью отвязанный от проводов1) ноутбук, воспроизводящий звук при просмотре любимых фильмов на большую акустическую систему.
Для прослушивания музыки данный способ не рекомендуется, проще и качественнее использовать mpd на сервере плюс какой любо клиент на ноутбуке.

Настройка клиента

Настройка клиента тривиальна. Раньше для выбора сервера для воспроизведения использовалась утилита padevchooser, теперь этот проект заброшен и ему на смену пришел пакет pasystray.
Для его установки необходимо добавить сторонний PPA ppa:christoph-gysin/pasystray.

sudo apt-add-repository ppa:christoph-gysin/pasystray
sudo apt-get update
sudo apt-get install pasystray

Pasystray не запустится, если у вас не запущен avahi-daemon, данная служба необходима, как раз, для сканирования локальной сети на предмет наличия общедоступных сервисов. Поэтому если вы её, по каким либо причинам удаляли, то необходимо установить:

sudo apt-get install avahi-daemon

Необходимо добавить запись Pasystray в whitelist панели unity для того, что бы иконка могла отображаться.
С помощью данной утилиты вы можете выбрать сервер pulseaudio, доступный в текущей сети (пункт меню Default Server), и управлять основными его функциями (для этого в меню предусмотрены специальные пункты, и если какие либо из них не доступны, значит в вашей системе не установлены приложения, которые для них требуются) Manager…- запускает paman
Volume Control…- запускает pavucontrol
Volume Meter()…- запускает pavumeter

В стандартных наборах иконок нет иконки для pasystray, поэтому на панели она может выбиваться из общего стиля, для замены необходимо создать символьную ссылку, например так:
Для AwOken
 sudo ln -s /usr/share/icons/AwOken/clear/24x24/apps/covergloobus.png /usr/share/icons/AwOken/clear/24x24/apps/pasystray.png

Для Faenza-Ambiance (светлая панель)

 sudo ln -s /usr/share/icons/Faenza/status/24/covergloobus-panel.png /usr/share/icons/Faenza/status/24/pasystray.png

Для Faenza-Radiance (темная панель)

 sudo ln -s /usr/share/icons/Faenza-Dark/status/24/covergloobus-panel.png /usr/share/icons/Faenza-Dark/status/24/pasystray.png

</note>

Настройка сервера

  1. Ставим Avahi, если не стоит:
    sudo apt-get install avahi-daemon

  2. Нам необходим pulseaudio и модуль, автоматически размещающий данные о наличии аудиосервера в локальной сети через службу Avahi.

    sudo apt-get install pulseaudio pulseaudio-module-zeroconf esound

  3. Создадим группу audio, участники которой имеют право доступа к аудиоустройствам:

    sudo groupadd audio

  4. Добавим себя в эту группу:

    sudo gpasswd -a user audio

  5. Добавим себя ещё и в эту группу, для доступа к pulseaudio:

    sudo gpasswd -a user pulse-access

  6. Поставим alsa.

    sudo apt-get install alsa libasound2-plugins

  7. Убедимся, что вам доступны аудиоустройства. Эта комманда покажет список доступных устройств в системе.

    aplay -l

  8. Подправим конфиг pulseaudio:

    sudo nano /etc/pulse/default.pa

    Для доступа из сети к аудиосерверу раскомментируете три строки и добавьте параметры загрузки модулей module-esound-protocol-tcp и module-native-protocol-tcp:

    ### Network access (may be configured with paprefs, so leave this commented
    ### here if you plan to use paprefs)
    load-module module-esound-protocol-tcp auth-ip-acl=127.0.0.1;192.168.0.0/16
    load-module module-native-protocol-tcp auth-ip-acl=127.0.0.1;192.168.0.0/16
    load-module module-zeroconf-publish

    где 127.0.0.1;192.168.0.0/16 — это сети, в которых будет доступен наш сервер2). По умолчанию pulseaudio слушает порт 4317, если вы изменяли настройки iptables, не забудьте его открыть3).
    С конфигом всё.

  9. Перезагружаем сервер. Если все прошло успешно — то сервер должен появится в pasystray в пункте Default Server у клиента4).

    pulseaudio -D

    Остановить так:

    pulseaudio -k

  10. Теперь можно добавить службу pulseaudio в автозагрузку.
    Если у вас на сервере так же работает mpd, то можно сконфигурировать его на использование выхода- pulseaudio, и тогда он будет сам запускать сервер при старте, таким образом в автозагрузку служб можно будет добавить только mpd. Так же плюсом данного способа будет то, что звук в mpd и приложениях, использующих перенаправление звука, будет выровнена громкость.

Использование

Для корректного перенаправления звукового потока необходимо сначала в pasystray, выбрать Default Server <имя_пользователя>@<имя_сервера>, а потом запускать приложение, воспроизводящее звук.

Проблемы

Проверка схемы перенаправления звука

Если у вас возникают какие либо проблемы и вы хотите проверить работоспособность схемы перенаправления звука, то можно запустить любимый плеер, указав явно сервер pulseadio

PULSE_SERVER=192.168.1.2 deadbeef

Avahi-daemon и локальный домен (.local)

Перенесено в статью о Avahi

Звук не перенаправляется

Иногда возникает ситуация5), когда avahi-daemon работает, в pasystray указываем вывод через другой сервер, звук пропадает на локальном компьютере, но не появляется на сетевом (в VLC это сопровождается появлением ошибки).
Решение:

  1. Завершаем работу pasystray;
  2. Перезапускаем avahi-daemon, для этого нажимаем Alt+F2 и вводим команду gksu service avahi-daemon restart, в появившемся окне вводим пароль;
  3. Запускаем pasystray для этого нажимаем Alt+F2 и вводим команду pasystray

Воспроизведение звука от двух пользователей одновременно

По умолчанию в pulseaudio заложено следующее поведение: при переключении пользователя в системе звук воспроизводится только от одного пользователя. Это может показаться неудобным тем, кто хочет слышать музыку, запущенную у одного из пользователей, или звуковые оповещения «фонового» пользователя. Для того, что бы появилась возможность слышать звук от нескольких пользователей одновременно, необходимо:

  1. Добавить всех пользователей в группу pulse-access;
  2. В конфигурационном файле /etc/default/pulseaudio (в Ubuntu 14.04 эта настройка перенесена в /etc/init.d/pulseaudio) включаем system-mode:
    PULSEAUDIO_SYSTEM_START=1

Автоматическая настройка микрофона при подключении web камеры.

Ну и ещё один совет,если у вас скайп периодически теряет веб камеру, что лечится простым переподключением в usb,
но поскольку web-камера ещё и микрофон, то слетает настройка микрофона в pulseaudio.

Чтобы не обременять пользователя постоянным администрированием pulseaudio, можно сделать скрипт.
При подключении udev запустит скрипт который назначит микрофон от вебкамеры основным.
Приведу голые скрипты (если файл не существует то создаём его):

/etc/udev/rules.d/90-webcam_mic.rules

#SUBSYSTEM=="usb", ATTR{idVendor}=="046d", ATTR{idProduct}=="09c1", RUN+="/usr/bin/setsid /usr/local/bin/webcammic_udev"
SUBSYSTEM=="sound", KERNEL=="card1", ACTION=="change", RUN+="/usr/local/bin/webcammic_udev"

/usr/local/bin/webcammic_udev

#!/bin/sh
/usr/local/bin/webcammic &

/usr/local/bin/webcammic

#!/bin/sh
sleep 5
su linux_user -c "echo \"set-default-source alsa_input.usb-046d_09c1-02-U0x46d0x9c1.analog-mono\" | pacmd"

где alsa_input.usb-046d_09c1-02-U0x46d0x9c1.analog-mono - это имя микрофона в pulseaudio
linux_user - логин вашего простого пользователя.
такая связка нужна чтобы запустить webcammic в фоне, дождаться пока появится устройство в Pulseaudio и только тогда менять настройку.

Чтобы узнать как называется ваш микрофон можно использовать команду

pactl list sources

Bauer stereophonic-to-binaural DSP

Пример подключения LADSPA модуля bs2b.
Установить плагин

sudo apt install bs2b-ladspa ladspa-sdk

Получить имя выхода по-умолчанию.

pacmd list-sinks

Например, у меня это alsa_output.pci-0000_00_1b.0.analog-stereo
Установить плагин
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=ladspa_out master=alsa_output.pci-0000_00_1b.0.analog-stereo \
    plugin=bs2b label=bs2b control=700,4.5

Установить выход звука через плагин

set-default-sink ladspa_out

или это же, но мышкой в настройках звука

Если всё заработало, то можно добавить в настройки /etc/pulse/default.pa

### 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
set-default-sink ladspa_out

Шумоподавитель для микрофона в skype

Сначала проверим работу фильтра.
Запускаем skype с дополнительной переменной

PULSE_PROP="filter.want=echo-cancel" skype

Вписываем в /etc/pulse/default.pa для автозапуска при старте pulseaudio

### Шумоподавитель
load-module module-echo-cancel source_name=noechosource sink_name=noechosink
set-default-source noechosource

К сожалению, в текущей версии PulseAudio существует баг, из-за которого этот модуль работает только тогда, когда производится не только запись, но и воспроизведение. Скажем, в Skype, Mumble и прочих голосовых телефонах будет все сразу замечательно, а если вы заходите только записать звук, например, через audacity, то следует включить в нем какую-то музыку фоном, даже с минимальной громкостью. Если вы используете второй способ, убедитесь, что нужная вам программа воспроизводит аудио в sink с шумоподавлением, а не напрямую в аудиокарту. Перенести sink можно, например, через pavucontrol. Не воспроизводите музыку в аудиоплеере через sink с шумоподавлением, а то получите звук в моно и 32кГц.

Удаление

На данный момент Pulseaudio доработан и при его использовании не возникает особых проблем, но если, всё таки, проблемы есть6), то есть смысл попробовать удалить.

Все нижеописанные действия стоит начинать только в случае крайней необходимости! Инструкция подходит для Ubuntu 9.10 / 10.04 / 10.10 / 11.04 / 11.10
  • Завершаем работу PulseAudio:

    killall pulseaudio
  • Удаляем ненужные пакеты:

    sudo apt-get remove pulseaudio gstreamer0.10-pulseaudio -y
  • Изменяем настройки gstreamer:

    gconftool-2 -s --type string /desktop/gnome/sound/default_mixer_device "alsamixer"
    gconftool-2 -s --type list --list-type string /desktop/gnome/sound/default_mixer_tracks "[Master]"
    gconftool-2 -s --type boolean /desktop/gnome/sound/enable_esd false
    gconftool-2 -s --type string /system/gstreamer/0.10/default/audiosink "alsasink"
    gconftool-2 -s --type string /system/gstreamer/0.10/default/audiosrc "alsasrc"
    gconftool-2 -s --type string /system/gstreamer/0.10/default/chataudiosink "alsasink"
    gconftool-2 -s --type string /system/gstreamer/0.10/default/musicaudiosink "alsasink"
  • Добавляем репозиторий, содержащий изменённый апплет громкости и пакеты, для нормальной работы без PulseAudio:

    sudo add-apt-repository ppa:dtl131/ppa
  • Обновляем списки репозиториев и обновляем пакеты:

    sudo apt-get update && sudo apt-get upgrade
  • Перезагружаемся.

  • Теперь нужно добавить новый апплет звука на панель. Для этого жмём правой кнопкой мыши на панели → Добавить на панель… → в списке выбираем Регулятор громкости.

В GNOME Classic из Ubuntu 11.10 требуется зажать Alt и нажать правую кнопку мыши для того, чтобы появился пункт Добавить на панель…

Апплет для Unity

Так как в Unity нет привычной панели с апплетами, нужно установить другой регулятор громкости, к примеру: volti. Для установки, скачайте и установите deb пакет последней версии. Необходимо добавить запись Volti в whitelist панели unity для того, что бы иконка могла отображаться.

Восстановление

Если возникли проблемы и звука теперь вообще нет, или что то не работает - можно легко вернуть все обратно.

  • Снова ставим PulseAudio:

    sudo apt-get install pulseaudio gstreamer0.10-pulseaudio indicator-sound -y
  • Удаляем добавленный ранее репозиторий и все оставшиеся от него пакеты:

    sudo apt-get install ppa-purge
    sudo ppa-purge ppa:dtl131/ppa
  • Изменяем настройки GStreamer:

    gconftool-2 -s --type string /desktop/gnome/sound/default_mixer_device ""
    gconftool-2 -s --type list --list-type string /desktop/gnome/sound/default_mixer_tracks "[]"
    gconftool-2 -s --type boolean /desktop/gnome/sound/enable_esd true
    gconftool-2 -s --type string /system/gstreamer/0.10/default/audiosink "autoaudiosink"
    gconftool-2 -s --type string /system/gstreamer/0.10/default/audiosrc "autoaudiosrc"
    gconftool-2 -s --type string /system/gstreamer/0.10/default/chataudiosink "autoaudiosink"
    gconftool-2 -s --type string /system/gstreamer/0.10/default/musicaudiosink "autoaudiosink"
  • Очищаем настройки старого PulseAudio:

    rm -r ~/.pulse ~/.asound* 
    sudo rm /etc/asound.conf
  • Перезагружаемся.

Ссылки

1)
кроме питания
2)
localhost необходим, что бы приложения на сервере, например mpd, получали доступ к pulseaudio
3)
по умолчанию все порты в iptables открыты
4)
возможно может понадобится перезапуск pasystray или avahi-daemon на клиенте
5)
я пока не отследил по какой причине
6)
Необходимостью может являться пропадание звука после перезагрузки и сообщение «Ожидание ответа звуковой подсистемы»