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

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

4028:2012/12/09(日) 22:37:27
お世話になっております。
28です。

先のレスでいただいたアドバイスに従って色々と試行錯誤しているのですが
またよく分からない点が出てきましたので質問させていただけますでしょうか。


//vsti変数 には Synth1のdllをloadした際に得たAEffect*が格納されている

AudioEffect* aex = (AudioEffectX*)vsti->object;
aex->dispatcher(
effProcessEvents,
0,
0,
&vst_events,
0.0f
);
vsti->processReplacing(
vsti,
this->inputs,
this->outputs,
kBlockSize //512
);


このようなコードを書き、this->outputsの中に結果(波形データ?)が入って返ってくることは
確認したのですが、その内容が、processEventsでどんなmidiメッセージを送っても全く
同じになってしまうのです。

例えば 曲を再生して一番最初にドを発音するMidiイベントをvstiに送ると

this->outputs[0][0]; //3.94429e-09
this->outputs[0][1]; //2.08869e-08
this->outputs[0][2]; //3.11984e-08
this->outputs[0][3]; //4.43643e-08
this->outputs[0][508]; //8.25091e-07
this->outputs[0][509]; //8.25096e-07
this->outputs[0][510]; //8.251e-07
this->outputs[0][511]; //8.25104e-07

というデータが返って来ました。

しかし、開発中のVstHostを再起動し、今度はドではなく数オクターブ離れた別の音の
イベントを送信しても、
上と全く同じデータが返ってくるのです。

また、生成し始めて2つ目のイベント、3つ目のイベントなども
再起動してもそれぞれ全く同じになってしまいます。
また、processEvents & processReplacingを数回繰り返すと今度は浮動小数点が全く返ってこなくなり、
全て nan という文字列で埋まった float** this->outputs しか返さなくなってしまうようです。

processEventsでvstiに送っているイベントは大体以下のような感じです

vst_events.numEvents; // 1
vst_events.reserved; // 0
vst_events.events[0]->type; // 1
vst_events.events[0]->byteSize; // 24
vst_events.events[0]->deltaFrames; // 0
vst_events.events[0]->data[0]; // 0xffffff90 (ノートオン)
vst_events.events[0]->data[1]; // 0x3c (真ん中のドの音)
vst_events.events[0]->data[2]; // 0x64 (ベロシティ100)


どこかがおかしいのだと思うのですが、原因としては何が考えられますでしょうか・・
ご教示頂けると嬉しいです。


新着レスの表示


名前: E-mail(省略可)

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

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

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

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