[
板情報
|
カテゴリランキング
]
したらばTOP
■掲示板に戻る■
全部
1-100
最新50
|
1-
101-
201-
この機能を使うにはJavaScriptを有効にしてください
|
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
(省略可)
:
※書き込む際の注意事項は
こちら
※画像アップローダーは
こちら
(画像を表示できるのは「画像リンクのサムネイル表示」がオンの掲示板に限ります)
スマートフォン版
掲示板管理者へ連絡
無料レンタル掲示板