By Forrest Cook
January 22, 2008
LADSPA, Richard Furse's
Linux Audio Developer's Simple Plugin API, provides a plug-in
framework for software audio effects. LADSPA applications are
divided into two categories, host applications and plugins.
From the LADSPA site:
LADSPA is a standard that allows software audio processors and effects to be plugged into a wide range of audio synthesis and recording packages.
For instance, it allows a developer to write a reverb program and bundle it into a LADSPA "plugin library." Ordinary users can then use this reverb within any LADSPA-friendly audio application. Most major audio applications on Linux support LADSPA.
Recently, the
LV2 Audio Plugin Standard
was announced
by Dave Robillard, the aim of LV2 is to replace LADSPA:
LV2 is a standard for plugins and matching host applications, mainly targeted at audio processing and generation.
LV2 is a simple but extensible successor of LADSPA.
intended to address the limitations of LADSPA which many applications
have outgrown.
While LADSPA has been quite successful with many plugins and hosts, it is quite limited and can't be extended without breaking existing implementations. LV2 in contrast is designed with extensibility in mind right from start.
One of the LADSPA limitations comes from the use of fixed data fields
in the plugin binaries. LV2 defines its plugin data by using the
Resource Description Framework (RDF) standard.
This allows for a much wider variety of plugin data definitions.
The RDF files also allow for the inclusion of multiple string
definitions, which allows for plugin internationalization.
The core LV2 code is intentionally designed to be small and generic,
while allowing for support of independently designed extensions.
Plugin identification has been changed from an ID number to a URI,
this allows for extended capabilities such as the reference or fetching
of plugins across the network.
While LADSPA only used floating point numbers for port connections, LV2
supports port type extensions. This can be used to handle
MIDI, OSC
(OpenSound Control), frequency domain and other types of data.
LV2 bundles of all of the data for each plugin into a single directory
for easy access. As with ALSA, the actual lv2 core specification
is relatively simple, the
lv2core-1.tar.gz
source file consists of a C header file, some build files and
documentation.
Several software packages were released at the same time as the
LV2 standard announcement.
SLV2 0.4.2 is a C library
that is used to access the LV2 plugins:
"Unlike LADSPA, LV2 is (more or less) designed with the assumption that
hosts will use a library to discover/load/use plugins. SLV2 is one such
library, which does the Right Thing with as little burden on host
authors as possible."
The
lv2dynparam extension and helper was also announced:
"The extension consists of a header describing the extension interface
and libraries, one for plugins and one for hosts, to expose
functionality in more usable, from programmer point of view, interface."
Three LV2 compatible plugins were also announced by author Nedko Arnaudov, these include the
lv2vocoder version 1,
Simple Sine Generator 20080109 and
zynadd plugin version 1.
Arnaudov also released
zynjacku version 1,
a JACK based GTK2 host for LV2 synthesizers.
The success of LV2 will revolve around its adoption by one or more of the
major LADSPA applications, as well as the conversion of more LADSPA
plugins. Conceptually, LV2 seems like a step forward for the Linux audio
plugin architecture.
(
Log in to post comments)