したらばTOP ■掲示板に戻る■ 全部 1-100 最新50 | |

C++でVST作りの指摘・質問

47管理人:2012/12/17(月) 00:28:01
>>28さん

本来は1回のprocessReplacing()関数に対して1回のprocessEvents()関数を呼び出すべきかもしれませんが
今回のサンプルではイベント(ノートオンMIDIメッセージ)を最初にVST(Synth1)に渡した後は、とくにイベントが
ありませんでしたので省略いたしました。

本来であれば下記のようにすべきかと思います。
(このあたりもサンプルに反映させましたのでご参考までに。)

 if( ホストアプリからVSTに渡すイベントがあるか? )
 {
  // ホストアプリからVSTに対して渡すイベントを作成する。
  〜〜何らかの処理を行い、VstEvent構造体(仮にeventとする)を設定する〜〜

  // numEventsを1とし、eventsにイベントのポインタを格納する。
  evs.numEvents=1;
  evs.events[0] = (VstEvent*)&event;
 }
 else
 {
  // ホストアプリからVSTに対して渡すイベントはないので、
  // numEventsは0にする
  evs.numEvents=0;
 }

 // ProcessEvents()関数を呼び出し、VSTにイベントを渡す。
 effect->dispatcher (effect, effProcessEvents, 0, 0, &evs, 0.0f);

 // 波形をkBlockSize分生成し、outputsへ格納する。
 effect->processReplacing (effect, inputs, outputs, kBlockSize);

また、kNumProcessCyclesですが、おそらく生成される波形が短すぎるため、
何度かループで呼び出しているだけだと思います。
(サンプルはSteinbergのVST SDK付属のものをベースにしていますので
真意は分かりません)

processReplacing()関数は1回呼び出されるとkBlockSize分の波形を生成します。
サンプリング周波数44100Hzの場合、512サンプル分ですので約11ミリ秒の
波形を生成しますが、これでは生成された波形を確認しづらいため、
5回(つまり約58ミリ秒分)としているのだと思われます。


新着レスの表示


名前: E-mail(省略可)

※書き込む際の注意事項はこちら

※画像アップローダーはこちら

(画像を表示できるのは「画像リンクのサムネイル表示」がオンの掲示板に限ります)

掲示板管理者へ連絡 無料レンタル掲示板