truce-rack
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
[]
= "1.0" # CLAP + VST3
use PluginScanner;
use ClapScanner;
use Vst3Scanner;
let clap_plugins = new.scan?;
let vst3_plugins = new.scan?;
To opt into AU + LV2 too:
[]
= { = "1.0", = ["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-corefor the trait surface and pick wrappers à la carte.
License
MIT or Apache-2.0, at your option.