Crate ladspa [] [src]

The ladspa crate provides an interface for writing LADSPA plugins safely in Rust.

##Creating the project

Run cargo new my_ladspa_plugin to generate a Cargo project for your plugin, then add the following to the generated Cargo.toml:

ladspa = "*"

name = "my_ladspa_plugin"
crate-type = ["dylib"]

This will pull in the correct dependency and ensure that the library generated when you build your plugin is compatible with LADSPA hosts.

Writing the code

You'll want to implement get_ladspa_descriptor in your src/ This function is expected to return 1 or more PluginDescriptors describing the plugins exposed by your library. See the documentation for get_ladspa_descriptor and the examples on Github for more information.

Testing it out

There is a list of host software supporting LADSPA on the LADSPA home page. In order for a host to find your plugin, you will either need to copy the *.so file from target/ after building to /usr/lib/ladspa/ (on most systems, it may be different on your system) or set the enviornment variable LADSPA_PATH to equal the directory where you store your plugins.



Represents the special properties a control port may hold. These are merely hints as to the use of the port and may be completely ignored by the host. For audio ports, use CONTROL_HINT_NONE. To attach multiple properties, bitwise-or them together. See documentation for the constants beginning with HINT_ for the more information.


Describes the properties of a Plugin to be exposed as a LADSPA plugin.


Represents an input or output to the plugin representing either audio or control data.


Represents a connection between a port and the data attached to the port by the plugin host.


Represents the special properties a LADSPA plugin can have. To attach multiple properties, bitwise-or them together, for example PROP_REALTIME | PROP_INPLACE_BROKEN. See documentation for the constants beginning with PROP_ for the more information.



The default values that a control port may hold. For audio ports, use DefaultControlValue::None.


Represents the four types of data a port can hold.


Represents the 4 types of ports: audio or control, input or output.



Indicates that the data passed through this port should be represented as integers. Bounds may be interpreted exclusively depending on the host


Indicates that the data passed through this port would be better represented on a logarithmic scale


Indicates that all values related to the port will be multiplied by the sample rate by the host before passing them to your plugin. This includes the lower and upper bounds. If you want an upper bound of 22050 with this property and a sample rate of 44100, set the upper bound to 0.5


Indicates that this is a toggled port. Toggled ports may only have default values of zero or one, although the host may send any value, where <= 0 is false and > 0 is true.


Indicates that the plugin is capable of running not only in a conventional host but also in a 'hard real-time' environment. To qualify for this the plugin must satisfy all of the following:


Indicates that the plugin will not function correctly if the input and output audio data has the same memory location. This could be an issue if you copy input to output then refer back to previous values of the input as they will be overwritten. It is recommended that you avoid using this flag if possible as it can decrease the speed of the plugin.


No properties.


Indicates that the plugin has a realtime dependency so it's output may not be cached.



Represents an instance of a plugin which may be exposed as a LADSPA plugin using get_ladspa_descriptor. It is not necessary to implement activate to deactivate.



Your plugin must implement this function. get_ladspa_descriptor returns a description of a supported plugin for a given plugin index. When the index is out of bounds for the number of plugins supported by your library, you are expected to return None.

Type Definitions


The data type used internally by LADSPA for audio and control ports.