LINUX.ORG.RU

Pipewire - неизбежная... победа!

 , ,


5

2

Есть snap, flatpak, wayland. Вроде хорошее дело, но - они добавляют изоляцию между приложениями, и такие штуки как jack, pulseaudio уже не могут работать как раньше. Надо что-то решать. И тут появляется надежда - pipewire. Но надежда ложная, потому что это катастрофа!

Нет, надежда все-таки есть.

Вот мои претензии (которые в итоге разрешились):

1. Обязательный ресемплинг. Как известно, pulseaudio поддерживало две частоты дискретизации микшера - основную и альтернативную. Это позволяло, в случае воспроизведения например только музыки со spotify переключать микшер на частоту дискретизации потока и УБРАТЬ ресемплинг! Если воспроизводит только одно приложение, ресемплинга быть НЕ ДОЛЖНО! Потому что он не нужен. Pipewire не позволяет, и похоже что реализовать это в той архитектуре, которую заложили, будет весьма непросто. На практике он всегда делает ресемплинг и всегда портит звук.

Последняя версия pipewire поддерживает до 16 значений частоты дискретизации и будет переключаться на нужную, когда это возможно.

Переключение РАБОТАЕТ уже сейчас, на версии из Git! На релизе 0.3.33 у меня не работает.

КАК СДЕЛАТЬ:

В pipewire.conf пишем:

default.clock.rate          = 48000
default.clock.allowed-rates = [ 44100, 48000 ]

Можно перечислить в allowed-rates до 16 значений. Все!

ТЕПЕРЬ - если воспроизведения не было, и запустить на воспроизведение ОДНО приложение, pipewrire будет переводить себя и звуковую карту на частоту дискретизации этого приложения, и ресемплинга НЕ БУДЕТ.

2. При работе с jack клиентами может меняться размер буфера. Занавес! То есть я играю на гитаре, и тут мне меняют размер буфера? А ничего что это приведет к слышимому и чувствуемому изменению задержки звука? Как играть??? Так НЕЛЬЗЯ ДЕЛАТЬ, а надо делать ровно наоборот. Я уже молчу про то, что изменение на лету размера буфера может просто крашануть jack приложение, которое такого бреда не ожидало!

3. Для того, чтобы вообще хоть как-то задать размер буфера для jack клиентов, надо запускать приложение с переменной окружения PIPEWIRE_LATENCY. То есть мне теперь все приложения из консоли стартовать? Или все desktop файлы править? С настоящим jack это решается элементарно - программой управления типа qjackctl. Там просто выбирается какой буфер, и все приложения используют его. Должно быть ВОТ ТАК.

Решение:

pw-metadata -n settings 0 clock.force-quantum <size>

устанавливает фиксированный размер буфера.

Или в jack.conf:

node.lock-quantum = true

4. Нельзя нормальным образом поменять частоту дискретизации при работе с jack клиентом. Используется та, на которую настроен pipewire своим конфигом. С нормальным jack частота просто выбирается в qjackctl. А с pipewire что, мне править конфиг и перезапускать его, или как?

Решение, можно менять на лету:

pw-metadata -n settings 0 clock.force-rate <samplerate>

В итоге, имеем огромные практически нерешаемые проблемы на уровне архитектуры, из-за которых pipewire идет в противоположную от нужной сторону.

Последний релиз и коммиты, которые делаются прямо сейчас показывают, что развитие пошло именно в нужную сторону.

★★★★

Последнее исправление: James_Holden (всего исправлений: 4)
Ответ на: комментарий от James_Holden

А вот с генточкой сидел бы на гите и не думал о зависимостях )

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

Хочу поставить git версию pipewire, но она требует удалить jack.

подозреваю, это мэйнтейнер олух, нельзя форкнуть PGBUILD и юзвать свою сборку?

или в инсталлере pipewire догадались подменить jackd симлинком на себя? для этого есть alternatives

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

или в инсталлере pipewire догадались подменить jackd симлинком на себя?

В AUR версии догадались, да. В основной - нет, там нормально сделано.

Совет @Dog помог, все вкатилось.

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

УРА!

Все, победа над ресемплингом окончательная и безповоротная!

На гит версии со вчерашними коммитами все переключается как надо.

И не одна альтернативная частота, как у pulseaudio, а 16.

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

Это то, что я имел в виду изначально - пропадет смысл существования jack.

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

Вот видишь, @eternal_sorrow, разработчик Pipewire за последние недели переделал все именно так как я хотел. Причем, явно он сделал это НЕ потому что почитал мой тред. А потому что так правильно.

Более того, он сделал не одну, а 16 альтернативный частот дискретизации.

И ресемплинг из pipewire-pulse убрали. И заставили его сообщать о желаемой частоте дискретизации дальше серверу. Все как я и предлагал. Только они не читали мои предложения, сами понимают что так надо.

И, кстати - оказалось, что раньше (с одной частотой) было сделано как проще. Просто потому что так проще. А не потому что за этим какая-то идея о правильности. Как я и говорил.

А мне тут втирали, что я дурак, хочу странного, придумываю то что не нужно, не понимаю как надо. Ну и что теперь? Объясните это автору Pipewire.

James_Holden ★★★★
() автор топика
Последнее исправление: James_Holden (всего исправлений: 2)
Ответ на: комментарий от James_Holden

Подправить pkgbuild? Или брать джек из конфликтных, или добавить, что предоставляет джек и скрестить пальцы?

И это не арч виноват в постоянно изменяющихся направлений бурной реки :)

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

Интересно, а всякие mod devices унутре общаются с голой альсой? Я так понимаю, что нужда в джеке может остаться у всяких музыкальных эмбедщиков просто потому что джек компактнее. Но, да, эпоха прошла. И в кои-то веки я этому рад.

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

Я сделал pacman -Rdd jack2, и у меня стоит пакет-дропин, который перенаправляет jack приложения на pipewire.

Но я не уверен что теперь он обязателен - пакет pipewire-jack предоставляет libjack вроде.

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

Вряд ли там jack, ведь он нужен в основном чтобы руками рулить маршрутизацией между приложениями. А на девайсах не порулишь.

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

дык может они плагины промеж собой через джек гоняют? А в вебсервере-настраивалке всё это выглядит как единое приложение? Хотя, может там и один хост плагинов крутится, только почему его до сих пор не форкнули и не выложили в свободное плавание?

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

Да. Но мы знаем, кто пилит Джек, тот работает в MOD.

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

А, вижу, mod-host (у которого libjack-jackd2 в зависимостях) и mod-ui. Но это их, внутренний, собственный гит. А я про то, что нигде нет "причёсаного ", независимого форка для общего использования.

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

до сих пор не форкнули и не выложили в свободное плавание?

Carla же делает то же самое, но не только для LV2.

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

Дело в их способе и их плагинах. Это же самая удобная на данны момент «гитарная студия» и «лаборатория».

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

Зачем форкать? Там не хватает удобного ланчера для десктопа, разве что.

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

Мне кто-то писал, не работала кросскомпиляция тюбампа вроде (из-за зита-конвольвера). Потом кажется пофиксили. Но сейчас я не вижу своих плагинов там.

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

Самостоятельно я туда это вываливать не спешил, потому что надо было вникнуть в исходники и в тонкости реализации, прежде чем разработчикам предъявы кидать.

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

Я не знаю, способствовало ли написанное birdie этому. Может да, может нет.

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

Намана.

@James_Holden здравствуй дорогой друг! Напиши пожалуйста пост о том что ты несогласен что мне не перечисляют 250к рублей в месяц на карточку просто так ктонибудь (и что-бы он был сам налоговым агентом) авось тоже прокатит :3 Заранее бальшое спасиба!

LINUX-ORG-RU ★★★★★
()
Ответ на: комментарий от James_Holden

Ну, видимо там есть и было понимание того к чему двигаться, просто не всё сразу, разработка же очень активная. Я особо не следил, но ещё давнооооо читал от них же (в переводе) что они делают типа ультимативную штуку, такую что-бы угодить всем и вся и на веки вечные, мол есть цель, но путь будет ветвистым. Но эт было оч давно. Хвалились тем что сотрут грань между профи с их любовью к чистому jack, энтузиастам с их чистой alsa, простых юзеров с пульсой и ретроградами с oss.И сделают не просто одно/ещё одно, а удобное всем. Я звуком не занимаюсь мне главное что-бы просто работало.

LINUX-ORG-RU ★★★★★
()
Последнее исправление: LINUX-ORG-RU (всего исправлений: 1)
Ответ на: комментарий от LINUX-ORG-RU

что они делают типа ультимативную штуку, такую что-бы угодить всем и вся и на веки вечные, мол есть цель, но путь будет ветвистым

Да, но прошло немало времени и у меня уже начало подбамбливать от того что нужная мне ветвь никак не ответвится.

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

Последнее посещение: 18.03.15 21:32:00

Последняя созданная тема: 15.03.18 16:17:09

Завидуйте 😂😂😂

// b.

anonymous
()
Ответ на: комментарий от serg002

Прав по-настоящему ты был бы если б ты тогда привел ссылки на коммиты, доказывающие что мои претензии активно уходят в небытие. А эти коммиты тогда уже и делались.

Но нет, ты просто попал пальцем в небо.

А теперь когда вышел новый релиз, все обсудили и разжевали конечно ты прав.

Причем, я практически уверен что тогда ты имел в виду не то, что произошло сейчас - что мои желания окажутся воплощенными в жизнь. А что я дурак и хочу странного.

А оказалось, что разработчик pipewire хочет того же.

Если я вот это неправильно понял - то что ж, признаю что ты был прав.

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

меня ещё один вопрос интересует (самому пока недосуг проверить), можно ли отдельную звуковуху «заигнорить» в pipewire? чтоб она никак к ней не обращалась, вообще. в пульсе такое делается, да

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

возможно это делается с profile:off в конфиге

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

Вот так бывает. Напишешь ряд претензий, а их бац… и исправили. Я сам в шоке.

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

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

ОП даже не знает про NixOS.

Это ненужное фуфло. И я прекрасно про него знаю.

Это ты из-за того, что они не осилили корректную работу jack dbus так заговорил?

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

Зря я конечно так резко выразился, это совсем не фуфло. Но в контексте десктопа, я считаю что это дикое переусложнение.

jack dbus это частности, до которых я даже не дошел на фоне гораздо более фундаментальных проблем.

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

Но в контексте десктопа, я считаю что это дикое переусложнение

Хз, мне лично проще. У меня кроме десктопа (точнее ноута) ничего нет. Никаких серверов, VPS и прочего.

В NixOS мне проще собрать любой сторонний софт. И NixOS мне даёт гарантии, что даже если я дико накосячу, у меня система останется работоспособной и я смогу работу работать, а не сидеть и локти кусать.

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

Есть более простые пути. Например chroot с ubuntu, куда прямо из deb ставится сторонний софт. Гарантии сохранности системы не меньшие.

Собрать сторонний софт под флатпак - тоже не сложнее. Хотя не весь софт может работать во флатпаке.

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

Я тут вчера попытался настроить в Pipewire три синка, и выяснилось, что это предлагается делать костылями через pactl, которые нужно оформлять в виде скриптов при запуске машины - в конфиг прописать нельзя. В жопу такой «прогресс».

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

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

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.