我想从 VST 插件中控制 VST 主机的传输(播放/停止)。很明显,sendVstEventsToHost 方法提供了一种向主机发送命令的方法,但这些是 MIDI,并且被称为附加到轨道。
可能吗?任何想法?
谢谢。
快速浏览 SDK 会发现操作码“audioMasterSetTime”,它可以设置主机速度等。所以答案是肯定的。坏消息是很少有主机支持它 - Bidule 是我所知道的唯一一个。
这绝对是不可能的。尽管 VST 协议允许插件向主机发送事件,但大多数(如果不是全部?)主机会忽略从插件发送给它们的速度和歌曲位置变化。
虽然拥有控制主机速度和位置的插件会很酷,例如节拍计数插件,但这为许多潜在的讨厌的副作用打开了大门,例如插件意外劫持主机速度,或多个插件发送与主机发生冲突的速度/位置变化。
因此,出于这个原因,这不是一个好主意,这就是 VST 框架实际上不允许这样做的原因。
正如@obiwanjacobi 建议的那样,控制主机速度的最佳方法是通过 MIDI,这需要编写一个虚拟 MIDI 设备。不幸的是,这不会让您控制主机传输,因为没有(非 sysex)MIDI 协议消息可以执行此操作。
我不认为这是可能的。VST 插件规范基于音频和 MIDI 处理。控制主机几乎是不可能的。我能想到的唯一例外是允许插件“请求”新歌曲位置的 SetTimeInfo 方法。但是该方法在 VST 2.4 中已被标记为已过时。
您也许可以使用虚拟 MIDI 端口创建一个变通方案,并让主机同步到由您的插件提供的外部源。没有考虑过这个,所以不确定它是否会起作用。