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

ой май гад

а аудио проект, в котором десятки (сотни, тысячи) файлов ещё и доступ к размазанным библиотекам с сэмплами?

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

его SDK версия. И в этом рантайме есть и конпилятор, и make, и основные либы с h файлами.

И так для всех 100500 приложений, отдельная копия всех файлов? Устройства хранения не резиновые как бе.

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

Для сборки чего-либо используется не обычный рантайм, а его SDK версия. И в этом рантайме есть и конпилятор, и make, и основные либы с h файлами.

ну нахер такой «нетравмированный» подход:)

kott ★★★★★
()

Я всё понял, ТС получил сильную травму от потери диссера (удалить его Kate-ом это конечно сильно надо постараться), но вместо того, чтобы начать делать бэкапы, он ударился во флатпачество. Печально конечно.

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

И так для всех 100500 приложений, отдельная копия всех файлов?

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

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

ну нахер такой «нетравмированный» подход:)

А что не так? Именно так и должно быть. И есть везде во всех ОС включая самый обычный линукс.

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

а с git-ом что, тоже отдельная копия в каждом SDK?

Я уже устал, честно, долдонить на всю эту чушню что вы сочиняете одни и те же ответы. Изучи матчасть.

Во-первых SDK у тебя один а не 1000. А если даже не один, между всеми пакетами флатпака автоматическая дедупликация.

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

ТС получил сильную травму от потери диссера (удалить его Kate-ом это конечно сильно надо постараться)

Вот это лол. Конечно я никакой диссер не удалял, тем более при помощи Kate. Я же не идиот. Неужели ты решил что это реальная история?

Это просто пример того что может быть. Ведь гарантий нет.

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

а «неосновные» либы?

Неосновные, то есть те которые в рантайм не положили, а тебе они нужны, собирает flatpak-builder во время сборки пакета. Подключить туда либу это три строчки в сборочном файле.

Если же идет разработка как таковая, а не сборка флатпак пакета, то лучше все делать в докере.

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

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

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

зачем мне эту вашую сектантскую матчасть учить

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

Harald ★★★★★
()

Есть snap, flatpak, wayland. Вроде хорошее дело

Нет. Они все не решают проблемы доставки приложений. Вместо этого они создают дополнительные (только по-другому и с изоляцией).

Надо что-то решать

Да, нужна статическая линковка.

тут появляется надежда - pipewire

А он тут при чем? Это же просто мультимедийный сервер (чтобы рулить видеопотоками и аудиопотоками).

потому что это катастрофа!

Белки-истерички? Так не используй. Просто Alsa все еще можно использовать.

Обязательный ресемплинг

Почему это должно волновать меня как пользователя? Не пофиг?

Так НЕЛЬЗЯ ДЕЛАТЬ, а надо делать ровно наоборот

Сделай. Исходники открыты. Или ты из тех, кто только ноет?

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

А что не так? Именно так и должно быть.

я не хочу собирать пакеты под флатпак,
я хочу запустить make, и чоб собранный плагин тут же обновился в каталоге с lv2 (или vst), которой подцепит запущенный (или не запущенный) DAW

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

Учи матчасть, потом приходи. А лучше не приходи, потому что мнение свидетелей статической линковки меня не интересует.

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

зачем мне эту вашую сектантскую матчасть учить

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

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

Эти ваши флатпаки со снапами каждый день новые придумывают, лучше фундаментальным вещам время уделять

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

и чоб собранный плагин тут же обновился в каталоге с lv2

Если у тебя плагин из флатпак пакета, то просто пересобираешь флатпак пакет и сразу все обновится. У flatpak-builder есть ключ –install. Если не из флатпак пакета - создай флатпак пакет.

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

и для этого всего нужно иметь 100500 гигов свободного места, ради одного сраного плагина на пару килобайт? :P

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

Список в студию. Или хочешь опять сесть в лужу? Уже который раз за тред?

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

и для этого всего нужно иметь 100500 гигов свободного места, ради одного сраного плагина на пару килобайт? :P

Нет. Для этого нужно изучить матчасть и не пороть чушь больше. Сколько раз тебе еще повторить?

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

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

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

не знает матчасти даже в плане классического линукса.

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

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

Вот это лол. Конечно я никакой диссер не удалял, тем более при помощи Kate. Я же не идиот. Неужели ты решил что это реальная история? Это просто пример того что может быть. Ведь гарантий нет.

И с Flatpak-ом тем более нет.

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

у других же почему-то получается

Рад за них. Особенно за Патрика.

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

Если у тебя плагин из флатпак пакета, то просто пересобираешь флатпак пакет и сразу все обновится. У flatpak-builder есть ключ –install. Если не из флатпак пакета - создай флатпак пакет.

сырцы тупо с гитхаба

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

Ты не поверишь. flatpak-builder тянет сырцы тупо с гитхаба и делает флатпак пакет и сразу ставит. Всего-то надо конфиг на несколько строчек написать. Один раз. На второй раз, для другого плагина ты в нем просто заменишь ссылку на репозиторий гитхаба.

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

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

а пакет переименовывать не надо?

фактически та же самая возня, что и с обычным rpm/deb, только нахрен она нужна при разработке?

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

Нет, я пока не делал их во флатпаке, потому что не видел пока смысла - jack же все равно не работал.

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

Ни во что не выливается. Вносишь изменения в исходники и хочешь проверить - вводится одна команда, плагин пересобирается, упаковывается во флатпак (не заметно особо по времени), ставится и в DAW доступен. Ничем не отличается от работы по старинке. Ну упаковка/установка какое-то там время занимает, очень небольшое даже на моем музейном аппарате.

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

а пакет переименовывать не надо?

Надо, я думал это само собой разумеется.

фактически та же самая возня, что и с обычным rpm/deb, только нахрен она нужна при разработке?

А какая разница? Потом все равно придется пакет делать. А так сразу сделаешь.

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

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

А какая разница? Потом все равно придется пакет делать. А так сразу сделаешь.

разница в том, что не надо это делать

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

Кто ж его будет делать.

ну кто-то ж твои плагины пакует

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

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

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

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

Если ты лично хочешь флатпак пакет выпустить - то придется написать конфиг для flatpak-builder. Как и для любой другой пакетной системы.

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

чем больше я узнаю про прелести флатпака, тем меньше хочется его трогать

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

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