我想创建一个具有 16 个 MIDI 输入和至少 16 个音频输出的 VST 乐器。类似于 kontakt 或 halion 如何做到这一点。
有任何想法吗?
正如@leftaroundabout 所指出的,您不太可能需要 16 个输入和输出,尤其是对于乐器而言。然而,对于鼓机和其他多轨乐器来说,拥有 16 个 MIDI 输入和 16 个音频输出是非常常见的,用户可能希望单独处理每个声音。一般来说,音频输入对于整个乐器来说并不是特别有用。
也就是说,您只需像这样实例化您的插件:
MyPlugin::MyPlugin(audioMasterCallback audioMaster) : AudioEffectX(audioMaster, 0, kNumParameters) {
if(audioMaster) {
setNumInputs(0);
setNumOutputs(16);
}
// other constructor stuff ...
}
那是你的出发点。然而,由于绝大多数插件都是立体声的,你需要做很多其他的工作才能让主机为你提供 16 个输出通道(假设它支持它)。您可能需要在某些时候调用getSpeakerArrangement()
andsetSpeakerArrangement()
并覆盖getOutputProperties()
.
至于 MIDI 通道,宿主不应有任何区别对待它们。您将收到常规的 MIDI 事件,以VstMidiEvent
s 的形式包含常规的 MIDI 数据(即,如果用户选择,所有 16 个通道)。这是最简单的部分——设置输出就是诀窍。