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)
Ответ на: комментарий от fernandos

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

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

Это полная лажа. Конечно есть методы борьбы с этим, и в принципе можно этого избежать, но как-то стремно сделано.

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

Мне кажется, всё пытается подтянуться к дефолтному, а измениться это если кто-то запросит буфер побольше.

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

С чего ты решил, что Джек не будет разрабатываться? Потому что тебе нравится флатпак, а в нем он не работает?

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

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

пакетный менеджер тут не причем. Это проблемы порожденные изоляцией.

А по поводу изоляции все же должны знать, что монолитная архитектура намного проще модульной. Естественно если мы распилили приложения на самодостаточные песочницы и ввели механизм разрешений для доступа к API и файловой системе, то теперь надо немного шуршать мозгами а не просто фигачить все в кучу с одной извилиной, как в старом линуксе. Зато можно получить нормальную систему.

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

Не будет. Он не совместим с тем путем, куда движется система. Просто работать не сможет скоро. А учитывая что его уже «заменили» тем что работать сможет - его участь предрешена.

Плюс уже давно идут на него многочисленные наезды, от тех же пользователей и разработчиков Ardour, которые при любой проблеме давно рекомендуют выкинуть jack. И там чуть ли не его создатель свалил и говорит теперь что это все фуфло перед лицом мака и его звуковой системы.

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

Потому что тебе нравится флатпак, а в нем он не работает?

Посмотри на ситуацию. Есть два основных дистрибутива - Ubuntu и Fedora. И там и там активно наворачивают изоляцию. Это уже неизбежно. Теперь:

  1. jack не совместим с изоляцией

  2. любое приложение jack уже сегодня работает с pipewire который совместим с изоляцией.

  3. С таким же успехом можно писать приложения на родном api pipewire и они будут работать с низкими задержками и маршрутизацией звука как и в jack. Но модно и молодежно.

  4. jack для стыковки с не-jack приложениями требует адовые костыли. pipewire не требует ничего.

Ну и что выберут люди? У jack будущего нет.

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

Я очень сомневаюсь, что qtractor и muse заработают с сабжем

У меня Ardour из флатпака работает с сабжем. С такой же задержкой как на jack.

qtractor только что проверил - все работает.

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

так работает, или не работает? или работает, но не так как тебе надо?

да, автор джека махнул на него рукой, теперь его основной мэйнтэйнер - falkTX, когда он и Rui (автор qjackctl и qtractor) тоже забъют - вот тогда можно говорить о его кончине

И там и там активно наворачивают изоляцию. Это уже неизбежно.

мне вот ничего не мешает не наворачивать изоляцию, и не представляю, как можно заставить

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

так работает, или не работает? или работает, но не так как тебе надо?

Работает. Но - частоту дискретизации неудобно менять. Она же в конфиге pipewire тупо прописана, я же не буду каждый раз конфиг менять. И очень подозрительно выглядит возможность изменения на лету размера буфера. И очень неудобно - чтобы задать размер буфера, надо запускать приложение (не сервер, а само каждое приложение) с определенной переменной окружения. То есть блин из консоли надо.

А так все работает неплохо.

когда он и Rui (автор qjackctl и qtractor) тоже забъют - вот тогда можно говорить о его кончине

Я не думаю что будет буквально кончина, но вангую что использовать его будут только qjackctl и qtractor. А я не использую ни то, ни другое. И скажем так, не только лишь я. Уйдет в маргинальщину оно.

мне вот ничего не мешает не наворачивать изоляцию, и не представляю, как можно заставить

Как в ведроиде - она будет и все тут. А что с ней не совместимо выкинут из репов.

Ну можно всегда генту поставить, но опять же - все уйдет в маргинальщину со всеми вытекающими. Мейнстримом jack я думаю уже в ближайшем будущем перестанет быть.

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

Как в ведроиде - она будет и все тут. А что с ней не совместимо выкинут из репов.

запретят публиковать исходники, можно будет только apk флатпаки?

Я не думаю что будет буквально кончина, но вангую что использовать его будут только qjackctl и qtractor. А я не использую ни то, ни другое. И скажем так, не только лишь я. Уйдет в маргинальщину оно.

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

я вот лично, даже сам джек не использую регулярно, так как всё делаю внутри одного хоста

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

Например, во flatpak пакетах он принципиально работать не может.

ИМХО те, кому реально надо использовать jack не станут ставить в контейнер ни его самого, ни использующего его приложение, так как там жёстко следят за минимизацией и регулярностью величины задержки звука.

Но это мнение невтемного мимококодила.

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

Нет, нельзя и нет, не проще. Это разное перекладывание разной головной боли с разработчиков основной системы и разработчиков прикладной системы. Проще одним, тяжелее другим.

peregrine ★★★★★
()

Считать, что Linux хорошо подходит для создания музыки было бы ошибкой?

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

Вялый в котором запись экрана и скриншоты прикрутить не могут, даже с рутом, так как ломает безопасность

4.2

Siborgium ★★★★★
()

С настоящим jack это решается элементарно - программой управления типа qjackctl. Там просто выбирается какой буфер, и все приложения используют его

а что мешает запустить qjackctl под пайпварью? Я пробовал, и оно даже чего-то там делало (но я только музыку с видео слушаю, про всякие ресемплинги и частоты дискретизации понятия не имею)

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

а что мешает запустить qjackctl под пайпварью? Я пробовал, и оно даже чего-то там делало (но я только музыку с видео слушаю, про всякие ресемплинги и частоты дискретизации понятия не имею)

Мешает то, что он внезапно не позволяет менять частоту дискретизации при работе с pipewire.

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

Проще одним, тяжелее другим.

Похоже ты ничего не понял.

Монолитная архитектура это классические репы. Модульная - это флатпак. Монолитная проще, потому что все кидается в кучу и все связано со всем.

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

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

ИМХО те, кому реально надо использовать jack не станут ставить в контейнер ни его самого, ни использующего его приложение, так как там жёстко следят за минимизацией и регулярностью величины задержки звука.

Во-первых, контейнер это докер, или подман по хипстерски. Флатпак это не контейнер. В докер никто аудио софт пока не ставит.

Во-вторых во флатпаке задержки такие же, он никак на них не влияет. А вот

регулярностью величины задержки звука

pipewire не гарантирует и тут проблема.

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

Ну хоть ты мне объясни, что это за фигня такая? Почему они делают все через задницу?

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

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

fornlr ★★★★★
()

pulseaudio поддерживало две частоты дискретизации микшера - основную и альтернативную

Это как бы не так важно. А важно что в пульсе есть отключение ресемплинга вообще.

no-such-file ★★★★★
()
Ответ на: комментарий от fornlr

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

Вот именно! Вы, фанатики, не понимаете элементарных технических вещей, и дошло до того, что вы монолитом считаете флатпак а модульным - старые репы. Что надо в мозгах иметь для этого?

Монолит это подход где нет изоляции между приложениями и все приложения распаковываются в одну папку при установке. То есть это твой любимый deb.

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

В старых репах этих двух проблем вообще нет, потому что все в одной папке лежит, там ничего не разрезается. Все имеет доступ ко всему.

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

В старых репах этих двух проблем вообще нет, потому что все в одной папке лежит, там ничего не разрезается. Все имеет доступ ко всему.

Так и в Flatpak тоже самое на практике. А не в какой-то теории.

И в Deb тоже самая проблема по разрезке. Какая-то Ubuntu или Debian тебе будут не рады со своими библиотеками.

fornlr ★★★★★
()
Последнее исправление: fornlr (всего исправлений: 1)
Ответ на: комментарий от no-such-file

А важно что в пульсе есть отключение ресемплинга вообще

Оно и в pipewire есть. Подавай поток на частоте одинаковой с pipewire и не будет ресемплинга. Только откуда ты этот поток возьмешь.

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

Всмысле? Ты можешь из одного приложения попасть в песочницу другого? Можешь попасть например к системным кедам напрямую? Как это?

А зачем порталы тогда, по-твоему? Их дурачки делают, оказывается там и проблемы то нет, которую они решают.

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

Какая-то Ubuntu или Debian тебе будут не рады со своими библиотеками.

Всмысле? Что ты городишь?

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

И там, и там в итоге разработчику надо петрушиться. Но в отличии от Flatpak, в Deb можно разработчику минимизировать петрушенье — сделав жирный DEB пакет, забив на дедовские постулаты.

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

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

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

С deb наоборот - надо думать, как обойти проблемы что твое приложение будет кинуто в папку со всеми остальными и принудительно тебя объединят со всей системой и ее библиотеками.

Оба случая имеет быстрое колхозное решение. Во флатпак ты ничего не режешь и пихаешь все в один пакет. С deb ты все изолируешь от системы делая колхозный недофлатпак в виде deb пакета.

А если делать нормально - то надо включать голову там и там. Но с флатпаком надо включать больше. С deb собрать свое приложение с системными версиями библиотек проще, чем грамотно обеспечивать изоляцию, разрешения, порталы.

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

Так я о том и пишу - вот для чего надо мозгами шурупить. Как это рационально сделать. С deb проблемы нет - отрубили голову и она уже не болит. Нет безопасности и инет проблем.

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

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

И в итоге все разработчик на эту фикцию поплёвывают.

Человек всегда будет делать как проще. Если проще наколхозить, (а это как правило проще), то будет вот так.

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

надо

Не надо. Ты лично можешь на свой сортир замки 🔒 в стиле Гудини навешивать — твоё право. Изоляция.

А такой вот бред на линуксовом десктопе никому не сдался. Это добавляет лишь кучу сложных и глючных сущностей.

fornlr ★★★★★
()
Последнее исправление: fornlr (всего исправлений: 1)
  1. Ничто не мешает допилить JACK, чтобы работал в твоём снапе-флатпаке.
  2. Ничто не мешает допилить PipeWire, чтобы убрать ненужную передискретизацию.

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

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

Ты лично можешь на свой сортир замки

Да блин, дело же не в этом. Пользователь эти замки вообще замечать не должен. А если замечает, как сейчас - значит все пошло не туда. Потому что мозгами не шурупили а передрали ведроид. Вот итоги - когда не думают. То же самое с pipewire, нафигачили как проще и все, приплыли. Ни под одни требования звуковая система не подходит, ни под «пульсовые», ни под «джековые».

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

Вот даже тут, в этом треде я спросил как GUI приложению править конфиг лежащий под рутом. А мне - ну введешь пароль. Сначала люди не видят проблемы, а потом вай вай, у нас все пароли через один центр который взломали.

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

Ну допили. Ты же у нас гений-разработчик, не какой-то диванный дурачок. Ждем с нетерпением. Заодно сделай, чтобы виндовый SolidWorks на Raspberry Pi первом работал. Очень нужно, но почему-то никто не делает, виндузятники видимо одни кругом неграмотные.

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

значит все пошло не туда.

Конечно. Потому что схема разработки типа «процесс» — тестирование возможностей OSTree. А не продукт — «удобный десктоп для пользователя».

fornlr ★★★★★
()

А чего такого страшного в ресемплинге? Есть сравнения выходного аналогового сигнала с ресемплингом и без? Или это чисто теоретические измышления?

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

Кстати да. Хотел написать.

TC взял бы и написал бы простой скрипт, который по рандому меняет частоту ресемплинга. Ну и угадывал, что есть что.

А то такое ощущение, что и ничего и не заметит, а стонов и воплей на эту тему…

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

Потому что схема разработки типа «процесс» — тестирование возможностей OSTree

Видимо да. OSTree сама по себе то штука хорошая. Почему мне и нравится флатпак - что он на базе OSTree. Но то что сам флатпак как обвязку вокруг OSTree надо бы с умом переделать с нуля - это да. И при этом главное - поставить задачу «удобный десктоп для пользователя». Хотя бы один раз в истории линукса.

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

А то такое ощущение, что и ничего и не заметит, а стонов и воплей на эту тему…

Да неужели, а когда ты мне доказывал что в линуксе неправильный алгоритм ресемплинга и поэтому звук всегда хуже чем в винде, это что такое было?

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

Суть в том что железо позволяет выводить любой из реально встречающихся потоков напрямую без ресемплинга. Так зачем его делать когда не надо? Это просто лишняя операция.

Зачем гадать, слепые тесты делать, собачится по поводу какой ресемплинг лучше и для чего, если можно его просто не делать, как это и было много лет в пульсе?

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

Так зачем его делать когда не надо? Это просто лишняя операция.

Ресемплинг звука – это пустяки для современного железа. Затратами на ресемплинг можно пренебречь.

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