LINUX.ORG.RU

Добавление LADSPA эффектов в Pipewire

 , , , ,


0

1

Нда, проблемка неприятная. Документация и примеры, вроде есть, но не фурычит как надо. Есть в 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
            }

        }
	}
]
Поскольку эффект сам в стерео, строки «inputs» и «outputs» не обязательны. К сожалению, параметры эффекта не регулируется из микшера, только редактирование текстового файла и перезапуск pipewire. Или мучиться с вот этим вот.

Эффект смягчает для меня разницу в громкости видео на какомнить ютубе, или в сериалах, где одну серию еле слышно, а другая орёт.

Что мне не нравится. Я хотел создать цепочку из FastLookaheadLimiter и встроенных бикубических фильтров, чтобы подправить частоты и не смог. Запускаю из вышеприведённых примеров эквалайзер, всё глючит и падает. Попробовал один биквад, работает. Ставлю два, появляется необходимость связать их (в блоке link), связываю, перезапускаю, тут же начинает грохать пайпварю. Копался весь вечер, но на этом месте мой мозг заканчивается. Что я делаю не так?

★★★★

Последнее исправление: R_He_Po6oT (всего исправлений: 2)

Ответ на: комментарий от alegz

Джек нужен исключительно для производства музыки или экспериментов со звуком. Всё. Но с появлением Трубной Вари даже для этого он не нужен. Я замечательно запускаю всё на пайпвари, даже те же эффекты. о речь не о том, чтобы вы блеснули знанием того что существует джек, а помочь мне решить поставленную задачу.

R_He_Po6oT ★★★★
() автор топика
Ответ на: комментарий от R_He_Po6oT

гадость портящая работу пайпвари.

Гадость. А эквалайзеры без гуя... тогда, чего уж, можно кинцо в tty смотреть и звук тоже там же смотреть. Князю плохо, он фото слушает©. Ценен твой пример. Одну примочку, да еще и раз настраиваемую, так пристроить можно, более того, может, так даже и лучше, чем с гуём. Вот крутить так что-то неудобно до невозможности.

JamesDSP еще есть. Честно пользовался, надеялся, будут допилены, но нет.

Нет этой гадости альтернативы. Хочешь кино в ноутбуке - наряжайся в наушники.

EasyEffects, емнип, James_Holden форкал. Что-то его не видно... Форкал, вроде как, чтобы на много колонок звук раскидывать. Мешал бардак с кучей синков, который при выходной многоканальности делается много-много-бардаком. Если у него получилось, то это же и без многих колонок хорошо. Да, только, опять же, где он?

Dementy ★★★
()
Ответ на: комментарий от Dementy

Одну примочку, да еще и раз настраиваемую, так пристроить можно, более того, может, так даже и лучше, чем с гуём.

Да, неудобство. Я надеялся, что тут кто-то научит меня делать параметров регуляторы :) Но молчат. Видно лучшая часть лора записала меня в игнор и не видит темы :)

А в EasyEffects... Блин... А не легче его выкинуть и сделать новое? Кстати, сколько бы ни было нод в этом встроенном модуле пайпвари, что я поковырял, наружу виден только один блок. Это офигеть как хорошо. А с Изиэффектами... там бардак. Испоганили lsp-plugins, переиначив крутилки, и повесили в пайпвари гирлянду из всякого мусора. А в итоге Фаерфокс часто перестаёт отпускать потоки, путается качество, хрень всякая происходит. А как я настроил вот этот лимитер и выкинул Изины Эффекты - чистота и порядок И ФФ не глючит.

R_He_Po6oT ★★★★
() автор топика
Ответ на: комментарий от Dementy

Блин, стоит пока работа, потому что у меня по всем фронтам завал и обвал. Пока нет времени работать над свободными проектами.

Человечество решило, что прогресс и процветание это не наш путь, кто я такой чтобы с ним спорить )))

James_Holden ★★★
()
Ответ на: комментарий от R_He_Po6oT

А не легче его выкинуть и сделать новое?

Придется всем выкинуть, а что делать. Эта штука, по сути, конфликтует с плумбером и пытается делать его работу. То есть, там надо все переделывать с нуля иначе.

Я поэтому делаю фильтр - это стандартный тип ноды у пайпвари. А внутри этот фильтр, один, накладывает всю обработку которая нужна.

И чисто идеологически я против подхода изиэффектса, когда мегатонна сырых настроек, притом испоганенных. Это же блин не сведение в студии, а просто ноут! Надо адекватные пресеты готовые на самые распространенные случаи.

James_Holden ★★★
()
Ответ на: комментарий от Dementy

Кстати, возвращаясь к идее самописного плагина. Есть такая мысль: в Faust можно написать плагин, который выставляет контролы в httpd, если верить этому Вопрос, можно ли повесить такой плагин в пайпварю и возюкать в браузере крутилочки? Сработает ли? Онторэсно. Но я всегда об этом вспоминаю когда уже некогда.

R_He_Po6oT ★★★★
() автор топика
Ответ на: комментарий от James_Holden

Вот вечером кастаните меня, чтобы я не забыл, накатаю в на фаусте проверялочку и вставлю в этот модуль пайпвари. зачекаю.

Кстати. Такая мысль ещё. Глянул в pw-dump. Там для этого модуля эффектов нашёл такое, кроме всего прочего:

        "Latency": [
          {
            "direction": "Input",
            "minQuantum": 1.000000,
            "maxQuantum": 1.000000,
            "minRate": 0,
            "maxRate": 0,
            "minNs": 0,
            "maxNs": 0
          }
тоесть, ему выдаётся один квант. А все эти встроенные биквад-фильтры, не об это ли они спотыкаются? Но может это просто неправильные мысли.

R_He_Po6oT ★★★★
() автор топика
Ответ на: комментарий от James_Holden

Кстати. Как называется тип определения порога в лимитерах/компрессорах, чтобы определить не просто усиление амплитуды волны, но зауковое давление в целом? PWM? Или как? Я забыл. Я даже забыл как это сформулировать для человекопонятного вида.

R_He_Po6oT ★★★★
() автор топика
Ответ на: комментарий от James_Holden

Оказывается нельзя. Смотрел наискосок, не правильно понял. Он там только включает игнор при опции -httpd. А в faust2jack, например, этот пункт работает, но для запуска в модуле пайпвари мне нужен именно lv2, или ladspa. Как быть?

Но я же потом опять забуду и эта мысль опять будет сверлить мне мозг.

R_He_Po6oT ★★★★
() автор топика
Ответ на: комментарий от James_Holden

Нашёл обрывки переписок об ошибках с httpd в некоторых видах «экспорта». Видимо из-за этого они отключили эту функцию. Представь десять плагинов колбящихся во все порты локалхоста...

Но по любому, открывать в браузере контролы - это только побаловаться, поэкспериментировать, полумеры. Нужна апликуха на электроне с вебсервером и мускулем запущеная в докере из флатпака!!! :)))

R_He_Po6oT ★★★★
() автор топика

Заметил такую вешь - при запущенном модуле эффектов не происходит смена частоты «дискредитации» если запускать проги с переменной «PIPEWIRE_LATENCY=128/96000». Сама программа (согласно pw-top) работает с частотой 96000, а основной выход продолжает показывать 48000. Вот. Видимо, модуль не может на лету сменить частоту, он держит основной выход и не даёт сменить частоту. Это приводит к тому, что карта работает на частоте 48000, а потоки 96000 ресэмплятся обратно при микшировании. Вот и дополнительные расходы и хрюны и хрипы и пр.

У кого есть две карты поддерживающие смену частоты, проверьте пожалуйста? Я понимаю так. Модуль эффектов цепляется к «основному» выходу. Если в системе есть вторая карта и на неё выводить джековские проги с другой частотой, она должна таки сменить частоту, поскольку модуль эффектов её не трогает.

R_He_Po6oT ★★★★
() автор топика
Последнее исправление: R_He_Po6oT (всего исправлений: 1)