将参数从处理器传递到控制器; VST 3.5

时间:2012-08-03 15:56:13

标签: c++ vst

我是新来的,所以首先:“大家好!”

我有一个真正的问题,即通过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 个答案:

答案 0 :(得分:0)

使用参数更改无法从处理器将参数发送回控制器。 您需要使用IConnectionPoint API并发送消息。

您只能将音频参数从控制器发送到处理器。并且主机也可以直接发送到处理器(但是当主机向处理器发送参数以让控制器更新编辑器视图时,主机也会通知控制器)

数据中的outputparameterchanges成员仅在主机读取后才会读取。

现在问题也可能是您想从处理器将消息发送回控制器?

为此,SDK提供了如何使用IMessages

更新音频回调仪表的示例