我想制作一个简单的VST插件来执行此操作:
分析音频流(音量,节拍等......)
在分析仪的输出上有触发器(例如,当音量>阈值时执行某些操作)
根据触发器生成MIDI事件
这是为了能够链接插件,即使它们不是为它设计的.例如,我可以通过将插件的MIDI OUT连接到压缩器增益按钮的MIDI IN来控制带有音频流包络的压缩器的增益.
问题是我不知道该怎么做.在VST中是否支持这样的直接MIDI连接?或者我可能需要某种用于互连的"虚拟midi设备"?
你的预感可能是正确的; 通过编写虚拟MIDI设备而不是VST插件,可以更轻松地完成此任务.可以使用sendVstEventsToHost()调用将MIDI事件发送到音序器,但问题是文档从未指定主机如何响应这些事件.许多主机只是忽略它们,我当然想不出一个允许从插件轻松路由到MIDI通道的那个(也许是plogue bidule?).
您可以使用带有kAudioUnitType_Generator插件类型的Audio Units完成此操作...虽然我从未编写过这样的插件,但我的印象是,这是您用来为主机生成MIDI的内容.但同样,这里的问题是我不确定主机如何允许您将音频路由到插件并从中接受MIDI.
无论如何,当您想要为最广泛使用的序列发生器标准化其行为时,您实现为插件的想法将是最难实现的.我认为实现你想要的更容易的方法是创建一个虚拟的MIDI设备,就像你已经想到的那样,然后使用重新连接将输入信号路由到你的程序.
编辑:以下是为各种系统编写MIDI驱动程序的一些资源:
OS X中的音频设备驱动程序编程
Windows MIDI驱动程序API指南