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

Ну хочешь собирать как раньше без флатпака - собирай и клади в .vst и .lv2. Ardour из флатпака оттуда плагины видит точно так же.

то есть всё таки можно собрать системным тулчейном, и будет работать? или с SDK возиться придется?

как на флатхабе посмотреть доступные lv2/vst плагины?

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

Ты выглядишь как виндузятник, узнающий про линукс, осознающий что там все несколько иначе и говрящий - ну нафиг это надо. Setup.exe наше все.

как будто что-то плохое

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

Можно конечно, если у тебя он есть. Пока он даже в Silverblue есть.

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

как на флатхабе посмотреть доступные lv2/vst плагины?

Вот бы знать, почему-то их нет, я их через github от флатхаба смотрю, там где реп со сборочными конфигами.

https://github.com/flathub

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

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

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

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

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

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

Я никого ни к чему не склоняю. Я просто отвечаю на вопросы, как бы оно выглядело на «чистом флатпаке». Надо знать тоже.

@kott

У флатпака два глобальных недостатка.

  1. Дублирование основной системы рантаймами.

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

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

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

со вторым понятно, видел (не только KPP) как некоторые бросались офлатпачивать пакеты и обламывались

а вот юзеру, по-моему, воще по-барабану как ставить, если оно работает

kott ★★★★★
()

Я так подозреваю, скоро будем сидеть и грустить «Ах какая была пульса»

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

Мне например не по барабану как ставить - одной командой или из сырцов собирать монстра openmodelica потому что пакеты только под убунту. Флатпак бы решил проблему.

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

Собирать пакет кстати несложно. Сам процесс разработки вызывает вопросы. Если ide из флатпака, то работа в ней просто ломает основные идеи флатпака.

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

Когда явили на свет grub - ты молчал.

Когда явили на свет dbus - ты молчал.

Когда явили на свет пульсу - ты молчал.

Когда занесли systemd - ты снова промолчал.

Сейчас заносят вяленного - ты «Вроде хорошее дело».

Так чего сейчас то разнылся? Позняк метаться - упыри ужо власть захватили.

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

Я такого не говорил. Я говорил что есть два основных дистрибутива.

Тут вот какая проблема. Пока линукс это не просто линукс, а зоопарк дистрибутивов, я имею полное право работать хоть на KPP-Linux с пакетной системой kpppkg. А чем я хуже шапки? И всем говорить что это линукс.

А тогда возникает вопрос - почему программа openmodelica для линукса не может быть установлена на линукс? Бред же? Кто виноват - тот кто отвечает за установку. То есть пакетная система kpppkg. Очевидно что в ней проблема. Но ее нельзя заменить например на deb. Возникнет море проблем. Переход KPP-Linux на deb не решает проблему с установкой openmodelica, даже при том что она есть в deb. Нужны еще все зависимости, и именно такие.

А мне в моей системе нужны другие зависимости. Все, приплыли.

Ты скажешь, что надо deb собрать самодостаточным со всеми зависимостями внутри? Ну так посмотри, вот openmodelica и она собрана не так. Все, приплыли.

Flatpak позволяет иметь на любой системе любые программы с любыми зависимостями, сколько угодно вариантов одновременно. И с ним у тебя не KPP-Linux, а просто линукс, потому что больше нет разницы что там в качестве хоста.

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

Я понимаю что можно хейтить там systemd или вяленого, но grub… Притом ты пишешь grub, а не grub2. Даже так.

Тебе Эдик позавидует. Такого эталонного хейтера поискать.

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

Увы ваиланд единственный инструмент проверять твой дырявый иксовый дистрибутив таковы реалии

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

Я знаю про зависимости. Просто примеры надо приводить точные, и не противоречить себе.

И, как видим, флатпак не решил целиком проблему.

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

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

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

груб это один из первый примеров отхода от unix подхода и хрестоматийный пример плохой архитектуры и дизайна (grub2 картины не исправил). А так же пример протаскивания плохого решения во все дистры. И все эти примеры это шаги одной цепи, но ты, как и большинство, этого не видишь, а только ноешь по какой-то небольшой частности. В твоём примере с машиной - ты ужо давно сидишь за рулём 7 колёсного мотороллера, спиной вперёд с 10 разными рычагами разной длины и 5 педалями, на которые, чтоб нажать, нужно поворачиваться то влево, то вправо, то вообще встать, но ноешь, что на кочках из колонок идёт сиплый звук. Глупо же. :D И я не хейтю - я указываю, что сейчас ужо глупо ныть.

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

Flatpak позволяет иметь на любой системе любые программы с любыми зависимостями, сколько угодно вариантов одновременно. И с ним у тебя не KPP-Linux, а просто линукс, потому что больше нет разницы что там в качестве хоста.

Ну это опять фантазии. У тебя постоянно как в песне «Про Париж и Саратовское СИЗО».

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

И, как видим, флатпак не решил целиком проблему.

Ну почти решил. Я перепаковываю их deb во flatpak.

я бы переписал федоровский spec под сюзю и залил в OBS.

Так там пакетов зависимостей штук 50. Задолбаешься переписывать.

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

grub - нечеловеческое г..о в плане UI.
Какие-то наркоманы писали.
LILO было отстой, но GRUB просто нереален.

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

Ну это опять фантазии.

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

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

Кричать от радости надо было

Угу, когда способность отвечать логином на com порт прибивается гвоздями к системе инициализации - от такого правда нужно кричать.

Вообще, как к иниту вопросов уже нет. Вопросы к запуткам cgroups, без которых формально кроссплатформенный софт нифига не работает.

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

Тут вот какая проблема. Пока линукс это не просто линукс, а зоопарк дистрибутивов, я имею полное право работать хоть на KPP-Linux с пакетной системой kpppkg. А чем я хуже шапки? И всем говорить что это линукс.

кто сказал, что в зоопарке все звери равны

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

В нашем равны. А если у тебя особенный фашистский зоопарк - то я в таком не пасусь.

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

Угу, когда способность отвечать логином на com порт прибивается гвоздями к системе инициализации - от такого правда нужно кричать.

они там что, уже и getty системдой заменили?

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

Не надо до маразма доводить. А я вот GIMP пробовал ставить. И там одну ошибку с зависимостями полгода исправляли.

Это именно был косяк со стороны этого всего Flatpak.

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

Так там пакетов зависимостей штук 50. Задолбаешься переписывать.

пфф…

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

А я вот GIMP пробовал ставить

А я вот GIMP, и бета-версию GIMP использую из флатпака года два. Каждый день. Не закрепляется что-то на ушах твоя лапша.

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

А я тебе уже приводил ссылки на подтверждённые багрепорты. Так что катись со своим фанатизмом.

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

Причём тут догмы? unix вей это был альтернативный подход к построению программных продуктов. Хороший/плохой, но он давал единый подход. Сейчас у каждого своё. Опять же хрестоматийный пример, интерфейс общения с ядром. Можно сделать сложно и убого, как коммерческих unix-ах, можно сделать убого, но единообразно, как в винде, а можно подумать и сделать просто и гениально в виде /proc.

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

Ну шелл и шелл. Конечно я хотел бы там такой же шелл как в системе. Но это не то чтобы катастрофа. Он нужен раз в 10 лет.

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

Ну вот если что идёт не так, буквально волосы рвёшь.
Даже в quake шелл юзерфрендли.

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

А я тебе уже приводил ссылки на подтверждённые багрепорты.

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

Почему я должен страдать от того что кто-то поломал систему и теперь у него глюки?

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

unix вей это был альтернативный подход к построению программных продуктов.

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

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

контейнер это докер

Закусывать надо.

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

Вот! А потом плачут. Груб кстати протаскивали один в один как системд. У лило есть фатальный недостаток! Он не могёт загрузиться из lvm поверх софтового рейда, поэтому мы сделаем монстра со своей консолью, своей системой команд, своим ублюдочным языком конфигов. В общем, обычный аборт архитектурной мысли. По тем же лекалам лепили и systemd.

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

Вот и я про тоже. Люди не хотят думать им подавай решение сразу! Чтоб сделать нормальное решение, нужно думать. Ну и unix-way ортогонален зависимостям. unix-way это подход построения программного продукта, а зависимости или их отсутствие это подход построения системы в целом. Моё имно - базовая система должна иметь зависимости, но большие программы должны собираться статически или с минимальными зависимостями. Пример, тот же deadbeaf собран достаточно удобно - статически, но если сильно хочется, то можно и добавить зависимостей. (например, у меня плагин ffmpeg собран динамически, чтоб проигрывать звук из всех видео источников). ИМНО пример правильной сборки.

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

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

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

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