Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

LV2 ( LADSPA Version 2 ) - это набор бесплатных открытых стандартов [1] для подключаемых модулей и соответствующих хост-приложений. Она включает в себя поддержку синтеза и обработки из цифрового аудио и CV , [2] события , такие как MIDI и OSC , и предоставляет бесплатную альтернативу аудио плагин стандартов , таких как Virtual Studio Technology (VST) и Audio Units (AU).

LV2 следует за более ограниченным стандартом Linux Audio Developer's Simple Plugin API (LADSPA) и заменяет инфраструктуру подключаемых модулей Disposable Soft Synth Interface (DSSI) («LADSPA для инструментов»), добавляя такие возможности, как возможности MIDI, настраиваемые пользовательские интерфейсы и систему, обеспечивающую расширяемость исходного стандарта. [3] [4]

Список плагинов LV2 на хосте Carla

Сейчас доступно более двенадцати сотен плагинов в формате LV2. [5] Известные плагины включают Calf Studio Gear. [6] Программное обеспечение, которое может содержать «пакеты» плагинов LV2, включая Ardor , Ingen , Carla (из дистрибутива KXStudio ), Qtractor , Traverso DAW , [7] Harrison Mixbus , [8] MusE , Audacity , [9] Ecasound , FFmpeg , фреймворк GStreamer и программное обеспечение для диджеинга Mixxx , с частичной поддержкой в ​​настоящее время в LMMS.и REAPER . Это также формат плагина, используемый аппаратными модулями MOD Duo и MOD Duo X, [10] Zynthian и Poly Effects Digit / Beebo.

Концепции [ править ]

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

Плагины LV2 в хосте Ingen
Модульный барабанный синтезатор LV2 в Carla

RDF [ править ]

Спецификации LV2 определяется [11] и использование макияжа [12] из RDF метаданных в Turtle формате. Используемые технологии включают Dublin Core , FOAF , DOAP , SPDX , XSD , RDFS и OWL . [13] Реляционные возможности и свойства, поддерживаемые этим синтаксисом, являются мощными, но поначалу могут быть трудными для понимания. [14]

Помимо базовой спецификации существует 21 официальное расширение, обеспечивающее поддержку параметров хоста, предустановок плагинов, времени и единиц измерения, буферов портов, свойств, групп и меток параметров, для отправки MIDI, патчей, событий пользовательского интерфейса и многого другого. [15] Существуют различные сторонние расширения для поддержки выразительных событий , оборудования и программного обеспечения OSC и MOD Devices , три из которых находятся в пространстве имен KXStudio LV2 .

Плагин использует эту информацию, чтобы предоставить хосту список возможностей, чтобы хост мог их реализовать. [16] Точно так же хост может предоставить список возможностей расширения LV2, которые он поддерживает при инициализации плагина.

В приведенном ниже примере сначала объявляются префиксы ярлыков для онтологии lv2, doap и spdx. Далее, каждый плагин должен иметь свой собственный URI или URN . Затем в следующих 4 строках объявляется, что этот ресурс является lv2: Plugin, библиотекой двоичных объектных файлов с именем файла silent.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 : двоичный  <тишина.со> ;  doap : name  "Тишина" ;  doap : license  spdx : GPL-3.0 или новее ;  rdfs : comment  «Это пример плагина, который включает пример описания плагина».  lv2 : порт  [  a  lv2 : AudioPort ,  lv2 : OutputPort ;  lv2 : индекс  0 ;  lv2 : символ  «выход» ;  lv2 : имя  «Вывод» ;  ].

Атомы [ править ]

Структуры данных «Atom» используются для обмена сообщениями между портами плагина [17] [18] для передачи MIDI, [19] OSC, Patch, [20] UI и других событий между экземплярами плагина. Их также можно сериализовать в Turtle. [21] [22]

UI [ править ]

Хост-интерфейс для свойств плагина

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

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

Threading [ править ]

Одной из возможностей, которую хост может предоставить плагину, является «рабочий поток». С точки зрения программирования это означает, что плагин может разгрузить некоторую работу, которая будет выполняться в другом потоке, который предоставляет хост. Это обычно полезно, потому что плагин обычно запускается в аудиопотоке в реальном времени приложения и, следовательно, не может выполнять какие-либо безопасные операции не в реальном времени (доступ к диску, системные вызовы и т. Д.). Чтобы плагин мог легко достичь своих целей (например, загрузить файл с диска), хост может предоставить рабочий поток. Хост предоставляет LV2_Extension для рабочего потока [23], и плагин может его использовать.

Развитие [ править ]

Существуют инструменты и фреймворки, помогающие создавать плагины LV2. К ним относятся DPF (DISTRHO Plugin Framework), вилка DISTRHO JUCE , Faust , Dplug, iPlug 2 (альфа) и Cabbage (альфа). Также есть возможность загружать патчи Pure Data, а также JIT- запускать код Faust, Rust, Lua или C в некоторых плагинах LV2. Для обмена информацией и обсуждения LV2 существуют списки рассылки пользователей и разработчиков, а также каналы # lv2 и #lad на IRC freenode , а также форумы, такие как LinuxMusICAL .

См. Также [ править ]

  • Комплект для подключения аудио JACK

Ссылки [ править ]

  1. ^ https://gitlab.com/lv2/lv2
  2. ^ JACK / LV2 CV - LinuxМузыканты
  3. ^ Список возможностей LV2
  4. ^ drobilla.net: LV2: Хороший, плохой и уродливый
  5. ^ Список 1000+ плагинов uris [1] сайт.
  6. ^ «Calf Studio Gear поддерживает LV2» .
  7. ^ "Руководство пользователя Traverso, стр. 26" (PDF) . Архивировано из оригинального (PDF) 23 апреля 2016 года . Проверено 21 февраля 2020 .
  8. ^ Веб-сайт Харрисона
  9. ^ Audacity архивации 2008-09-29 в Wayback Machine
  10. ^ «Устройства MOD» . moddevices.com . Проверено 16 апреля 2016 .
  11. ^ https://gitlab.com/lv2/lv2/-/blob/master/lv2/core/lv2core.ttl
  12. ^ https://gitlab.com/lv2/lv2/-/blob/master/lv2/core/lv2.h
  13. ^ https://github.com/lv2/lv2/tree/master/schemas.lv2
  14. ^ drobilla.net: Написание книги LV2
  15. ^ http://lv2plug.in/ns/
  16. ^ Книга « Программирование LV2 плагинов» с примерами плагинов.
  17. ^ LV2 Atoms: модель данных для подключаемых модулей аудио в реальном времени (PDF)
  18. ^ http://lv2plug.in/ns/ext/atom/
  19. ^ http://lv2plug.in/ns/ext/midi/
  20. ^ http://lv2plug.in/ns/ext/patch/
  21. ^ drobilla.net: Сериализация атома и состояния LV2 -
  22. ^ https://github.com/lv2/sratom - небольшая библиотека C для сериализации атомов LV2 в и из RDF, для преобразования между двоичным кодом и текстом или сохранения в модели.
  23. ^ http://lv2plug.in/ns/ext/worker

Внешние ссылки [ править ]

  • Официальный веб-сайт
  • LV2 вики