我开发了一个简单的 VST 插件。该插件有一个带有音频样本的内部缓冲区,如果音频流被中断,则应清除该缓冲区。
现在,如果我在某些媒体播放器中使用这个插件(比如带有 VST 包装器插件的 Foobar)并且我使用搜索栏跳到歌曲中的某个位置或者我切换到一首新歌曲,我仍然会听到以前音频的尾音。
是否有任何 VST 回调或被调用以通知插件有关此类流中断的东西?
没有确切的通知挂钩,但很容易查看播放是否开始或停止。主机应该分别调用您的插件suspend()
和resume()
传输停止和启动的时间。在这些调用中,您可以通过调用getTimeInfo()
(在 audioeffectx.h 中声明)来询问插件的播放状态。您可以传递kVstTransportChanged
和kVstTransportPlaying
标志让您的插件对传输更改做出相应的反应。
但是,某些主机可能会很顽皮,并且在仅更改播放位置而不是传输状态时不会暂停/恢复。我不确定在处理过程中查询时间信息的 CPU 成本有多大,但您可以尝试在那里这样做,以查看主机是否在安排中跳来跳去。