VST仪器多进出

Dan*_*ues 6 c++ audio midi vst

我想创建一个具有16个MIDI输入和至少16个音频输出的VST乐器.类似于kontakt或halion这样做.

有任何想法吗?

Nik*_*man 4

正如 @leftaroundabout 所指出的,您不太可能需要 16 个输入和输出,尤其是对于仪器而言。然而,对于鼓机和其他多轨乐器来说,拥有 16 个 MIDI 输入和 16 个音频输出是很常见的,用户可能希望单独处理每个声音。一般来说,音频输入对于整个乐器来说并不是特别有用。

也就是说,您只需像这样实例化您的插件:

MyPlugin::MyPlugin(audioMasterCallback audioMaster) : AudioEffectX(audioMaster, 0, kNumParameters) {
  if(audioMaster) {
    setNumInputs(0);
    setNumOutputs(16);
  }
  // other constructor stuff ...
}
Run Code Online (Sandbox Code Playgroud)

这就是你的起点。然而,由于绝大多数插件只是立体声,因此您需要做很多其他工作才能让主机为您提供 16 个输出通道(假设它支持)。您可能需要在某个时候调用getSpeakerArrangement()and setSpeakerArrangement(),并且还需要重写getOutputProperties()

至于 MIDI 通道,主机不应以与正常情况不同的方式对待它们。您将以 s 的形式收到常规 MIDI 事件,VstMidiEvent其中包含常规 MIDI 数据(即,如果用户选择,则适用于所有 16 个通道)。这是简单的部分——设置输出就是诀窍。

  • 所有 MIDI 事件都一起发送。根据通道编号手动分离传入的 MIDI 事件。 (2认同)