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