2个版本

0.1.1 2024年8月21日
0.1.0 2024年8月17日

#201 in 音频

Download history 283/week @ 2024-08-17

每月下载量283次

MIT/Apache

24KB
335

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