June 15, 2012
This article was contributed by Dave Phillips
Whether for a word processor, an image editor, or a Web browser,
plugins have become a common characteristic of modern application software
design. An audio plugin functions generally in the same manner as any other
kind of plugin: it extends the capabilities of the host application in
some way. For example, a DAW (digital audio workstation) may have its
own reverberation effect, but if the workstation supports plugins I can
substitute a 3rd-party reverb plugin with preferable features and sound
quality.
Plugins for audio purposes face performance constraints not commonly
encountered by plugins for non-audio applications. An audio plugin is
typically expected to perform some process on an incoming data stream,
possibly in realtime, and the processing should take place with minimal
disruption to the timing and audio quality of the affected stream. Latency
becomes a critical issue if the process takes more time than the data
stream permits, at which point mechanisms for latency compensation may be
invoked. Many control processes can take place in realtime with no
undesired effects while others require considerable care in their
deployment. Some parameters of a plugin may be adjusted in realtime without
concern, while others may involve considerably larger data and/or longer
processing, thus raising the likelihood of dropouts and other forms of
audio corruption. Programmers must resolve these and other problems if they
expect their plugins to be acceptable in performance-critical cases.
Linux audio enthusiasts can choose native plugins from a variety of
acronyms, of which DSSI, LADSPA, LV2, and VST are the best known and
developed formats. In addition to these Linux formats, limited support is
available for non-native VST plugins. In this article I'll present some of
the technical details of these formats along with some of their outstanding
examples, beginning with LADSPA.
LADSPA - Keeping It Simple
LADSPA is an acronym for the Linux
Audio Developers Simple Plugin API. As its name implies, the format was
designed with simplicity as a first consideration. The LADSPA API is easy
to understand and implement (see ladspa.h for the
details), and its practical design led to rapid adoption throughout the
Linux audio development community. The plugin format is best employed for
adding special effects such as distortion, echo, or reverb; for dynamics
processing (compression, limiting, normalization); and for spectral
processing with filters or equalizers. Thanks to its uncomplicated API more
than two hundred LADSPA plugins are currently available, and compatible
host applications now include DAWs, soundfile editors, dedicated processor
racks, and video editing suites.
The format's self-imposed austerity does have its drawbacks. Instrument
plugins (those which, like ordinary instruments, create sounds rather than
modifying them) are not well-supported, though some plugins provide
"building-blocks" for audio synthesis. The API's most conspicuous
limitation is its non-support for any GUI toolkit. The host application
provides the GUI, so if your DAW is built with Qt your LADSPA plugins will
appear in a Qt-based GUI. Depending on your point of view, this particular
limitation is a blessing or a curse, but it is difficult to argue against
the logical decision of the original developers. By keeping the GUI out of
the framework, the developer's focus remains on the plugin's processing
capabilities. Users may not get pretty pictures with LADSPA but they do get
some pretty good plugins.
I use only a few plugins with my own recordings, and I tend to use
plugins I know well enough to predict their response to the material, most
of which is either straightforward song composition or
not-so-straightforward electroacoustic experimentation. The songs get the
plugins, while experimental music typically includes its own processing. For
the sound quality of my voice and guitar I like the Versatile Plate Reverb
from Tim Goetze's C* Audio
Processing Suite. I keep a basic setting for it, but since the effect
has only a few parameters I tune it a little differently every time I use
it. My guitar typically gets treated further by Steve Harris's DJ EQ, a
3-band equalizer I find handy for quick fixes to my cheap guitar's less
than lovely tone. Last but far from least, Steve's SC compressor/limiter
plugins are also commonly employed as final dynamics processors in my
master track.
The rest of this article deals with plugin formats that have evolved
since LADSPA, but I assure readers that LADSPA itself is alive and
well. The Guitarix project
has formatted some of its processors as LADSPA plugins, and the developers
at Harrison Consoles thought that the format's capabilities were sufficient
for some of the internals of Mixbus,
their enhanced version of Ardour2. Harrison programmers have also developed
excellent GUIs for some LADSPA plugins (as seen on the right), prompting me to hope
that Harrison might consider developing more such plugins for general
distribution.
LV2 - The Heir Apparent
After LADSPA's initial success developers started to consider the next
stage in the evolution of high-performance audio plugins for
Linux. LADSPA's limitations were too severe to allow the required expansion
of capabilities, so work began on new formats that would permit such
amenities as embedded graphic envelope editors and synchronized clock
control for delay effects. The LV2 format
has been designed to supersede LADSPA, to address the earlier format's
limitations and to provide new capabilities to plugin developers. The full
specification can be read at the LV2
Trac page.
LV2's chief developer Dave Robillard recently announced that the format
has attained 1.0.0 release status. Along with this news comes Dave's LV2 ports of the MDA
plugins by Paul Keller, a set of thirty-six plugins that includes a
variety of instruments and audio signal processors. Developer Nick Bailey
has released test versions of his Minaton and Triceratops
synthesizers, and developer falkTX recently announced the availability of
his DISTRHO project, a
collection of LV2 versions of instruments and processors from other
projects, most of which were originally developed for Windows audio plugin
hosts. These additions expand a collection that already includes fine work
from Steve Harris, Tom Szilagyi, the CALF developers, and the Invada group. It's worth noting
that many of these programmers are also known for their involvement with
LADSPA-based projects.
Tom Szilagyi's IR
is a fine example of an advanced LV2 plugin with outstanding
audio capability and rich display features. IR processes an input signal
with data from an impulse response file, i.e. a kind of soundfile snapshot
of the reverberant characteristics of an acoustically interesting
environment. This processing method is called convolution, and it is an
effective way to achieve high-quality reverb effects without purchasing
expensive hardware and airline tickets to the great cathedrals of
Europe. Many free and non-free collections of response files are available
on-line, or you can create your own with only an interesting acoustic space
and some software
from Fons Andriaensen, a true DSP wizard of the Linux audio community.
Special mention must be made of the plugins from linuxDSP. These plugins are among the
best available for Linux - they aren't free, and they're not open-source,
but they are reasonably priced, multiformat, professional-grade audio
plugins. At this time all linuxDSP plugins are signal processors - EQ,
compressor, reverb, etc. - but the developer has hinted at the production
of a linuxDSP synthesizer plugin. Given the quality of his DSP work I'm
eager to hear what he can do with an LV2 synth plugin.
As I put the final touches to this article I learned of new sets of LV2
plugins from developers Joe Button and Rui Capela. Interest in the format
is clearly growing since the announcement of its milestone release, and I
look forward to seeing more work from more Linux plugin developers. Indeed,
LV2 appears to be on track to become the standard for Linux audio
plugins.
DSSI - A LADSPA For Instruments
DSSI - the Disposable
SoftSynth Interface - is a project originally headed by developers Chris
Cannam (one of the original and current developers of the Rosegarden DAW), Sean Bolton,
and Steve Harris. Like LV2, DSSI addresses a number of shortfalls in the
LADSPA format, particularly regarding instrument plugins. In fact, DSSI is
essentially a wrapper for a LADSPA plugin with the addition of an OSC (Open Sound Control) interface for toolkit-agnostic GUI and
MIDI control, features notably missing in LADSPA. This approach
reflects the author's desire to create a "LADSPA for instruments" that
retains the simplicity of the earlier format while providing new mechanisms
for features not included in the LADSPA API. The OSC protocol is also an
easily implemented method of establishing communications between programs
or parts of programs (as it's used in DSSI). Interested developers can
peruse the complete DSSI
specification for more information and full details on implementing the
format in their own applications.
Notable DSSI plugins include Sean Bolton's Hexter and xsynth
synthesizers for FM and analog sounds, the Fluidsynth-DSSI soundfont
synthesizer, and Nick Dowell's amSynth. The neko* synths,
WhySynth, and the HOLAP suite are
also worthy entries to the list.
Jeff Hubbard's LibModSynth project
demonstrates that DSSI lives and continues to evolve. The project has
already given us a development library (libmodsynth), a synthesizer (Ray-V,
seen to the right), a variety of effects processors, and a sampler under
construction. Jeff is dedicating his efforts to expand awareness of DSSI's
potential, and his contributions are eloquent proofs. I hope he continues
to expand the LibModSynth suite and that other Linux plugin developers will
consider adding their efforts to the cause.
VST/VSTi - The Steinberg Standard
In 1996 the programmers at Steinberg GmbH developed the VST plugin
format for use with the Cubase DAW for Windows. The company released a
development kit with agreeable licensing conditions that fostered the rapid
growth of an industry of 3rd-party VST plugin designers. Other host
manufacturers quickly supported the format - the host/plugin architecture
was a win for everyone - and a wave of VST plugins hit the market. The VSTi
specification extended the format's capabilities to include virtual
instruments, another win for everyone. VST/VSTi plugins now number in the
thousands, ranging in cost from free to expensive, and varying likewise in
quality and utility.
Musicians who want to migrate from Windows often inquire about the
feasibility of running their VST plugins under Linux. Limited support does
exist for native Windows plugins, but the extent of that support varies
dramatically. At least three methods currently exist for running Windows
VST/VSTi plugins under Linux - the fst software, the dssi-vst-wrapper
bridge utility, and the use of a Windows DAW such as Reaper running under
Wine. However, in my opinion support for native Windows VST plugins should
be considered experimental. Some plugins will work with any of these
methods, others with only one, some will run very well, others not at
all. The version of Wine can have significant impact on performance, and
all Linux VST support mechanisms depend on Wine.
Steinberg's terms are non-problematic for Windows programmers, but they
are not amenable to FLOSS developers. The license forbids the free
redistribution of the API, and there is no indication from Steinberg that
they will ever alter their policies. Despite the format's problematic legal
aspects the demand remains and designers must respond. Fortunately, thanks
to some clever reverse-engineering from Javier Serrano Polo's
VeSTige project, Ardour3 and QTractor can
be compiled with support for native Windows VSTs, and LMMS includes a module that
provides a VeSTige-based VST-to-Linux bridge. FeSTige is a convenient VST/VSTi
plugin launcher that will eventually be replaced by its evolving offspring
Carla, a multiformat launcher from developer falkTX. Clearly, users
want to be able to deploy their VST plugins under Linux. Some developers
will avoid the issue by refusing to support a non-native format, while
others see and pursue a unique opportunity.
Some VST/VSTi plugins can be compiled as native Linux shared object
files (e.g. fooplug.so) that require no dependency on Wine. Commercial
plugin developers have been quick to adopt the format - the current catalog
of Linux VST plugins includes excellent instruments and processors from Loomer Software (pictured, right), discoDSP, and linuxDSP. Some
excellent MIDI plugins can be found in the pizmidi and Mucoder collections, both of which
are freeware, not open-source free software. The FLOSS audio development
community has been less productive with the format, though notable work has
been done by the ccern and
the Jucetice projects. It
remains to be seen whether the catalog continues to expand, and that
depends most of all upon the quality of the processors and instruments
created for it.
Plug In The Future
The stabilization of LV2, the renewed interest in DSSI, and the
continuing utility of LADSPA point to a positive outlook for audio plugins
for Linux. Commercial interest is likely to maintain a focus on the VST
format - it does own the largest market share, and native Linux support
might open a door for enterprising Windows VST developers. New
cross-platform development tools promise easy output to multiple targets
and new hosts are appearing on the Linux applications stack. From where I
stand the future of Linux audio is sounding better all the time.
(
Log in to post comments)