将参数从处理器传递到控制器; VST 3.5
Posted
技术标签:
【中文标题】将参数从处理器传递到控制器; VST 3.5【英文标题】:Passing parameters from processor to controller; VST 3.5 【发布时间】:2012-08-03 15:56:12 【问题描述】:我是新来的,所以首先:“大家好!!”
在通过data.outputParameterChanges
将参数更改从 process() 传递到控制器时,我遇到了一个严重的问题。看看下面的代码(kDataParamId
是一个正确设置的参数的ID):
tresult PLUGIN_API AGain::process (ProcessData& data)
IParameterChanges* paramChanges = data.outputParameterChanges;
if (paramChanges)
int32 index;
IParamValueQueue* paramQueue =
paramChanges->addParameterData(kDataParamId, index);
if(paramQueue)
paramQueue->addPoint(0, 0.1, index);
paramQueue->addPoint(0, 0.2, index);
paramQueue->addPoint(0, 0.3, index);
fprintf(stderr
, "[MyVSTPlugin] paramQueue->getPointCount() == %d\n"
, paramQueue->getPointCount());
return kResultOk;
我得到的点数是“1”。此外,setParamNormalized()
(作为接收参数更改的控制器的一部分)从带有“0.3”的主机调用一次。我可能很天真,但我希望参数点计数返回“3”,因此对 setParamNormalized()
的三个调用分别为 0.1、0.2 和 0.3。我在这里错过了什么????
非常感谢您对此的任何帮助和评论!
谢谢,克里斯
【问题讨论】:
【参考方案1】:无法使用参数更改将参数从处理器发送回控制器。 您需要使用 IConnectionPoint API 并发送消息。
您只能将音频参数从控制器发送到处理器。并且主机也可以直接发送给处理器(但是主机在向处理器发送参数时也会通知控制器,让控制器更新编辑器视图)
数据中的outputparameterchanges成员只有经过主机才能读取。
现在的问题也可能是您为什么要将消息从处理器发送回控制器?
为此,SDK 提供了如何使用 IMessages 更新音频回调计的示例
【讨论】:
以上是关于将参数从处理器传递到控制器; VST 3.5的主要内容,如果未能解决你的问题,请参考以下文章