7个版本 (4个破坏性更新)
0.4.0 | 2023年3月15日 |
---|---|
0.3.0 | 2022年2月27日 |
0.2.1 | 2020年11月18日 |
0.2.0 | 2019年11月25日 |
0.0.1 | 2018年1月3日 |
#87 in 音频
1,359 每月下载量
用于 92 个crate(直接使用13个)
180KB
3K SLoC
vst-rs
注意:
vst-rs
已弃用。该crate不再积极开发和维护。VST 2已被官方停止,并且无法再获得分发VST 2产品的许可证。强烈建议您使用其他库在Rust中开发音频插件和插件主机。
如果您正在寻找一个用于在Rust中开发插件的高级、多格式框架,请考虑使用NIH-plug或
baseplug
。如果您正在寻找特定插件API的绑定,请考虑使用vst3-sys
、clap-sys
、lv2(-sys)
或auv2-sys
。尽管有上述警告,如果您仍然需要从Rust中使用VST 2 API,请考虑使用vst2-sys
或使用bindgen
从原始的VST 2 SDK生成绑定。
vst-rs
是一个用于在Rust编程语言中创建VST2插件的库。
这个库还在开发中,因此它还没有实现所有功能。它可以创建没有编辑器界面的基本VST插件。
注意:如果您是从0.2.0之前的版本升级,您需要更新您的插件代码以与新线程安全的插件API兼容。请参阅transfer_and_smooth
示例,了解如何移植您的插件。
库文档
已发布版本的文档可以在这里找到。
开发文档(当前master
分支)可以在这里找到。
软件包
此软件包可在crates.io上找到。如果您更喜欢使用最新版本,您也可以直接从官方Github仓库包含该软件包。
# get from crates.io.
vst = "0.3"
# get directly from Github. This might be unstable!
vst = { git = "https://github.com/rustaudio/vst-rs" }
用法
要创建一个插件,只需创建一个实现了Plugin
特质的类型。然后调用plugin_main
宏,该宏将导出必要的函数并处理API的其他部分。
示例插件
一个没有任何功能的简单插件。提供的Cargo.toml
有一个crate-type
指令,它构建了一个动态库,任何VST宿主都可以使用。
src/lib.rs
#[macro_use]
extern crate vst;
use vst::prelude::*;
struct BasicPlugin;
impl Plugin for BasicPlugin {
fn new(_host: HostCallback) -> Self {
BasicPlugin
}
fn get_info(&self) -> Info {
Info {
name: "Basic Plugin".to_string(),
unique_id: 1357, // Used by hosts to differentiate between plugins.
..Default::default()
}
}
}
plugin_main!(BasicPlugin); // Important!
Cargo.toml
[package]
name = "basic_vst"
version = "0.0.1"
authors = ["Author <[email protected]>"]
[dependencies]
vst = { git = "https://github.com/rustaudio/vst-rs" }
[lib]
name = "basicvst"
crate-type = ["cdylib"]
在OS X上的打包
在OS X上,VST插件打包在可加载的捆绑包中。要打包您的VST为可加载的捆绑包,您可以使用这个库提供的osx_vst_bundler.sh
脚本。
示例:
./osx_vst_bundler.sh Plugin target/release/plugin.dylib
Creates a Plugin.vst bundle
特别感谢
依赖项
~1.5–2.1MB
~44K SLoC