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

Posted

技术标签:

【中文标题】从 JUCE 音频 VST 插件控制主机播放【英文标题】:Control Host playback from JUCE audio VST plugin 【发布时间】:2016-09-13 01:31:24 【问题描述】:

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

我不确定这是否可能。

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

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不受影响)

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

【问题讨论】:

【参考方案1】:

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

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

据我所知,没有主要的 VST 主机(包括 Ableton Live、Cubase 等)有机制允许这样做。从宿主的角度考虑,提供这样的机制有点疯狂。试想一下,多个插件试图同时停止/播放主机的播放!

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

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

【讨论】:

感谢您的回答。不是我一直在寻找的答案,但对我来说很有意义。在这里发布问题是我最后的手段,但我已经认为这不会成功。

以上是关于从 JUCE 音频 VST 插件控制主机播放的主要内容,如果未能解决你的问题,请参考以下文章

使用 VST 插件失真的音频

带有 VST 效果插件的网络音频播放器?

VST 音频插件如何检测来自 VST 主机的流中断?

VST 音频输入值与 Matlab 中的完全不同

JUCE 无法在音频插件上插入按钮

关于如何使用 JUCE 托管 VST 插件的教程? [关闭]