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

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

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

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

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

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

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

там хост для LV2 плагинов, няз

kott ★★★★★
()
Ответ на: комментарий от 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 ★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.