VST仪器多进出

时间:2011-05-26 16:17:47

标签: c++ audio midi vst

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

有什么想法吗?

1 个答案:

答案 0 :(得分:4)

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

那就是说,你只需要实例化你的插件:

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

这是你的出发点。但是,由于绝大多数插件只是立体声,因此需要做一些其他工作才能让主机为您提供16个输出通道(假设它支持它)。您可能需要在某个时候致电getSpeakerArrangement()setSpeakerArrangement(),并覆盖getOutputProperties()

对于MIDI通道,主机不应该以正常方式对待它们。您将以VstMidiEvent的形式发送常规MIDI事件,其中包含常规MIDI数据(例如,如果用户选择,则为所有16个频道)。这是一个简单的部分 - 它是设置输出的诀窍。