2 个版本
新 0.1.1 | 2024 年 8 月 21 日 |
---|---|
0.1.0 | 2024 年 8 月 17 日 |
#517 in 音频
每月 151 次下载
用于 3 个软件包
11KB
215 行
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 没有敌意,我所做的大部分工作都是受到他们工作和选择的影响。我只是想创造一些更符合我偏好的东西