Host-side core for the rack audio-plugin framework.
truce-rack-core defines the contracts every format wrapper
(truce-rack-clap, truce-rack-vst3, truce-rack-au, …) implements: the
[Plugin] trait, the [AudioBuffer] / [EventList] /
[ProcessContext] passed into process, the [BusLayout]
that declares bus topology, and the FFI-edge catch_unwind
helpers in [wrapper].
No FFI lives here. The crate compiles on every platform with
no system dependencies — a consumer that depends on truce-rack-core
and on a single format wrapper picks up exactly that format's
transitive deps.
Mapping from truce
truce-rack-core mirrors truce-core on the host side. The names
parallel deliberately:
| truce (plugin) | rack (host) |
|---|---|
PluginLogic |
[Plugin] |
PluginExport |
[PluginScanner] |
AudioBuffer |
[AudioBuffer] |
EventList |
[EventList] |
ProcessContext |
[ProcessContext] |
BusLayout |
[BusLayout] |
PluginInfo |
[PluginInfo] |
wrapper::run_* |
[wrapper::run_*] |
A host targeting one format depends on truce-rack-core plus that
format's wrapper crate; a multi-format host depends on
truce-rack-core plus each wrapper it needs.