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 音频

Download history 353/week @ 2024-03-11 379/week @ 2024-03-18 545/week @ 2024-03-25 434/week @ 2024-04-01 302/week @ 2024-04-08 338/week @ 2024-04-15 435/week @ 2024-04-22 356/week @ 2024-04-29 336/week @ 2024-05-06 381/week @ 2024-05-13 315/week @ 2024-05-20 385/week @ 2024-05-27 336/week @ 2024-06-03 327/week @ 2024-06-10 303/week @ 2024-06-17 371/week @ 2024-06-24

1,359 每月下载量
用于 92 个crate(直接使用13个)

MIT 许可证

180KB
3K SLoC

vst-rs

crates.io dependency status Discord Chat Discourse topics

注意: vst-rs 已弃用。

该crate不再积极开发和维护。VST 2已被官方停止,并且无法再获得分发VST 2产品的许可证。强烈建议您使用其他库在Rust中开发音频插件和插件主机。

如果您正在寻找一个用于在Rust中开发插件的高级、多格式框架,请考虑使用NIH-plugbaseplug。如果您正在寻找特定插件API的绑定,请考虑使用vst3-sysclap-syslv2(-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

特别感谢

Marko Mijalkovic启动此项目

依赖项

~1.5–2.1MB
~44K SLoC