我是新来的,所以首先:“大家好!”
我有一个真正的问题,即通过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。我在这里失踪了什么????
对此有任何帮助和评论,我们非常感谢!
谢谢,克里斯
答案 0 :(得分:0)
使用参数更改无法从处理器将参数发送回控制器。 您需要使用IConnectionPoint API并发送消息。
您只能将音频参数从控制器发送到处理器。并且主机也可以直接发送到处理器(但是当主机向处理器发送参数以让控制器更新编辑器视图时,主机也会通知控制器)
数据中的outputparameterchanges成员仅在主机读取后才会读取。
现在问题也可能是您想从处理器将消息发送回控制器?
为此,SDK提供了如何使用IMessages
更新音频回调仪表的示例