truce-rack 1.1.5

Cross-format audio plugin host (CLAP + VST3 by default; AU, AU3, LV2 behind features)
Documentation

truce-rack

crates.io docs.rs

Cross-format audio plugin host. Umbrella crate for the truce-rack workspace — 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.

Defaults

CLAP and VST3 are the cross-platform mainstream formats and ship enabled by default. Audio Unit and LV2 are platform-specific enough to be opt-in.

Every wrapper forwards host transport from ProcessContext::transport into its backend's native form (VST3 ProcessContext, CLAP clap_event_transport, LV2 time:Position, AU host callbacks), so tempo- and grid-synced plugins work the same across formats.

Feature Default Crate it enables Platforms
clap truce-rack-clap all
vst3 truce-rack-vst3 all
au truce-rack-au Apple
au3 truce-rack-au3 Apple
lv2 truce-rack-lv2 (needs system lilv-0) all

Usage

[dependencies]
truce-rack = "1.0"   # CLAP + VST3
use truce_rack::core::scanner::PluginScanner;
use truce_rack::clap::ClapScanner;
use truce_rack::vst3::Vst3Scanner;

let clap_plugins = ClapScanner::new().scan()?;
let vst3_plugins = Vst3Scanner::new().scan()?;

To opt into AU + LV2 too:

[dependencies]
truce-rack = { version = "1.0", features = ["au", "au3", "lv2"] }

When to depend on truce-rack vs the per-format crates

  • truce-rack — you want the convenience of one dependency line and aren't sensitive to the umbrella's resolver churn when unrelated wrappers bump.
  • Per-format crates — you only need one or two formats, want the minimum possible build graph, or want to pin per-format versions independently. See truce-rack-core for the trait surface and pick wrappers à la carte.

License

MIT or Apache-2.0, at your option.