Предыстория

Пару дней назад я случайно заметил, что в Аrch пакет pulseeffects не работает, если у вас до сих пор pulseaudio используется в качестве звукового сервера.

Узнал про это случайно – слушал композицию, котороя в дефолтных настройках звучит не так шикарно, как с верно настроенным эквалайзером, решил переслушать, включив нужный пресет у эквалайзера, в итоге обнаружил, что pulseeffects запускается, но нужные эффекты на звук не накладываются.

Оказалось, что сопровождающий пакета pulseeffects стал собирать его с pipewire вместо pulseaudio.

Пруф:

ldd /usr/bin/pulseeffects|grep pipewire
	libpipewire-0.3.so.0 => /usr/lib/libpipewire-0.3.so.0 (0x00007f10ed03b000)

Стал изучать зависимости пакета, когда запустил pulseeffects, а он внезапно не смог наложить эффекты на звук, транслируемый pulseaudio.

Глянул в трекер гитхаб проекта, так и есть - они перешли на pipewire, согласно https://github.com/wwmm/pulseeffects/issues/397

Вот так, внезапно, в дверь к прогрессивным любителям Linux Arch постучало будущее в лице pipewire.\

Решение проблемы

Замена PulseAudio и ALSA на PipeWire

Установка PipeWire

Для решения проблемы с не работающим pulseeffects в Arch выполняем

pacman -Sy --combinedupgrade pipewire pipewire-alsa pipewire-pulse gst-plugin-pipewire

После чего перезагрузить ПК.

!!! info ‘Забавный факт’ Если у нас установлен pipewire-alsa – bluetooth должен запускаться автомататически. C pulseaudio это было не так, там звук через bluetooth добавлялся модулем из отдельного пакета.

Внимание! В процессе будет удалён pulseaudio и pulseaudio-bluetooth. Если для вас важны особенности кастомной настройки pulseaudio, а без них pipewire с pipewire-pulseaudio будет работать не так хорошо, как старый-добрый pulseaudio с кастомными настройками – вам лучше откатиться назад на pulseaudio.

Проверка получившей конфигурации

Проверяем, что получилось

pactl info

видим выхлоп вида со строками вида

Server Name: PulseAudio (on PipeWire 0.3.21)
Server Version: 14.0.0

После произведённого перехода на pipewire pulseeffects стал работать корректно.

Заодно, вместо pipewire и pulseaudio у меня теперь стоит только pipewire с модулями. Что удобно, так как один сервис лучше двух, а pipewire уже присутствует в системе у пользователей Gnome(и некоторых других DE), так как он используется для захвата видео при создании скринкастов и для организации расшаривания экрана в google meet, skype и OBS, и для с мультимедиа приложений из-под sanbox изоляции(faltpack).

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

vim /etc/pipewire/pipewire.conf

и привести параметры

default.clock.quantum = 64
default.clock.min-quantum = 32
default.clock.max-quantum = 512 

к указанным выше значениям. Если не поможет, можно ещё уменьшить, при этом желательно указываться числа, кратные 8.

Кстати, разработчики PipeWire починили корректную работу переключения профилей для Bluetooth. И добавили возможность выбора кодека при выборе профиля для Bluetooth-гарнитуры, что очень круто. Лично у меня переключение профиля не работало на PulseAudio уже очень давно, даже с установленными дополнительными сервисами, вроде oFono.

На этом повествование можно было бы и закончить, но некоторые, познакомившись с возможностями pulseeffects, захотят чего-то большего. Таким пользователям я рекомендую ознакомиться с такими вещами, как JACK Audio, и реализация его API поверх PipeWire в пакете pipewire-jack. Пост о pipewire-jack опубликую скоро в рамках продолжения данной темы будет опубликован отдельным постом, ввиду его объёма.