Join the Rust VST chat (for web users, make sure you're registered/logged in)
A library to help facilitate creating VST plugins in rust.
This library is a work in progress and as such does not yet implement all opcodes. It is enough to create basic VST plugins without an editor interface.
To create a plugin, simply create a type which implements plugin::Plugin
and
std::default::Default
. Then call the macro plugin_main!
, which will export
the necessary functions and handle dealing with the rest of the API.
A simple plugin that bears no functionality. The provided Cargo.toml has a crate-type directive which builds a dynamic library, usable by any VST host.
src/lib.rs
```rust
extern crate vst;
use vst::plugin::{Info, Plugin};
struct BasicPlugin;
impl Plugin for BasicPlugin { fn getinfo(&self) -> Info { Info { name: "Basic Plugin".tostring(), unique_id: 1357, // Used by hosts to differentiate between plugins.
..Default::default()
}
}
}
plugin_main!(BasicPlugin); // Important! ```
Cargo.toml
```toml [package] name = "basic_vst" version = "0.0.1" authors = ["Author author@example.com"]
[dependencies] vst = { git = "https://github.com/rust-dsp/rust-vst" }
[lib] name = "basicvst" crate-type = ["cdylib"] ```
On OS X VST plugins are packaged inside of loadable bundles.
To package your VST as a loadable bundle you may use the osx_vst_bundler.sh
script this library provides.
Example:
./osx_vst_bundler.sh Plugin target/release/plugin.dylib
Creates a Plugin.vst bundle