1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
//! A safe, fast, and ergonomic Rust library to create [LV2 plugins](http://lv2plug.in/) for audio processing or synthesis.
//!
//! **This library is a work in progress.**
//!
//! It provides the following features, through the [LV2 Core specification](http://lv2plug.in/ns/lv2core/lv2core.html):
//!
//! * Lightweight, realtime non-blocking and allocation-free audio processing.
//! * Generates all the boilerplate to make a LV2 plugin binary, usable by any LV2 host.
//! * Any number of ports / Any channel mapping, which can be different for input and output.
//!   This obviously includes Mono, Stereo, Surround, etc., anything your CPU can handle.
//! * Can be extended to support any additional features, extensions and port types.
//!   They can be official, unofficial or completely custom.
//!
//! Through the [LV2 official additional specifications](http://lv2plug.in/ns/), this library also provide many
//! additional features, including:
//!
//! * MIDI processing
//! * Custom Graphical User Interfaces, both in a toolkit-agnostic and in a platform-agnostic way **(Not yet implemented)**
//! * Serialization of custom data structures, and plugin-plugin or plugin-GUI communication and property manipulation
//! * Presets handling and State management **(Not yet implemented)**
//! * Asynchronous work processing **(Not yet implemented)**
//! * … and more! (Not yet implemented either)
//!
//! Note that this library will only provide Rust bindings for the official LV2 specifications, however it is compatible
//! with any other arbitrary or custom specification, and other, external crates are able and welcome to provide Rust bindings
//! to any other specification that will integrate with this library.
//!
//! This specific crate actually does nothing but re-export the several sub-crates of this library,
//! each of which correspond to a specific LV2 official specification.
//!
//! This crate is provided only for convenience (like in examples or prototypes), however in
//! production code we recommend relying on each sub-crate you really need, to reduce the number
//! of dependencies to be built, as well as the final binary size.
//!
//! Since this crate depends on `-sys` crates that use `bindgen` to create the C API bindings,
//! you need to have clang installed on your machine.

#![deny(missing_docs)]

pub extern crate lv2_atom as atom;
pub extern crate lv2_core as core;
pub extern crate lv2_midi as midi;
pub extern crate lv2_state as state;
pub extern crate lv2_time as time;
pub extern crate lv2_units as units;
pub extern crate lv2_urid as urid;