我想制作一个简单的VST插件来执行此操作:
这是为了能够链接插件,即使它们不是为它设计的。例如,我可以使用音频流的包络来控制压缩器的增益,只需将插件的MIDI OUT连接到压缩器增益按钮的MIDI IN即可。
问题是我不知道该怎么做。在VST中是否支持这样的直接MIDI连接?或者我可能需要某种用于互连的“虚拟midi设备”?
答案 0 :(得分:5)
你的预感可能是正确的;通过编写虚拟MIDI设备而不是VST插件,可以更轻松地完成此任务。可以使用sendVstEventsToHost()调用将MIDI事件发送到序列发生器,但问题是文档从未指定主机如何响应这些事件。许多主机完全忽略它们,我当然想不出一个允许从插件轻松路由到MIDI通道的那个(也许是plogue bidule?)。
你可以用带有kAudioUnitType_Generator插件类型的音频单元完成这个...虽然我从来没有写过这样的插件,但我的印象是这就是你用来为主机生成MIDI的方法。但同样,问题在于我不确定主机如何允许您将音频路由到插件并从中接受MIDI。
无论如何,当你想要为最广泛使用的音序器标准化其行为时,你的想法作为插件实现将是最难实现的。我认为实现你想要的更简单的方法是创建一个虚拟的MIDI设备,就像你已经想到的那样,然后使用重新连接将输入信号路由到你的程序。
编辑:以下是为各种系统编写MIDI驱动程序的一些资源:
答案 1 :(得分:2)
VST插件不支持直接midi连接,它们只能有midi输入/输出端口。
仍然可以这样做,你只需要一个支持从一个插件到另一个插件的midi路由的主机。 EnergyXT,Bidule,AudioMulch和Console等模块化主机在这里表现出色。它们都允许音频和midi信号自由路由(除了没有反馈路径)。但也有可能在拥有更多“传统”混音风格vst机架的主机中。 (例如,AFAIK Reaper会将任何midi从一个插件转发到下一个插件。)
答案 2 :(得分:0)
如果您想在.NET中构建插件,请查看VST.NET