Нда, проблемка неприятная. Документация и примеры, вроде есть, но не фурычит как надо. Есть в Pipewire модуль, который отвечает за эффекты. Есть встроенные эффекты, есть возможность запустить LADSPA, или Lv2 внутри модуля, можно делать связки... в теории... На практике всё туманно. Нужны хорошие рабочие примеры.
Есть примеры работы с эффектами, в Арче они хранятся в /usr/share/pipewire/filter-chain В других дистрибутивах, может где в других местах. У меня не заработал эквалайзер (пример sink-eq6.conf) и ещё многие. Вроде висит процесс пайпвари, но только попробуй с ним что-то сделать, тут же уходит в перезапуск самого себя. Не работает как надо, короче. Проблема усугубляется тем, что в journalctl ничего толкового.
Но кое какой успех у меня есть. Я заставил работать fast lookahead limiter, который когда-то использовал в пульсе. Хочу оставить тут заметочку, вдруг кому пригодится, а может меня даже и научат чему хорошему тутошние специалисты.
Итак. Из репозиториев дистрибутива устанавливаем swh-plugins (или как у вас называют набор ladspa эффектов от Стива Харриса?). Создаём файл ~/.config/pipewire/pipewire.conf.d/effects.conf со следующим текстом:
context.modules = [
{ name = libpipewire-module-filter-chain
args = {
node.description = "Effects chain"
media.name = "Effects chain"
filter.graph = {
nodes = [
{
type = ladspa
name = fllimiter
plugin = /usr/lib/ladspa/fast_lookahead_limiter_1913.so
label = fastLookaheadLimiter
control = { "Input gain (dB)" = 8 "Limit (dB)" = -4 "Release time (s)" = 0.5057 }
}
]
links = []
inputs = [ "fllimiter:Input 1" "fllimiter:Input 2" ]
outputs = [ "fllimiter:Output 1" "fllimiter:Output 2" ]
}
audio.channels = 2
audio.position = [ FL FR ]
capture.props = {
node.name = "effect_chain.input"
media.class = Audio/Sink
}
playback.props = {
node.name = "effect_chain.output"
node.passive = true
}
}
}
]
Эффект смягчает для меня разницу в громкости видео на какомнить ютубе, или в сериалах, где одну серию еле слышно, а другая орёт.
Что мне не нравится. Я хотел создать цепочку из FastLookaheadLimiter и встроенных бикубических фильтров, чтобы подправить частоты и не смог. Запускаю из вышеприведённых примеров эквалайзер, всё глючит и падает. Попробовал один биквад, работает. Ставлю два, появляется необходимость связать их (в блоке link), связываю, перезапускаю, тут же начинает грохать пайпварю. Копался весь вечер, но на этом месте мой мозг заканчивается. Что я делаю не так?