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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
//! Cross-format audio plugin host.
//!
//! `truce-rack` is the umbrella crate. It re-exports the
//! per-format wrapper crates behind features so a downstream user
//! can opt into exactly the formats they need without juggling
//! version pins across multiple direct dependencies.
//!
//! # Default features
//!
//! `clap` + `vst3` — the two cross-platform mainstream plugin
//! formats. CLAP is pure-Rust, VST3 uses the community `vst3`
//! crate (no Steinberg SDK submodule).
//!
//! # Opt-in features
//!
//! - `au` — Audio Unit v2 host (Apple platforms only)
//! - `au3` — Audio Unit v3 (App Extension) host (Apple platforms only)
//! - `lv2` — LV2 host via `lilv-sys` (requires the system `lilv` library)
//!
//! # Layout
//!
//! Format wrappers are re-exported as nested modules so existing
//! `truce_rack_clap::*` paths can also be reached as
//! `truce_rack::clap::*`:
//!
//! ```ignore
//! use truce_rack::core::scanner::PluginScanner;
//! use truce_rack::clap::ClapScanner;
//!
//! let plugins = ClapScanner::new().scan()?;
//! ```
//!
//! For per-format granular dependency management, depend on the
//! individual `truce-rack-*` crates directly instead.
// Empty `cargo doc` build with no features enabled would emit
// dead-imports lints; suppress them at the crate level so the
// no-feature `cargo check` stays clean.
/// Format-agnostic traits and types — `Plugin`, `PluginScanner`,
/// `PluginEditor`, the `EventList` / `MidiData` enums, and shared
/// error / info structs. Always available regardless of features.
pub use truce_rack_core as core;
/// CLAP host. Enabled by default; disable with `default-features = false`.
pub use truce_rack_clap as clap;
/// VST3 host. Enabled by default; disable with `default-features = false`.
pub use truce_rack_vst3 as vst3;
/// Audio Unit v2 host (Apple platforms). Enable with the `au` feature.
pub use truce_rack_au as au;
/// Audio Unit v3 (App Extension) host (Apple platforms).
/// Enable with the `au3` feature.
pub use truce_rack_au3 as au3;
/// LV2 host (requires the system `lilv-0` library).
/// Enable with the `lv2` feature.
pub use truce_rack_lv2 as lv2;