LV2 ( LADSPA Versión 2 ) es un conjunto de estándares abiertos libres de regalías [1] para complementos y aplicaciones de host correspondientes. Incluye soporte para la síntesis y procesamiento de audio digital y CV , [2] eventos como MIDI y OSC , y proporciona una alternativa gratuita a los estándares de plug-ins de audio como Virtual Studio Technology (VST) y Audio Units (AU).
Desarrollador (es) | Steve Harris, David Robillard, otros miembros de linux-audio-dev |
---|---|
Repositorio | gitlab |
Escrito en | C y tortuga |
Licencia | Licencia ISC |
Sitio web | lv2plug |
LV2 sucede al estándar de API de complemento simple (LADSPA) del desarrollador de audio Linux más limitado y reemplaza la infraestructura de complemento de interfaz de sintetizador suave desechable (DSSI) ("LADSPA para instrumentos"), agregando capacidades como capacidad MIDI, interfaces de usuario personalizadas y un sistema que permite la extensibilidad del estándar inicial. [3] [4]
Más de mil doscientos complementos están ahora disponibles en formato LV2. [5] Los complementos notables incluyen Calf Studio Gear [6] El software que puede alojar "paquetes" de complementos LV2 incluye Ardor , Ingen , Carla (de la distribución KXStudio ), Qtractor , Traverso DAW , [7] Harrison Mixbus , [8] MusE , Audacity , [9] Ecasound , FFmpeg , el framework GStreamer y el software DJing Mixxx , actualmente con soporte parcial en LMMS y REAPER . También es el formato de complemento utilizado por las unidades de hardware MOD Duo y MOD Duo X, [10] Zynthian y Poly Effects Digit / Beebo.
Conceptos
LV2 es un marco extensible que permite a un programa cargar un complemento para realizar algún procesamiento. Tenga en cuenta que los términos utilizados aquí son genéricos a propósito porque LV2 permite que se intercambie cualquier tipo de datos entre el host y el complemento.
RDF
Las especificaciones LV2 están definidos por [11] y hacer uso [12] de RDF metadatos en tortuga formato. Las tecnologías involucradas incluyen Dublin Core , FOAF , DOAP , SPDX , XSD , RDFS y OWL . [13] Las capacidades y propiedades relacionales que admite esta sintaxis son poderosas pero pueden ser difíciles de entender al principio. [14]
Más allá de la especificación principal, hay 21 extensiones oficiales que brindan soporte para opciones de host, ajustes preestablecidos de complementos, tiempo y unidades, búferes de puertos, propiedades, grupos y etiquetas de parámetros, para enviar MIDI, parches, eventos de interfaz de usuario y más. [15] Hay varias extensiones de terceros para admitir eventos expresivos , OSC y hardware y software específicos de dispositivos MOD , con tres en el espacio de nombres KXStudio LV2 .
El complemento utiliza esta información para proporcionar una lista de capacidades al host, de modo que el host pueda acomodarlas. [16] De manera similar, el host puede proporcionar una lista de las capacidades de extensión LV2 que admite en la inicialización del complemento.
En el siguiente ejemplo, primero se declaran los prefijos de acceso directo para las ontologías lv2, doap y spdx. A continuación, cada complemento debe tener su propio URI o URN . Luego, las 4 líneas siguientes declaran que este recurso es un lv2: Plugin, una biblioteca de archivos de objetos binarios con el nombre de archivo silent.so debería estar presente, que el plugin se conoce con el nombre de Silence y tiene licencia GNU GPL. Estas 4 propiedades son obligatorias para un complemento LV2; si un complemento no los tiene todos, es posible que el host no lo cargue.
@prefix lv2: . @prefix doap: . @prefix spdx: . a lv2 : Plugin ; lv2 : binario ; doap : nombre "Silencio" ; doap : licencia spdx : GPL-3.0 o posterior ; rdfs : comment "Este es un complemento de ejemplo que incluye una descripción de complemento de ejemplo". lv2 : puerto [ a lv2 : AudioPort , lv2 : OutputPort ; lv2 : índice 0 ; lv2 : símbolo "salida" ; lv2 : nombre "Salida" ; ].
Átomos
Las estructuras de datos "Atom" se utilizan para enviar mensajes entre puertos de complementos [17] [18] para la transferencia de MIDI, [19] OSC, Patch, [20] UI y otros eventos entre instancias de complementos. Estos también se pueden serializar en Turtle. [21] [22]
Interfaz de usuario
Además de separar los metadatos de los binarios, LV2 exige una separación general entre DSP y el procesamiento de la interfaz de usuario. Los beneficios incluyen que el procesamiento de UI no puede retener el procesamiento de DSP, y que UI y DSP pueden separarse a través de una red. La mensajería que usa Atoms es el método preferido para pasar actualizaciones entre los binarios DSP y UI en ejecución.
Los hosts también pueden proporcionar una interfaz para mostrar y configurar las propiedades de las instancias de complementos. Hay extensiones y propiedades para ayudar a mostrar los tipos de control correctos.
Enhebrar
Una capacidad que un host puede proporcionar a un complemento es un "hilo de trabajo". En términos de programación, esto significa que el complemento puede descargar algo de trabajo para realizar en otro hilo que proporciona el host. Esto generalmente es útil porque un complemento generalmente se ejecuta en el hilo de audio en tiempo real de una aplicación y, por lo tanto, no puede realizar ninguna operación segura que no sea en tiempo real (accesos al disco, llamadas al sistema, etc.). Para facilitar que el complemento logre sus objetivos (por ejemplo: cargar un archivo desde el disco), el host puede proporcionar un hilo de trabajo. El host proporciona LV2_Extension para el hilo de trabajo [23] y el complemento puede utilizarlo.
Desarrollo
Hay herramientas y marcos disponibles para ayudar en la creación de complementos LV2. Estos incluyen DPF (DISTRHO Plugin Framework), la bifurcación DISTRHO JUCE , Faust , Dplug, iPlug 2 (alpha) y Cabbage (alpha). También existe la posibilidad de cargar parches de datos puros , así como código JIT -run Faust, Rust, Lua o C en ciertos complementos LV2. Para el intercambio de información y discusiones sobre LV2, hay listas de correo de usuarios y desarrolladores, junto con los canales # lv2 y #lad en el IRC de freenode , y foros como LinuxMusicians .
Ver también
- Kit de conexión de audio JACK
Referencias
- ^ https://gitlab.com/lv2/lv2
- ^ JACK / LV2 CV - LinuxMusicians
- ^ Lista de características de LV2
- ^ drobilla.net: LV2: Lo bueno, lo malo y lo feo
- ^ Lista de más de 1000sitios de uris de complementos [1] .
- ^ "Calf Studio Gear es compatible con LV2" .
- ^ "Manual de usuario de Traverso, p. 26" (PDF) . Archivado desde el original (PDF) el 23 de abril de 2016 . Consultado el 21 de febrero de 2020 .
- ^ Sitio web de Harrison
- ^ Audacity Archivado el 29 de septiembre de 2008 en la Wayback Machine.
- ^ "Dispositivos MOD" . moddevices.com . Consultado el 16 de abril de 2016 .
- ^ https://gitlab.com/lv2/lv2/-/blob/master/lv2/core/lv2core.ttl
- ^ https://gitlab.com/lv2/lv2/-/blob/master/lv2/core/lv2.h
- ^ https://github.com/lv2/lv2/tree/master/schemas.lv2
- ^ drobilla.net: Escribiendo un libro LV2
- ^ http://lv2plug.in/ns/
- ^ Libro de programación de complementos LV2 con complementos de ejemplo.
- ^ Átomos LV2: un modelo de datos para complementos de audio en tiempo real (PDF)
- ^ http://lv2plug.in/ns/ext/atom/
- ^ http://lv2plug.in/ns/ext/midi/
- ^ http://lv2plug.in/ns/ext/patch/
- ^ drobilla.net: serialización de estado y átomo LV2 -
- ^ https://github.com/lv2/sratom : una pequeña biblioteca de C para serializar átomos LV2 hacia y desde RDF, para convertir entre binario y texto o almacenar en un modelo.
- ^ http://lv2plug.in/ns/ext/worker
enlaces externos
- Página web oficial
- Wiki de LV2