LV2
![]() | |
Разработчик(и) | Стив Харрис, Дэвид Робиллард и другие участники linux-audio-dev |
---|---|
Стабильная версия | 1.18.10 [1] ![]() |
Репозиторий | gitlab |
Написано в | С и Черепаха |
Лицензия | Лицензия ISC |
Веб-сайт | lv2plug |
LV2 ( LADSPA Version 2 ) — это набор не требующих лицензионных отчислений. открытых стандартов, [2] для создания музыки для плагинов и соответствующих хост-приложений. Он включает поддержку синтеза и обработки звука цифрового и CV . [3] такие события, как MIDI и OSC , и предоставляет бесплатную альтернативу стандартам аудиоподключаемых модулей , таким как Virtual Studio Technology (VST) и Audio Units (AU).
LV2 приходит на смену более ограниченному стандарту Simple Plugin API (LADSPA) Linux Audio Developer и заменяет инфраструктуру плагинов Disposable Soft Synth Interface (DSSI) («LADSPA для инструментов»), добавляя такие возможности, как MIDI-возможности, пользовательские пользовательские интерфейсы и систему, обеспечивающую расширяемость. исходного стандарта. [4] [5]

В формате LV2 теперь доступно более тысячи двенадцати плагинов. [6] Известные плагины включают Calf Studio Gear . [7] Программное обеспечение, которое может содержать «наборы» плагинов LV2, включает Ardor , Ingen , Carla (из KXStudio ), Qtractor , Traverso DAW , [8] Харрисон Микбус , [9] МУЗА , Смелость , [10] Ecasound , FFmpeg , Guitarix , фреймворк GStreamer и программное обеспечение для диджеинга Mixxx , с частичной поддержкой в настоящее время в LMMS и REAPER . Это также формат плагинов, используемый MOD Duo и MOD Duo X. [11] Zynthian и Poly Effects Аппаратные средства Digit/Beebo.
Концепции
[ редактировать ]LV2 — это расширяемая среда, позволяющая программе загружать плагин для выполнения некоторой обработки. Обратите внимание, что используемые здесь термины намеренно являются общими, поскольку LV2 позволяет обмениваться данными любого типа между хостом и плагином.


РДФ
[ редактировать ]Характеристики LV2 определяются [12] и использовать [13] метаданных RDF в формате Turtle . Используемые технологии включают Dublin Core , FOAF , DOAP , SPDX , XSD , RDFS и OWL . [14] Реляционные возможности и свойства, поддерживаемые этим синтаксисом, мощны, но поначалу их сложно понять. [15]
Помимо базовой спецификации существует 21 официальное расширение, обеспечивающее поддержку параметров хоста, предустановок плагинов, времени и единиц измерения, буферов портов, свойств, групп и меток параметров для отправки MIDI, патчей, событий пользовательского интерфейса и многого другого. [16] Существуют различные сторонние расширения для поддержки экспрессивных событий , OSC и MOD Devices, специального аппаратного и программного обеспечения, три из которых находятся в пространстве имен KXStudio LV2 .
Плагин использует эту информацию для предоставления хосту списка возможностей, чтобы хост мог их реализовать. [17] Аналогично, хост может предоставить список возможностей расширения LV2, которые он поддерживает, при инициализации плагина.
В приведенном ниже примере сначала объявляются префиксы ярлыков для онтологий lv2, doap и spdx. Далее, каждый плагин должен иметь свой собственный URI или URN . Затем четыре следующих заявляют, что этот ресурс является lv2:Plugin, библиотекой двоичных объектных файлов с именем Silence.so, плагин известен под названием Silence и лицензируется под лицензией GNU GPL. Эти 4 свойства являются обязательными для плагина LV2; если у плагина нет всех из них, хост может не загрузить его.
@prefix lv2: <http://lv2plug.in/ns/lv2core#>.
@prefix doap: <http://usefulinc.com/ns/doap#>.
@prefix spdx: <http://spdx.org/rdf/terms#>.
<http://example.org/lv2/wikipediaexample/silence>
a lv2:Plugin;
lv2:binary <silence.so>;
doap:name "Silence";
doap:license spdx:GPL-3.0-or-later;
rdfs:comment "This is an example plugin that includes an example plugin description."
lv2:port [
a lv2:AudioPort, lv2:OutputPort;
lv2:index 0;
lv2:symbol "output";
lv2:name "Output";
].
Атомы
[ редактировать ]«Atom» Структуры данных используются для обмена сообщениями между портами плагинов. [18] [19] для передачи MIDI, [20] ОСК, патч, [21] Пользовательский интерфейс и другие события между экземплярами плагина. Их также можно сериализовать на Turtle. [22] [23]
пользовательский интерфейс
[ редактировать ]
Помимо отделения метаданных от двоичных файлов, LV2 требует общего разделения между DSP и обработкой пользовательского интерфейса. Преимущества заключаются в том, что обработка пользовательского интерфейса не может сдерживать обработку DSP, а пользовательский интерфейс и DSP можно разделить по сети. Обмен сообщениями с использованием Atoms является предпочтительным методом передачи обновлений между работающими двоичными файлами DSP и пользовательского интерфейса.
Хосты также могут предоставлять интерфейс для отображения и настройки свойств экземпляров плагинов. Существуют расширения и свойства, помогающие отображать правильные типы элементов управления.
Резьба
[ редактировать ]Одной из возможностей, которую хост может предоставить плагину, является «рабочий поток». С точки зрения программирования это означает, что плагин может переложить часть работы в другой поток, предоставляемый хостом. Обычно это полезно, поскольку плагин обычно запускается в аудиопотоке приложения в реальном времени и, следовательно, не может выполнять какие-либо безопасные операции, не связанные с реальным временем (доступ к диску, системные вызовы и т. д.). Чтобы плагин мог легко достичь своих целей (например, загрузить файл с диска), хост может предоставить рабочий поток. Хост предоставляет LV2_Extension для рабочего потока. [24] и плагин сможет его использовать.
Разработка
[ редактировать ]Существуют инструменты и платформы, которые помогут в создании плагинов LV2. К ним относятся DPF (DISTRHO Plugin Framework), JUCE , Faust , Dplug, iPlug 2 (альфа) и Cabbage (альфа). Существует также возможность загружать патчи Pure Data , а также JIT -запуск кода Faust, Rust, Lua или C в некоторых плагинах LV2.
См. также
[ редактировать ]Ссылки
[ редактировать ]- ^ «LV2 1.18.10» .
- ^ «Уровень 2/Уровень 2» .
- ^ Резюме JACK/LV2 - LinuxМузыканты
- ^ Список функций LV2
- ^ drobilla.net: LV2: Хорошее, плохое и уродливое.
- ^ Список из более чем 1000 плагинов URIS [1] на сайте.
- ^ «Calf Studio Gear поддерживает LV2» .
- ^ «Руководство пользователя Traverso, стр. 26» (PDF) . Архивировано из оригинала (PDF) 23 апреля 2016 г. Проверено 21 февраля 2020 г.
- ^ Веб-сайт Харрисона
- ↑ Audacity. Архивировано 29 сентября 2008 г. в Wayback Machine.
- ^ «МОД-устройства» . moddevices.com . Проверено 16 апреля 2016 г.
- ^ «Lv2/Core/Lv2core.TTL · мастер · LV2 / Lv2» .
- ^ «Lv2/Core/Lv2.h · мастер · LV2 / Lv2» .
- ^ «Lv2/Schemas.lv2 на ведущем устройстве · lv2/Lv2» . Гитхаб .
- ^ drobilla.net: Написание книги LV2
- ^ «Характеристики LV2» .
- ^ Книга «Программирование плагинов LV2» с примерами плагинов.
- ^ Атомы LV2: модель данных для аудиоплагинов реального времени (PDF)
- ^ «Атом LV2» .
- ^ «LV2 МИДИ» .
- ^ «Патч LV2» .
- ^ drobilla.net : LV2 atom and state serialisation -
- ^ https://github.com/lv2/sratom — небольшая библиотека C для сериализации атомов LV2 в RDF и обратно, для преобразования между двоичными и текстовыми данными или сохранения в модели.
- ^ «Работник LV2» .