truce-rack-standalone
Reference standalone host for the truce-rack audio
plugin framework. cpal for the audio device, midir for hardware
MIDI input, optional baseview window with the plugin's editor
embedded as a child. Ships two binaries:
truce-rack-standalone— load one plugin, render through the default output device. With--guiopens the plugin's editor; headless otherwise.truce-rack-screenshot— walk every installed plugin and capture its editor to a PNG (macOS only).
Quick start
# Scan everything every enabled format scanner can find.
# Load a plugin by name. With --gui, embeds its editor in a window;
# without --gui, runs headless until SIGINT (or --seconds N).
# Drive a tempo/grid-synced plugin with a synthesized transport.
cargo run -qswallows piped stdout — if--list | headlooks empty, build once and run the binary directly (cargo build --release --bin truce-rack-standalone --features …thentarget/release/truce-rack-standalone --list), or drop-q.
Default features are clap only; opt in to vst3, au, au3,
lv2 as needed. The gui feature pulls baseview + the QWERTY
keyboard MIDI handler. Linux gates gui off (baseview drags
wayland-sys); the headless path works there.
Host transport
There's no DAW timeline behind the runner, so it synthesizes one
and passes it to the plugin every block — each format wrapper maps
it to its native transport (VST3 ProcessContext, CLAP
clap_event_transport, LV2 time:Position, AU host callbacks).
Control it with:
| Flag | Default | Meaning |
|---|---|---|
--tempo <bpm> |
120 |
Transport tempo in BPM |
--time-sig <n/d> |
4/4 |
Time signature, e.g. 7/8 |
--paused |
rolling | Report transport stopped (song position frozen) |
--no-transport |
off | Report no transport at all (transport == None) |
--seconds <n> |
— | Run headless for n seconds, then exit |
Companion crates
Per-format wrapper crates this binary dispatches to:
truce-rack-core— traits + typestruce-rack-clap— CLAPtruce-rack-vst3— VST3truce-rack-au— Audio Unit v2truce-rack-au3— Audio Unit v3truce-rack-lv2— LV2
License
MIT or Apache-2.0, at your option.