0

私はここで新しいので、まず第一に:「みなさん、こんにちは!」

を介してprocess()からコントローラーにパラメーターの変更を渡すことに深刻な問題がありますdata.outputParameterChanges。次のコードを見てください(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」でホストから1回呼び出されます。私は素朴かもしれませんが、パラメータポイントカウントが「3」を返すことを期待していたため、0.1、0.2、0.3の3つの呼び出しがありsetParamNormalized()ます。私はここで何が欠けていますか????

これに関するヘルプとコメントは大歓迎です!

ありがとう、クリス

4

1 に答える 1

0

パラメータ変更を使用して、プロセッサからコントローラにパラメータを送り返すことはできません。IConnectionPoint API を使用してメッセージを送信する必要があります。

コントローラーからプロセッサーにのみオーディオパラメーターを送信できます。また、ホストはプロセッサに直接送信することもできます (ただし、ホストは、コントローラがエディタ ビューを更新できるようにパラメータをプロセッサに送信するときにコントローラにも通知します)。

データ内の outputparameterchanges メンバーは、後でホストによってのみ読み取られます。

ここで、なぜメッセージをプロセッサからコントローラに送り返したいのかという質問もあるかもしれません。

そのために、SDK は、IMessages を使用してオーディオ コールバック メーターを更新する方法の例を提供します。

于 2012-11-09T19:35:33.090 に答える