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

Потому что порталы должны поддерживаться софтом. Это же не волшебная палочка. Это специальных механизм через d-bus. jack сделан так что этот механизм не прикрутишь, придется переписать весь jack сохранив лишь API. Что и сделали разработчики pipewire, и теперь jack приложения с ним из флатпака работают.

Можно сделать и другие реализации, которые имеют API jack, но позволяют работать в песочнице.

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

А вот Линус Торвальдс как-то по ошибке перепутал файл модема и диска, и случайно весь раздел с исходным кодом.

Как видно не до конца он снёс исходный код. А жаль…

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

Это специальных механизм через d-bus

дожились, чтобы файлики копировать, уже dbus нужен

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

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

а если ровно то же сделали при сборке Snap пакета то это ересь?

в основном flatpak/snap хейтят за свой рантайм(), вместо этого можно было бы пойти мейнтейнером в любой дистр и там продвигать apparmor/selinux в пакеты.

вообще линуксу не помешала rule-based управлялка, я надеялся что в вейланде так и сделают, но в результате из коробки нету захвата экрана, но после того как доустановишь xdg-portal-*, всё станет точно также как и в иксах, только вон в том же гноме на панельке показывает мол какая-то приложуха записывает экран, а при старте записи будет вылазить окошко с выбором монитора(а, у wlroots ещё лучше, если нету grim/slup (и вообще конфиг не настроен), то ты даже не поймешь что идёт запись экрана), т.е. зачем это всё делали, если нету никаких разрешающих правил для определённых приложений, в будущем скорее всего ничего не изменится, остаётся ждать новую ос с новой концепцией/архитектурой, но взлетит ли она из-за множественного легаси, это только покажет будущее

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

Редактор будет иметь доступ только к тем файлам, которые ты руками в нем открыл.

а как он их изначально открывает, если не имеет доступа

Harald ★★★★★
()

Ну остановишь pipewire, и запустишь jack для своих 1,5 приложений гитарных.

Я себе уже собрал pipewire, с ним у меня сразу заработал микрофон без конфигов, и звук временами больше не шипит.

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

а как он их изначально открывает, если не имеет доступа

Файловый менеджер будет права давать при открытии.

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

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

Ты уже ошибся. Это решают не разработчики приложений, а разработчики фреймворков. И в Qt, и в GTK давно уже прикручены порталы. В приложение ты получаешь это автоматически и даже не замечаешь. Если конечно не начнешь шариться по хомяку.

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

Значит ты должен подавить в себе последние проявления луддизма и отречься от Jack-а, как костыля на пути к прогрессу и светлому будущему. Ресемплинг только улучшает звук! Слава флатпаку!

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

отречься от Jack-а, как костыля на пути к прогрессу и светлому будущему.

Это будет сложно. Аудиофилы страшнее плоскоземельцев.

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

в основном flatpak/snap хейтят за свой рантайм()

Да, это проблема №1, технически она довольно просто решается - переносом вообще всей системы во флатпак. Но в текущем его состоянии так нельзя сделать. Поэтому дурацкое дублирование всего.

вообще линуксу не помешала rule-based управлялка

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

Ну как нету, как раз в снапе и флатпаке они и есть. А с классическими репами AppArmor или SELinux надо наворачивать, но управление для пользователя очень неудобное, я бы сказал недоступное.

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

Ну остановишь pipewire, и запустишь jack для своих 1,5 приложений гитарных.

Я уже устал объяснять. jack не будет, и работать он не будет. Ничего не запустишь.

Запусти сейчас в линуксе первый OSS и поработай со звуком через него. Получится? Вот так и тут.

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

а как Haiku удовлетворяет потребности аудиофилов

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

отречься от Jack-а, как костыля

Придется, а что делать. Была такая юниксвейная штука, а придется теперь как на винде. Или писать свой аналог, но это бесперспективно - отовсюду повыкидывают поддержку jack все равно.

А все потому что разработчики pipewire грибов поели. Убили все.

Ресемплинг только улучшает звук!

Нихрена он не улучшает.

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

Нихрена он не улучшает.

Ты недостаточно перевоспитался и уверовал во флатпак и изоляцию приложений! Нужно больше стараться! Вставай каждое утро со словами «я верю, что ресемплинг улучшает звук, в изоляцию приложений и ненужность устаревшего jack-а» по три раза!

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

Кто из них? OSS или jack?

OSS вымер. jack и пульсаудио это независимые вещи. Pulseaudio не заменяет jack.

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

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

Самое плохое, что никакой альтернативы ему нет. Это и приведет нас всех к катастрофе.

Если ты действительно ратуешь за будущее Линукса, то направь свои силы в более полезное русло, которое может дать хоть какие-то плоды и повлиять на pipewire. Раз уж ты не собираешься, судя по всему, делать пулы в проект, то хотя бы обсуди это с разработчиками - может они прислушаются к твоему мнению.

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

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

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

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

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

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

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

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

Редактор будет иметь доступ только к тем файлам, которые ты руками в нем открыл.

Настройки, кэш, словари, инклюды?

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

Да, это проблема №1, технически она довольно просто решается - переносом вообще всей системы во флатпак. Но в текущем его состоянии так нельзя сделать. Поэтому дурацкое дублирование всего.

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

ещё вопрос, флатпак научился использовать дрова видюхи с хоста? или флатпак всё также их устанавливает? (давно не использовал флатпак, но помню он там что-то нвидиевское ставил)

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

Нихрена он не улучшает.

Ещё как улучшает. Можно использовать большую частоту дискретизации (192000Hz) и качественные алгоритмы интерполяции.

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

Во флатпаке jack работать не может и никогда не будет.

Во флатпаке

Флатпак является критичным условием, без которого нет пути?

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

Ресемплинг - преобразование с потерями, ламерок. Он ухудшает качество. Если изначально звук не записан в таком качестве, апсемлить смысла нет (Не берём в счёт частности вроде некоторых убогих карт от криватива, неспособные работать с разными частотами дискретизации и делающие под капотом некачественный ресемплинг).

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

(Не берём в счёт частности вроде некоторых убогих карт от криватива, неспособные работать с разными частотами дискретизации и делающие под капотом некачественный ресемплинг).

Как же не берём? Вывод некоторых аудиокарт с низкой частотой может быть плохого качества. Использование высокой частоты дискретизации и программного ресемплинга может повысить качество.

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

Если тебя интересует качество - берёшь нормальную карту, а не лепишь костыли. Она не обязательно будет дорогая.

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

Есть два основных дистрибутива - Ubuntu и Fedora.

Ложная посылка из которой вы делаете ложные выводы.

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

Ты путаешь, я не фанатик, а ты- фанатик. На святые репы молишься вопреки любому здравому смыслу.

Jack не работает во флатпаках, но флатпак хороший. Кто тут фанатик.

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

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

Иметь ОС внутри такого же контейнера и запускать ее оттуда.

флатпак научился использовать дрова видюхи с хоста?

Нет конечно. Для этого надо сам хост во флатпак засунуть.

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

Можно ещё отказаться от создания музыки. Всё ради флатпака и изоляции приложений.

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

Можно использовать большую частоту дискретизации (192000Hz) и качественные алгоритмы интерполяции.

Ерунда какая-то. Невозможно улучшить звук. Его можно только ухудшить. Любое преобразование по определению ухудшает звук.

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

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

Карты из 90-х надо на помойку отправить и забыть про это.

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

DAC может давать плохой результат на низкой частоте или вообще не поддерживать выбор частоты.

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

У меня для вас плохие новости

Ну я не сильно в курсе как на винде. Там есть аналог pivot_root и mount –bind уже? Есть пруф?

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

Зачем вообще в аудиокартах поддерживать разные частоты, если это может делать ОС с минимальными затратами?

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

Затем, что так выше качество, ламерок.

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

DAC может давать плохой результат на низкой частоте или вообще не поддерживать выбор частоты.

Не может. Это ерунда.

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

На уровне пару байт в регистр записать.

Нет. Надо аппаратный ресемплер или аналоговый фильтр делать.

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

А, я сразу не понял. Тут проблема, да. Пока тот же KDevelop (и VS Code наверное) с хомяком без изоляции работает из за этого.

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

Зачем вообще в аудиокартах поддерживать разные частоты, если это может делать ОС с минимальными затратами?

Чтобы это понять, надо изучить матчасть на предмет того как вообще работает современный аудио ЦАП. Тогда поймете.

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

Надо аппаратный ресемплер или аналоговый фильтр делать.

Аппаратный ресемплер в любом ЦАПе есть и его не может не быть никак. Изучите как ЦАП работает. Аналоговый фильтр это вообще ерунда в данном случае.

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

Вообще вся эта «флатпакоподобная» архитектура сильно буксует на задачах разработки.

Поэтому в той же Fedora Silverblue такой подход - разрабатывать в докер-контейнере (там он называется toolbox), где все внутри доступно.

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

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

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

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

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

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

У каждого обычного рантайма есть SDK версия, которая и используется для сборки флатпаков. Иначе как бы они собирались вообще?

Обычный рантайм отличается от SDK тем что в нем нет конпилятора и файлов для сборки. h - файлов там и так далее.

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