Skip to main content

sim_lib_plugin_core/
lib.rs

1#![forbid(unsafe_code)]
2#![deny(missing_docs)]
3//! Common plugin descriptors, state, and graph adapters.
4//!
5//! ```rust
6//! use sim_lib_plugin_core::{
7//!     ParameterDescriptor, PluginDescriptor, PluginFormat, PluginState,
8//! };
9//!
10//! let descriptor = PluginDescriptor::audio_effect(
11//!     PluginFormat::Sim,
12//!     "org.sim.doc-gain",
13//!     "Doc Gain",
14//!     2,
15//! )
16//! .unwrap()
17//! .with_parameter(ParameterDescriptor::new(0, "gain", "Gain", 0.0, 2.0, 1.0).unwrap());
18//!
19//! assert_eq!(descriptor.parameter(0).unwrap().plain_to_normalized(1.0), 0.5);
20//!
21//! let mut state = PluginState::new();
22//! state.set_param(0, 1.0);
23//! let rebuilt = PluginState::from_expr(&state.to_expr()).unwrap();
24//! assert_eq!(rebuilt.param(0), Some(1.0));
25//! ```
26
27mod adapter;
28mod capability;
29mod citizen;
30pub mod cookbook;
31mod descriptor;
32mod runtime;
33mod state;
34
35pub use adapter::{HostedPluginProcessor, PluginInstance, ProcessorPlugin};
36pub use capability::{AudioPluginCapability, CapabilitySet};
37pub use citizen::{PluginDescriptorRecord, plugin_descriptor_class_symbol};
38pub use cookbook::gain_plugin_demo;
39pub use descriptor::{
40    ParameterDescriptor, ParameterKind, PluginDescriptor, PluginFormat, PluginId, PluginLoadSpec,
41};
42pub use runtime::{install_plugin_core_lib, plugin_core_symbols};
43pub use state::PluginState;
44
45/// Cookbook recipes for this lib, embedded at build time.
46pub static RECIPES: sim_cookbook::EmbeddedDir =
47    include!(concat!(env!("OUT_DIR"), "/cookbook_recipes.rs"));
48
49#[cfg(test)]
50mod tests;