# plugin_host
VST3 and CLAP plugin host for DAW applications in Rust. Scans, loads and processes third-party plugins with configurable sandboxing.
## Features
- **CLAP and VST3** — bridge architecture ready for both formats via `libloading`
- **Plugin scanner** — finds plugins in standard OS paths (Linux, macOS, Windows)
- **Sandboxing** — configurable in-process or out-of-process per plugin
- **Auto-restart** — out-of-process plugins that crash are restarted automatically
- **Parameter automation** — normalized parameter values with descriptor metadata
- **Preset management** — save/load plugin state as named presets
- **Bypass** — hardware-style bypass with direct input→output passthrough
- **Project serialization** — `save_state()` / `load_state()` for `project_io` integration
## Usage
```rust
use plugin_host::{PluginRegistry, PluginScanner};
use plugin_host::sandbox::SandboxConfig;
// Scan system for plugins
let scanner = PluginScanner::new();
let mut registry = PluginRegistry::new();
let stats = registry.scan_system(&scanner);
println!("Found {} plugins", stats.found);
// Search the registry
let compressors = registry.search("compressor");
let instruments = registry.instruments();
// Instantiate a plugin (bridge implementation connects here)
// instance.activate(44100.0, 64, 512);
// instance.process(&mut process_data);
// instance.save_preset("My Sound");
```
## Sandbox modes
| `InProcess` | Maximum | Plugin crash = DAW crash |
| `OutOfProcess` | IPC overhead | Plugin crash = auto restart |
## Bridge status
The `ClapBridge` and `Vst3Bridge` structs are fully scaffolded with all required method stubs and inline comments mapping each method to its exact C API call. Connect `clap-sys` or `vst3-sys` to activate.
## Part of the DAW crate ecosystem
```
audio_core_dsp
midi_clock_sync
audio_graph
event_queue
mixer
piano_roll
plugin_host ← you are here
project_io
```
## License
MIT