我已经实施了 VST主机,允许您通过加载.dll文件来使用任何VST效果。
运行时删除插件时遇到问题:当我按下播放'按钮我的 ASIO回调函数检查是否有活动插件,如果有,它会触发一个转换样本并将它们传递给插件的函数,以便它们处理它。
在执行语句plugin.processReplacing()
之前,它检查插件是不是null
,但是它就好像忽略了这个控件。
当我按下' 停止'或' 删除效果'按钮程序关闭插件并将其设置为null
,因此此时不应执行语句plugin.processReplacing()
,而是有时会处理它并给我错误 :NullReferenceException
。
也许我必须等待插件在关闭插件之前最后一次执行指令processReplacing()
,但我不知道该怎么做。
有一些代码:
删除插件程序:
public void rimuoviPlugin()
{
if (vstForm != null) vstForm.Close();
if (processor.plugin == null) return;
//Spengo i plugin
processor.plugin.EditorClose();
processor.plugin.StopProcess();
processor.plugin.MainsChanged(false);
processor.plugin.Close();
processor.plugin = null;
}
processSample程序:
if (plugin != null)
{
plugin.ProcessReplacing(vstBufIn, vstBufOut);
plugin.EditorIdle();
}
有没有人有任何想法来解决这个问题? (如果您需要其他代码,请问我)
谢谢。