#vst #audio-processing #api-bindings

shizen-components

创建 VST 的新方法

2 个版本

新版本 0.1.1 2024 年 8 月 21 日
0.1.0 2024 年 8 月 17 日

音频 中排名 759

Download history 148/week @ 2024-08-12

每月下载 148
用于 shizen

MIT/Apache

15KB
271

SHIZEN [WIP,未发布,实验性]

Shizen 是一个旨在创建简单易用 VST 插件的项目的目标。目标是使创建 VST 插件变得容易,而无需在复杂性中导航

比较

以下是一个使用 SHIZEN 创建 VST 的简单示例,它通过交换立体声音频的左右通道,与 JUCE 进行了比较

JUCE 实现

class SwapPlugin : public AudioProcessor {
public:
    SwapPlugin() : AudioProcessor() {}

    void processBlock(
        AudioBuffer<float>& buffer,
        MidiBuffer& midiMessages
    ) override {
        const int numChannels = buffer.getNumChannels();
        const int numSamples = buffer.getNumSamples();

        // Only swap channels if we have two channels (stereo)
        if (numChannels != 2) return;

        for (int i = 0; i < numSamples; i++) {
            const float leftSample = buffer.getSample(0, sample);
            const float rightSample = buffer.getSample(1, sample);

            buffer.setSample(0, sample, rightSample);
            buffer.setSample(1, sample, leftSample);
        }
    }
};

SHIZEN 实现

#[shizen::plugin]
pub fn SwapPlugin(audio_buffer: StereoBuffer) -> StereoBuffer {
    audio_buffer.iter().map(|[l, r]| [r, l]).collect()
}

SHIZEN 实现的美丽之处在于,我们可以直接将立体声缓冲区注入函数中,而无需担心处理通道数或缓冲区长度。SHIZEN 使得您可以仅将此交换效果应用于立体声音频

贡献

如果您有兴趣为这个项目做出贡献,请随时联系我。我一直在寻找帮助和反馈

目前,项目处于一个非常早期阶段,所以还有许多工作要做。如果您有兴趣帮忙,以下是需要完成的一些事情

  • VST3 SDK 互操作性
  • ...

这是什么?

这个项目起源于我的朋友 JUKE YOU 给我的想法,即创建一个 VST 插件,以实现某些效果,这些效果通常很麻烦需要手动创建。我认为这是一个很好的想法,并决定将其变为现实

不幸的是,创建 VST 的行业标准 JUCE 使用的是 C++(恶魔的语言)。因此,我决定创建自己的框架,使创建 VST 更容易。显然,我对 JUCE 没有敌意,我所做的大部分工作都受到了他们的工作选择的启发。我只是想创建一个更符合我偏好的东西

依赖关系

~2–3MB
~62K SLoC