Rack
A modern Rust library for hosting audio plugins
⚠️ WARNING: WORK IN PROGRESS ⚠️ This library is in early development and NOT YET FUNCTIONAL. The API is unstable and will change. Do not use in production. Published to reserve the crate name and test the build process.
Rack is a cross-platform library for discovering, loading, and processing audio through VST3, AudioUnit, CLAP, and other plugin formats in Rust applications.
Features
- 🎵 AudioUnit support (macOS) - built-in
- 🔌 VST3 support - coming soon
- 🎛️ CLAP support - coming soon
- 🎚️ Clean, safe API - no unsafe code in your application
- 🔄 cpal integration - optional audio I/O helpers
- 🚀 Zero-cost abstractions - trait-based design
Quick Start
Add to your Cargo.toml:
[]
= "0.1"
List available plugins
use *;
Load and process audio
use *;
With cpal for audio I/O
Enable the cpal feature:
[]
= { = "0.1", = ["cpal"] }
= "0.15"
See examples/simple_host.rs for a complete example.
Platform Support
| Platform | AudioUnit | VST3 | CLAP | LV2 |
|---|---|---|---|---|
| macOS | ✅ | 🚧 | 🚧 | ❌ |
| Windows | ❌ | 🚧 | 🚧 | ❌ |
| Linux | ❌ | 🚧 | 🚧 | 🚧 |
- ✅ Supported
- 🚧 Planned
- ❌ Not applicable
Examples
Run the examples:
# List all available plugins
# Simple host with audio playback (requires cpal feature)
Architecture
Rack uses a trait-based design for maximum flexibility:
This allows different plugin formats to implement the same interface, making your code portable across formats.
Roadmap
- AudioUnit scanning (macOS)
- AudioUnit loading and instantiation
- AudioUnit audio processing
- AudioUnit parameter handling
- VST3 support (cross-platform)
- CLAP support (cross-platform)
- LV2 support (Linux)
- GUI hosting
- Preset management
- MIDI support
Contributing
Contributions are welcome! This is an early-stage project and there's lots to do.
Areas where help is needed:
- AudioUnit implementation (FFI work)
- VST3 backend
- CLAP backend
- Documentation
- Examples
- Testing
License
Licensed under either of:
- Apache License, Version 2.0 (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)
at your option.
Acknowledgments
- Inspired by VCV Rack and the modular synthesis community
- Built on top of coreaudio-rs
- Thanks to the Rust audio community at rust.audio
Why "Rack"?
The name is inspired by modular synthesizer racks and VCV Rack - the idea of a framework where you can plug in different modules (plugins) and wire them together. Plus, it was available on crates.io! 🎉