将参数从处理器传递到控制器; 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的主要内容,如果未能解决你的问题,请参考以下文章

将参数从视图传递到控制器

如何将参数从视图传递到自定义控制器

Url.Action:如何将参数从视图传递到控制器?

CodeIgniter:将参数从视图传递到控制器?

如何将多个参数从 ajax 调用传递到 MVC 控制器

如何将参数从视图传递到控制器?