从 JUCE 音频 VST 插件控制主机播放

Control Host playback from JUCE audio VST plugin

我正在尝试找到一种方法来通过使用 JUCE 构建的 VST 插件来控制 VST 主机的播放位置/速度。

我不确定这是否可行。

我在 AudioProcessor 上找到了一个 setPlayHead 函数,我想这可能就是我要找的。

https://www.juce.com/doc/classAudioProcessor#a9015f8476c07b173e3c9919b3036339d

但是在 setPlayHead 的文档上,我正在阅读:

Tells the processor to use this playhead object.

谁能告诉我这是否意味着在 AudioProcessor 上设置的新 AudioPlayHead 将用于主机播放 (z.b.Cubase),或者这是否意味着只有我的VST插件的AudioProcessor会使用这个AudioPlayHead,Host的AudioPlayHead不受影响)

感谢您对此的任何帮助/意见。

VST 插件无法以这种方式控制音序器。 VST API 不允许这样的事情发生。您找到的方法实际上是 Juce API 的一部分,它允许音序器将播放头结构 传递给 插件。

公平地说,没有技术原因插件不能做到这一点。主办方必须为该功能提供一个非官方的自定义操作码和一个关联的 canDo。但是,它不会成为 VST 标准的一部分,并且只适用于该特定主机。

据我所知,没有一个主要的 VST 主机(包括 Ableton Live、Cubase 等)有允许这样做的机制。站在宿主的角度想,提供这样的机制未免有些疯狂。试想一下,多个插件试图同时 stop/play 主机的播放!

所以,是的,抱歉,但是按照您的想法,这实际上是不可能的。但是,VST 插件可以通过 Ableton Link 控制主机的速度(但不是播放状态)。由于 Link 通过本地网络套接字工作,并且没有任何 master/slave 的概念,VST 插件理论上可以以这种方式向主机发送速度变化。

目前("now" == 2016 年 9 月),Ableton Live 是唯一支持 Link 的音序器,但 Ableton 表示他们正在与其他公司合作以帮助他们增加支持对于 Link,所以如果更多的音序器在不久的将来开始添加 Link 支持,我不会感到惊讶。