LINUX.ORG.RU

CLAP 1.0

 clap, ,


1

2

Выпущена первая стабильная версия CLAP (CLever Audio Plugin), открытого (MIT License) SDK для разработки аудио- и MIDI-плагинов.

Проект был начат Александром Бике (Alexandre Bique) в 2014 году и пережил два затяжных паузы в разработке, пока в 2021 году создатель популярных коммерческих синтезаторов U-he Урс Хекманн не промотивировал автора доделать начатое.

Функционально CLAP в существенной степени пересекается с VST3 компании Steinberg (двойная лицензия, включая GPL3) и «общественным» LV2 (лицензия ISC). Новый SDK можно сравнить с VST2, который оставили таким же простым, но прикрутили современные возможности, такие как поддержка MIDI 2.0 и полифонической модуляции. Спецификация на API модульная, есть основная часть, есть расширения.

По мнению некоторых разработчиков, создателю CLAP удалось создать API, который выгодно отличается от VST3 и LV2 тем, насколько просто начать писать на нём код. Кроме того, создатель SDK учёл ряд недоработок, присущих LV2, таких как вынос метаданных плагинов в отдельные файлы с избыточной и неудобной разметкой Turtle.

Собственного API графического интерфейса в SDK нет (и не будет), однако участники проекта позаботились о программистах и написали готовое расширение для фреймворка JUCE, которое позволяет с небольшой доработкой собрать уже существующий плагин на JUCE под CLAP.

Свободных хостов с поддержкой CLAP пока нет, ближайший кандидат — Qtractor (разработка ведётся). Из закрытых DAW с поддержкой CLAP можно отметить Bitwig (где работает Бике) и MultitrackStudio. Ещё в декабре 2021 один из разработчиков Reaper демонстрировал ‘hello world’ на CLAP, работающий внутри этой DAW, но в релизы поддержку пока не завезли.

Зато есть несколько довольно интересных открытых синтезаторов с поддержкой CLAP: Surge XT, Monique, Dexed, Odin 2. На очереди Vital (есть тестовая сборка, официального анонса пока не было). Кроме того, U-he уже выпустили свою основную линейку проприетарных синтезаторов в версии CLAP.

Разработчики ведут активные переговоры с другими компаниями на тему поддержки CLAP в их продуктах. Есть положительные отзывы от Arturia, PreSonus (Studio One), Image-Line (FL Studio) и, как ни странно, Avid.

У проекта пока нет единого официального пространства для сообщества разработчиков, пока что эту функцию выполняет чат ‘clap-chatter’ на сервере Discord команды Surge XT. Разработчики Surge сейчас как первопроходцы выполняют роль консультантов для других команд и помогают им с портированием.

>>> Подробности

★★★★★

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

Ну блин, опять у них вот это Win32, X11, Сосоa и вперед.

Во-первых то, что wayland везде как-бы и не слышал никто (и LV2 тоже). Во-вторых ну почему нельзя сделать нормальную кроссплатформенную GUI делалку, как в VST3 хотя бы (хотя там она несколько переусложнена).

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

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

В остальном, да и не пофиг ли? Абсолютное большинство будет юзать JUCE/iPLug2, чтобы из одной кодовой базы генерить под разные API и получить больший охват хостов.

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

Вау! Просто вау. Повод выпить ещё аспирина. Тамбзвпаю автору и Прокудину.

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

LV2 - там же всё через какой-то замороченный язык Turtle? Это чтобы разрабатывать плагин, надо какой-то странный язык выучить? Да блин, на разработку звука в Линуксе наложено какое-то проклятие. С 1998 постоянно какие-то мытарства.

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

На Turtle там метаданные: как называется плагин, где его идентификационный URL, какие порты и т.д. Если писать это руками, то в случае с плагинами, где много крутилок, можно свихнуться. Я в статье на LWN приводил пример плагина Mix Maxtrix, где в файле метаданных 32 тыщи строк. Но в таких случаях метаданные обычно всё-таки генерируют программно из кода.

Вообще, я бы посоветовал почитать https://drobilla.net/2019/11/11/lv2-the-good-bad-and-ugly.html. Там собственно автор этого нашего LV2 подробно разбирает главные проблемы API.

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

А где информация про Win32, X11 и Cocoa?

Да, вот там где @AP ссылку дал, я и смотрел.

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

LV2 - там же всё через какой-то замороченный язык Turtle?

Нет. Нет. Нет конечно.

Turtle - это типа XML, на нем просто пишется манифест плагина, типа как плагин называется, какие крутилки есть.

Сам плагин пишется на обычном C или C++.

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

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

Кстати, VST3 - не исключение. Вот что писали на их сайте в 2021:

Arne_Scheffler: We are aware of the fact that Wayland is coming. Last time I checked there was no way to express what we need in any Wayland API. As long as we don’t know how to embed a plug-in window into a host window, there won’t be Wayland support. But maybe this has changed in the last 3 years I do not have time to look into it at the moment.

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

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

Я насколько глубоко в вяленд ещё не лазил, необходимости не было.

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

Там я видел примеры. Это жуткое зрелище. У меня до сих пор пост-травматический синдром после попыток разобраться в конфигурации ALSA…

А вот и пример «манифеста». Да это вообще какая-то криптограмма:

@prefix atom:  <http://lv2plug.in/ns/ext/atom#> .
@prefix doap:  <http://usefulinc.com/ns/doap#> .
@prefix lv2:   <http://lv2plug.in/ns/lv2core#> .
@prefix param: <http://lv2plug.in/ns/ext/parameters#> .
@prefix patch: <http://lv2plug.in/ns/ext/patch#> .
@prefix rdfs:  <http://www.w3.org/2000/01/rdf-schema#> .
@prefix state: <http://lv2plug.in/ns/ext/state#> .
@prefix ui:    <http://lv2plug.in/ns/extensions/ui#> .
@prefix urid:  <http://lv2plug.in/ns/ext/urid#> .
@prefix work:  <http://lv2plug.in/ns/ext/worker#> .
@prefix xsd:   <http://www.w3.org/2001/XMLSchema#> .

<http://lv2plug.in/plugins/eg-sampler#sample>
        a lv2:Parameter ;
        rdfs:label "sample" ;
        rdfs:range atom:Path .

<http://lv2plug.in/plugins/eg-sampler>
        a lv2:Plugin ;
        doap:name "Exampler" ;
        doap:license <http://opensource.org/licenses/isc> ;
        lv2:project <http://lv2plug.in/ns/lv2> ;
        lv2:requiredFeature state:loadDefaultState ,
                urid:map ,
                work:schedule ;
        lv2:optionalFeature lv2:hardRTCapable ,
                state:threadSafeRestore ;
        lv2:extensionData state:interface ,
                work:interface ;
        ui:ui <http://lv2plug.in/plugins/eg-sampler#ui> ;
        patch:writable <http://lv2plug.in/plugins/eg-sampler#sample> ,
                param:gain ;
        lv2:port [
                a lv2:InputPort ,
                        atom:AtomPort ;
                atom:bufferType atom:Sequence ;
                atom:supports <http://lv2plug.in/ns/ext/midi#MidiEvent> ,
                        patch:Message ;
                lv2:designation lv2:control ;
                lv2:index 0 ;
                lv2:symbol "control" ;
                lv2:name "Control"
        ] , [
                a lv2:OutputPort ,
                        atom:AtomPort ;
                atom:bufferType atom:Sequence ;
                atom:supports patch:Message ;
                lv2:designation lv2:control ;
                lv2:index 1 ;
                lv2:symbol "notify" ;
                lv2:name "Notify"
        ] , [
                a lv2:AudioPort ,
                        lv2:OutputPort ;
                lv2:index 2 ;
                lv2:symbol "out" ;
                lv2:name "Out"
        ] ;
        state:state [
                <http://lv2plug.in/plugins/eg-sampler#sample> <click.wav> ;
                param:gain "0.0"^^xsd:float
        ] .

<http://lv2plug.in/plugins/eg-sampler#ui>
        a ui:GtkUI ;
        lv2:requiredFeature urid:map ;
        lv2:optionalFeature ui:requestValue ;
        lv2:extensionData ui:showInterface ;
        ui:portNotification [
                ui:plugin <http://lv2plug.in/plugins/eg-sampler> ;
                lv2:symbol "notify" ;
                ui:notifyType atom:Blank
        ] .
svyatozar ★★
()

Я правильно понимаю, что к зоопарку LADSPA+DSSI+LV2 теперь добавляется ещё один питомец, или всё-таки есть шанс хоть какой-то унификации?

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

LADSPA и DSSI – это что-то с советского стенда о вреде геронтофилии.

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

Во-первых то, что wayland везде как-бы и не слышал никто (и LV2 тоже).

поэтому и не слышали, что как бы не везде он

Во-вторых ну почему нельзя сделать нормальную кроссплатформенную GUI делалку, как в VST3 хотя бы (хотя там она несколько переусложнена).

а она через что рисовать будет, если не через иксы? и слава богу, никто не заставляет юзать vstgui для создания vst3

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

Всмыле смешно? Что в твоем понимании «рисовать через иксы» и чем это отличается от «рисовать через wayland»?

Вообще-то, ничем.

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

я знаю, ну подождем, отсутствие наличия виндовых хостов с LV2 во многом и сыграло против этого формата

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

если не отличается, то в чем твоя претензия?

Как раз в этом. Почему вейланд не поддерживается и все сидят на легаси, если с точки зрения реализации это делается легко.

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

примеры плагинов на Qt, в том числе со статической линковкой

Это не может нормально работать, ну блин, они решили еще и на эти грабли наступить?

Qt запускает свой event loop и использует глобальные переменные. При различии версий Qt в плагине и у хоста проблемы гарантированы, и статическая линковка тут не спасет.

Спасет только работа плагина в отдельном процессе и общение с хостом через unix socket или shared memory, но я крайне сомневаюсь что у них так сделано.

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

Да блин, на разработку звука в Линуксе наложено какое-то проклятие. С 1998 постоянно какие-то мытарства.

Звук, вайфай, блутуф, десктоп, игры, cad, графические редакторы… Короче, всё кроме серверов, сети и программирования :D хотя стоит заметить, что некоторые вещи вроде улучшаются.

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

да можно «написать на вэйланде», там нет никакого тулкита внутри

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

ну вот собранные на Qt6 плагины работают в хостах на Qt5, но в сабже - это proof of concept - пиши гуй хоть на QML, щас вообще на вебе уже некоторые пишут морды к плагинам

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

КАК НАДО СДЕЛАТЬ

Товарищи разработчики платформ плагинов звука.

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

Он состоит из двух частей - dsp часть и gui часть. DSP часть это динамическая библиотека, которая загружается в realtime процесс хоста и там молотит. Собственно так уже и есть.

GUI часть - и вот тут отличие - это исполняемый бинарник, который запускается как отдельный процесс с низким приоритетом, и общается с хостом через unix socket.

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

Люди радуются, просто берут и пишут плагины, используют их и рождают Музыку.

Вместо того изнасилования мозга которое есть сейчас.

Если сабж делает именно так - то поздравляю.

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

Впрочем я сходил по ссылке.

inter-process nature

Да, это оно. Ну наконец то, медведь в лесу сдох. Кто-то догадался вынести gui в отдельный процесс.

Теперь я фанат этого клапа.

@AP, когда в ардуре ожидается?

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

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

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

как только в JUCE хостовую часть завезут (плагиновая - считай, что есть)

зато в Беспоке почти что уже есть LV2 :)

kott ★★★★★
()

создатель популярных коммерческих синтезаторов U-he Урс Хекманн

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

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

Зато всё также нет поддержки пипивири. :( Запускал недавно, не обнаружил новшеств.

Вообще, классный... (синт? Студия? Как его назвать?), но сильно фрагментирован. У мидисеквенсора А есть фича1, а у мидисеквенсора Б есть фича 2. И вместе их не использовать и одного полноценного нет.

А вообще, у меня динамики на компе порвались. Оба. Что бы поставить помощнее в лаптоп?

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

Пипевири - тогда уже. А что там за проблема и насколько серьёзная? Не хочу пока ставить его.
Ждать исправления в JUCE можно долго, попутно пытаясь разобраться самому, но думается, что надо писать разработчикам Pipewire, тк как с обычным Джеком работает.

У мидисеквенсора А есть фича1, а у мидисеквенсора Б есть фича 2. И вместе их не использовать и одного полноценного нет.

notesequencer больше для генерации патернов, тогда как notecanvas и noterecorder кыкразтаке похожи на пиано ролл, и я бы их объединил в один модуль.

Но планов там много, писателей мало :) В нынешнем GSoC хотят вкрутить Faust.

kott ★★★★★
()

Ой... CLAP, Juce... При всем богатстве выбора пользоваться все равно будут Штенбергом и Аблетоном :( Синтезатор-то есть, а рулилок аппаратурой все равно нету.

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

Ну мы ж с тобой уже обсуждали проблемы использования закрытых MIDI-протоколов. Вот представь, если кто-то захочет какой-нибудь простихоссподя Waldorf Iridium в качестве CLAP-плагина прикрутить. И попробовать рулить им с экрана своего любимого ДАВа. :) Ну И? Есть же VST-плагины для реальных железок. Типа цепляешь свою железку на вход-выход аудиоинтерфейса, MIDI-поток отправляешь по USB, настраиваешь маршрутизацию на компе и рулишь своей железкой с экрана (если я правильно понимаю процесс). Я, правда, с трудом представляю, накой нужны плагины, если уже есть Иридиум, но вот все-таки?

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