Linux Audio Developer's Simple Plugin API (LADSPA)

Overview

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.

If you are a developer and want to jump straight into the code, you may want to look at the LADSPA header file or download the LADSPA SDK.

For a well-written introduction to LADSPA, see Dave Phillips' article on Oriellynet.

Plugin Libraries

Libraries contain a number of individual plugins. A large number of plugin libraries have been written. Here are some of them:

And here are some tools for generating plugins:

Hosts

There are many hosts out there. Here are a few:

You may find links to other interesting things at http://linux-sound.org/ladspa.html.

History

The original LADSPA proposal was included in an email to the Linux Audio Developer Mailing List as part of an ongoing discussion on plugin API design.

The proposal was bounced around for a number of weeks before version 1 was finalised, on the 2nd April 2000. The focus was - and is - to provide an API that is a good compromise between functionality, intuition and compatibility but is simple. The "S" in "LADSPA" is meant seriously.

Because of this, there are conspicuous features missing (e.g. support for data types other than 32bit floating point numbers). Many of these have been excluded deliberately because including support would require excessive complexity for the host or plugin programmer or too specific an approach to overall architecture. The common ground between audio applications is not as large as one might imagine and LADSPA aims at this.

And all this seems to have worked out rather well. LADSPA is a very straightforward API to work with from both the host and plugin sides for most conventional plugins. It does not attempt to impose a way of doing things on the host, instead allowing the host to use plugins in almost any way it chooses. Plugin writers can start from example plugins or just the API and code up new plugins very quickly.

LADSPA has been released under LGPL (GNU Lesser General Public License). This is not intended to be the final license for LADSPA. In the long term it is hoped that LADSPA will have a public license that is even less restrictive, so that commercial applications can use it (in a protected way) without having to use a derived LGPL library. It may be that LGPL is already free enough for this, but we aren't sure. Does anyone want to pay for a lawyer? In the meantime, please mail me if this is an issue for you.

LADSPA has moved to version 1.1 with the introduction of default values and standardisation of 1.0f as 0dB.

There is nothing particularly Linux-specific about LADSPA's core design and it has been used on a number of different platforms. These are currently not supported on this website.

Resources

The API is captured within a header file. A simple Software Development Kit (SDK) is available which includes terse documentation, three simple hosts and ten example plugins.

Plugin types are identified by unique IDs. See the SDK for more details.

Dave Phillips provides an excellent overview.

Many Linux distributions manage LADSPA plugin libraries for you in a central location. However, if your plugins are not found by the host you are using, you may need to set the environment variable LADSPA_PATH manually. This should be a colon-separated list of directories to search to find plugin libraries. If this is set correctly, the "listplugins" program in the SDK should list all your plugins.

If you want to start writing LADSPA plugins in C++ but do not wish to produce your own independent library, you might be interested in the framework used by the Computer Music Toolkit project.


The author (Richard Furse) can be emailed at richard at ladspa dot org.