ferraus_plugins/lib.rs
1//! # ferraus-plugins
2//!
3//! Headless CLAP and VST3 plugin hosting for ferraus, always out of process, plus the
4//! installable sounds registry.
5//!
6//! * [`protocol`] — the wire protocol spoken with `ferraus-plughost` (CLAP) and
7//! `ferraus-plughost-vst3` (VST3); see `PROTOCOL.md`.
8//! * [`host_rt`] — the host-process side of the protocol, shared by both host binaries.
9//!
10//! With the default `ops` feature:
11//!
12//! * [`client`] — spawns a host process per plugin instance, with a watchdog.
13//! * [`api`] — [`api::render_instrument`] and [`api::process_effect`], the entry points used
14//! by `ferraus-synth` and other crates.
15//! * [`scan`] — plugin discovery and the scan cache; [`resolve`] — the sound resolver
16//! (aliases, installed sounds, `--sound-path` folders).
17//! * [`sounds`] — the signed sounds registry and `sounds ...` commands.
18
19pub mod host_rt;
20pub mod protocol;
21
22#[cfg(feature = "ops")]
23pub mod api;
24#[cfg(feature = "ops")]
25pub mod client;
26#[cfg(feature = "ops")]
27mod ops;
28#[cfg(feature = "ops")]
29pub mod resolve;
30#[cfg(feature = "ops")]
31pub mod scan;
32#[cfg(feature = "ops")]
33pub mod sounds;
34
35#[cfg(feature = "ops")]
36pub use api::{
37 process_effect, process_effect_with, render_instrument, render_instrument_with, MidiEvent, MidiEventKind,
38 PluginFormat, PluginOptions, PluginRef, PluginRun,
39};
40
41/// Ops this crate contributes to the command registry.
42#[cfg(feature = "ops")]
43pub fn ops() -> Vec<ferraus_core::OpSpec> {
44 ops::ops()
45}