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;
30mod descriptor;
31mod runtime;
32mod state;
33
34pub use adapter::{HostedPluginProcessor, PluginInstance, ProcessorPlugin};
35pub use capability::{AudioPluginCapability, CapabilitySet};
36pub use citizen::{PluginDescriptorRecord, plugin_descriptor_class_symbol};
37pub use descriptor::{
38    ParameterDescriptor, ParameterKind, PluginDescriptor, PluginFormat, PluginId, PluginLoadSpec,
39};
40pub use runtime::{install_plugin_core_lib, plugin_core_symbols};
41pub use state::PluginState;
42
43#[cfg(test)]
44mod tests;