Rack
A modern Rust library for hosting audio plugins
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! 🎉