LINUX.ORG.RU

Ardour, JACK и что делать с жопой под названием «звуковой стек Linux»

 ,


2

3

У меня тут вышло большое интервью с Полом Дэвисом (главный разработчик Ardour и бывший разработчик JACK) в двух частях.

Можно слушать как подкаст, можно читать отредактированную расшифровку на английском.

Первая часть: http://libregraphicsworld.org/blog/entry/podcast-ep-002-paul-davis-on-the-deep-rewrite-of-ardour-daw

Вторая часть: http://libregraphicsworld.org/blog/entry/podcast-ep-003-paul-davis-on-fixing-big-linux-audio-issues

Переводить на русский целиком я задолбаюсь, поэтому главные тезисы:

  • Некоторые пользователи не заинтересованы в ковырянии кода, они хотят чтоб как в Reaper – пишешь плагин на Lua, которые меняет вообще что угодно. Но в рипер Lua встроили явно на очень раннем этапе, сделать похожее в Ardour сейчас уже технологически сложно, поэтому покрытие API в привязках Lua хоть и расширяется, но ряд ограничений останется.

  • Последние несколько лет команда грохнула огромное количество времени на рефакторинг кода и переписывание реализации некоторых ключевых концепций в программе. На момент выпуска версии 6 остались два момента, которые отложены: более точная работа с перескоком между музыкальным временем и выборками (разработчики пока не договорились о ряде моментов в реализации) и встроенный лупинг. В остальном, переписанную часть можно больше не трогать ещё лет 10. Там есть, например, фундамент для запланированной возможности смены частоты сэмплирования на лету без перекодирования.

  • Пока шёл длительный рефакторинг, пользователи не особенно доставали разработчиков нытьем «ну когда же уже» и даже увеличили финансовую поддержку. Часть дополнительных средств Пол планирует бросить на улучшение документации и видеоуроки.

  • В последние годы проект понемногу уходит от применения GTK. Сейчас тулкит используется для всего нескольких вещей: упаковка виджетов на форме, файловые диалоги, текстовый ввод и виджет дерева (treeview). Остальное рисуется на Cairo. Если бы Пол начинал писать DAW сейчас, он бы выбрал готовый специализированный тулкит вроде JUCE. Переписывать виджет текстового ввода он, например, в принципе не возьмётся – масштаб такой работы часто недооценивается, там можно вообще концы отдать. А вот упаковка виджетов на constrained layout – в планах. На момент выхода второй части интервью уже есть ветка, где ведется эта работа.

  • Пол недавно упоминал, что общается с Мартином Кири (Tantacrul), который в прошлом году вышел на работу UX-дизайнером MuseScore (у Мартина популярный блог на ютубе, где он разбирает косяки в юзабилити программ для набора нот с применением фокус-групп пользователей). На прямой вопрос Пол ответил, что пока ничего конкретного сказать не может, но выразил восхищение работой Мартина и заметил, что нужно быть просто тупым, чтобы не хотеть слушать инсайты пользователей, которые работают с твоим софтом впервые.

  • Звуковой стек в Linux – кромешный ад, лучше CoreAudio в макоси пока ничего не придумано. Но в macOS несколько релизов назад часть функциональности убрали в user space демон. Примерно тот же принцип получается при сопряжении ALSA и PipeWire. Автор PipeWire вроде как прислушивается к тому, что ему говорят парни, пишущие звуковой софт, поэтому есть некоторая надежда сделать ситуацию не такой печальной.

  • У Пола накопился ряд претензий к JACK, который он сам же когда-то и создал. Особенно не нравится JACK2, который написан совсем другими людьми. В какой-то момент Пол сложил с себя все полномочия мейнтейнера и с тех пор пребывает в счастливом неведении, что там вообще происходит. Поддержку JACK из программы никто не выпилит, но пользователям Ardour он советует пользоваться бэкендом ALSA, при использовании которого всё просто работает.

  • OMF и AAF – хреновые форматы для обмена проектами, добавлением их поддержки в команде никто не хочет заниматься. Есть некий интерес к OpenTimelineIO, но надо смотреть более предметно.

  • VCV Rack – офигенный проект, Пол признается, что вынужден себя режимить каждый раз, когда запускает этот синтезатор, иначе может играться просто часами (в перерыве между выходами двух частей подкаста я ему с подачи @ist76 показал SOLAR 50, и Пол за полвечера накидал похожий софтовый аналог в Рэке). Сейчас модулей для Rack вдвое больше, чем LV2-плагинов, хотя проекту всего три года, а LV2 – уже больше десятка лет. Сказалась идея на старте прибить гвоздями модули к ровно одному, но очень мощному синтезатору, и убрать у разработчика сложный выбор, на каком тулките писать GUI. Перенести этот опыт на LV2 априори невозможно, но в последнее время выручают фреймворки, с которыми можно генерировать плагины в любом формате (т.е. под любой популярный API). Это заметно улучшает ситуацию со скоростью разработки и доступностью плагинов.

  • Mixbus как единственный успешный коммерческий отпрыск Ardour выжил потому, что разработчики а) на старте не имели проблем с GPL (Solid State Logic сломались уже на этом), б) приняли подход команды к разработке GUI (на этом погорели Waves Audio со своим Tracks Live), в) оказались готовыми интегрироваться в процесс разработки Ardour (тут Waves тоже нишмагли – в какой-то момент кодовые базы безвозвратно разошлись).

★★★★★

Последнее исправление: AP (всего исправлений: 3)

Ответ на: комментарий от AP

Погоди, а чья работа делать совместимость DAW с плагинами? Авторы плагинов? Или авторы DAW? Или авторы всяких прослоек совместимости, типа всяких лилвов и сердов? Если в одной DAW работает одно, а в другой другое, то виноваты авторы плагинов, не обеспечивших совместимости со всем на свете и, глупенькие такие, выбрали «не тот туллкит»? Или авторы DAW, которые игнорируют проблемы связанные с тем, что они игнорируют пользователей и авторов плагинов не желая решать созданные их давкой проблемы? Хотя какие это DAW? Так, секвенсор+, не более

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

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

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

Ну понимаешь, проще интерфейс плагина сделать на pugl, чем интерфейс всей DAW. А вообще надо бы посмотреть в корень проблемы - то что плагины работают в одном адресном пространстве друг с другом и с DAW. И это сразу три проблемы - библиотеки, обрушение хоста ошибкой в плагине, отладка.

curufinwe ★★★★★
()
Последнее исправление: curufinwe (всего исправлений: 1)

пользователи не заинтересованы в ковырянии кода, они хотят чтоб как в Reaper – пишешь плагин на Lua...

Ты точно пользователей с программистами не попутал?

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

Пфффффф…

А как же подход? «У меня в Cubase/Nuendo/ProTools/Reaper/Ardour/etc (но только одно) работает - и ладно».

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

Я сначала было даже обрадовался… но там почему-то не видно соединений Hydrogen-Ardour:( (если речь о «коммутаторе»)

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

Очевидно, что ручные оптимизации с использованием машинных кодов значительно лучше справляются, нежели компилятор.

звучит как проблема компилятора

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

У меня встречное предложение - если принцип «в lv2 можно использовать любой графический туллкит и потому нет стандарта» не работает, то может надо перестать выкабениваться и ввести-таки стандарт из пары «правильных» туллкитов и тогда уже можно будет говорить, что «проста ты тупой и ни тем тулкатам пользуешься!» ? А то, на словах свобода, а на практике третий рейх гтк. (Про гтк - это бонба Прокудину, раз он так просто заводится)

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

Так проблема в том, что правильных и выходящих за пределы отдельных проектов пока и нет. А те что есть не подходят под специфические требования.

Некоторые, как я, вообще без тулкита плещут.

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

Пока мы тут сидим, там Hermann Meyer клавиатуру для jack выпустил с поддержкой new session manager и gui на cairo. Вот такой ответ на этот тред.

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

Дык у меня тёща приехала, с ей носиться, а я по больницам да по курортам, я без компа. Я бы и не трындел бы, ну, только немножко :)

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

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

Твой минимализм - это трата твоего времени на написание того, что давно есть, просто не работает изза давописателей и хостописателей. Это как писать свой lfs, когда уже есть lfs :)

Я, вот, сегодня комнату массонской ложи видел, не иначе там Ардор пишут :)

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

Так на винде с vst3 то же самое, даже хуже. Тулкит есть, но он спец и статически линкуется в плагин. Более того вообще все статически надо линковать, иначе совсем жопа.

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

Так на винде с vst3 то же самое, даже хуже.

Я, наверное, будучи просто юзером, что-то не так понимаю. Потому что в винде vst3 просто работает во всех давах. Кроме совсем уж странных кривых, которые не работают ни в каких.
Или же я чего-то не знаю.

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

Пока мы тут сидим, там Hermann Meyer клавиатуру для jack выпустил с поддержкой new session manager и gui на cairo.

Единственным преимуществом, я так понимаю, является поддержка NSM?

Потому что ну вот виртуальная клавиатура прямо в ардуре, с отдельным портом (хоть обкоммутируйся), вот jack-keyboard, вот ещё всякие там древние vkeybd.

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

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

А плагин на Qt для винды точно так же не напишешь, будут ровно те же проблемы что с lv2 на Qt.

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

Ну как тебе сказать... Waves Audio свой софт на Qt еще не так давно писали. Про это и в интервью упоминается.

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

Проблема lv2 в том, что создатели впилили зачем-то поддержку Qt и Gtk в API, хотя было понятно что это работать не может, а теперь всем объясняй что так не надо делать.

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

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

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

Хотел узнать больше, как что реализовано, но у них все огорожено.

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

Нашел даже опенсорс проекты с VST3 и Qt под винду. Люди пилят, да, я немного не то имел ввиду. Сделать то можно, как и LV2 на Qt. Но вылезут те же проблемы.

Возможно, в винде легче в том плане что DAW в основном не на Qt, и нет конфликта. Хотя это тоже спорно, надо еще разбираться на чем там DAW.

Зато посмотрев эти проекты я понял наконец как делать VST3 с любым GUI, без штатного тулкита.

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

Компилятор может оптимизировать только примитивные конструкции, и то не всегда хорошо. От того, как gcc векторизует код, порой просто волосы дыбом встают при дизассемблировании.

Кроме того, ни один компилятор не сможет повторить алгоритм соединения 8 биквадратных фильтров в один большой каскад с последующей обработкой. Это для него слишком сложно: нужно маски двигать правильно и вовремя их применять к ячейкам памяти фильтра. Иными словами, Си недостаточно выразителен для этих целей, т.к. изначально разработан как язык, оперирующий скалярными значениями. А intrinsic’и - это то ещё убожество, уж лучше вручную машинные коды писать.

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

Большинство крупных DAW — древнее говно мамонта, которое появилось до Qt. Возможность была только у Ableton Live и Reaper (Logic Pro я в расчет не беру, там и так всё ясно). Ни одна из них не написана на Qt.

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

Но если бы был стабильно работающий подход, стал бы ты тратить время на написание кнопки и крутилки с нуля? Или просто указал в какие координаты и с какой текстурой поставить кнопку?

А кто сказал, что кнопки надо через текстуры отрисовывать? Я вот, например, все контролы рисую программно. А кто-то вообще 3D-модели рендерит.

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

Твой минимализм - это трата твоего времени на написание того, что давно есть, просто не работает изза давописателей и хостописателей.

Давописатели нормально всё пишут. X11 работает практически без проблем. Просто lv2 спецификация должна задепрекейтить все жирные тулкиты, которые имеют глобальный стейт, из-за чего и не совместимы друг с другом. И в туториалах и примерах красным по белому надо писать: «не используйте GTK, не используйте Qt - всё, что вы сделаете на них, может быть использовано против вас».

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

В Windows проще, потому что там единая оконная система. Есть дескриптор окна, а будешь ты там использовать стандартные контролы, или сам рисовать средствами GDI+/Cairo/OpenGL - твоё личное дело.

Под unix-like системами всё портит, как раз, обилие «жирных» тулкитов, которые очень завязаны на свой глобальный стейт, который конфликтует с другими версиями этих же самых тулкитов при динамическом связывании библиотек.

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

Насколько помню, сейчас GPU особой точностью вычислений не блещет, из-за чего все, кто рендерит видео, предпочитают делать это на CPU. Если не прав - поправьте.

Как бы да, авторы пишут, что юзают float.

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

Ну, float - это ещё ничего. Вопрос в том, насколько GPU’шный float хорош и точен. А то выяснится, что он квадратные корни с точностью до 3-го знака после запятой считает - и привет.

sadko4u ★★
()

Подношу такой член к модератору ЛОРа. Он орёт – «Постинг заблокирован!». Ну я надел VPN и вставил.

anonymous
()

Не вижу никаких проблем с Джеком. В сообщениях об ошибке он даже пишет, что нужно сделать.

В общем и целом:

  • добавить пользователя в группу audio
  • перелогиниться для вступления в силу
  • добавить настройку в /etc/security/limits.conf
  • установить qjackctl
  • катнуть /proc/asound/cards или aplay -l (пакет alsa-utils) и найти там свою карту
  • в ~/.jackdrc записать
/usr/bin/pasuspender -- /usr/bin/jackd -d alsa -d hw:КАРТА -r 4800 -p 1024 -n 2

С вариациями.

Потом просто стартуешь qjackctl, запускаешь Джека. Открываешь остальные приложения. Соединяешь их там как надо. И всё. Чё там этот чувак осилить не смог?

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

Че не смог осилить изначальный автор jack? Это очень хороший и интересный вопрос.

А зачем pasuspender то прописывать?

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

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

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

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

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

иксвейланд

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

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

Чё там этот чувак осилить не смог?

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

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

Вспомнилась статья о будущем 30-х годов, где последние империалисты засели на острове, а потом их загасили со станции управления погодой на мезонной энергии.

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

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

Хехе, эти гады только мезонной энергией и выводятся, иначе никак :)

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

Не, если потом нарисованный контрол можно в cairo-скрипт перевести, то штучка интересная может оказаться. Но, имхо, штучка может оказаться слишком специфичной.

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

у меня возникает один резонный вопрос, а нахрена вообще тулкит для управления параметрами плагина? почему не сделать, как в linuxsampler: зацепился к сокету и хоть обуправляйся? учитывая, что звук всё равно надо переслушивать в контексте, там лишние миллисекунды ни на что не повлияют. или я не прав?

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

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

так вообще ни один компилятор или ни один компилятор Си?

т.к. изначально разработан как язык, оперирующий скалярными значениями.

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

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