4klangのVSTとか

■RenoiseのVST導入まで。できればCPPに取り込んでリンクまで




4klangのVSTとか

Twitterでもちょっと見たけど、まともな導入資料なさそうなので、
再度写経して覚えましょう的な。

@ 公式サイトからダウンロードするとイカみたいになる

4k lang VST



A おもむろにC:\Program Files\VstPluginsを開く

4k lang VST



B@のファイルをコピーする(とりあえず全部)

4k lang VST



Cとりあえずrenoise起動

4k lang VST



D赤丸をクリックして次々に進む

4k lang VST



EとりあえずWindowが表示されれば導入は終わり

4k lang VST









■Record と Stopでの再生して、ヘッダファイルとobjを作る■


4klangは、c/cppで使えるobjとヘッダファイルを自動生成して本番用に使う。
自動生成するのは以下の手順で行う。

@xrnsファイルを開く(もしくは曲をぽちぽち作ってみる)

※画像はないでござる…一番難しいと思う手順。
曲作ったら、Patchファイル(楽器の情報のこと)をセーブしておく事を忘れないように!



AVSTのウィンドウで「Record」ボタンを押す

必要であれば、エンベロープ取り込み、note取り込みにチェック入れておく。
入れないと、音同期面倒になる。

★重要 : 2012/01/26追記★
既にある曲再生するときは、下記の画面からLoad/SaveでPatch(楽器の情報!)を
読み込ませないと、音色しょぼいまま再生されるので注意!
4k lang VST




BRenoiseを再生して、好きな場所でRenoiseを止める

4k lang VST




C★音が消えたら、Panicキーを一度押してから、Stopを押す>

4k lang VST



Renoiseが落ちるらしい原因は、どうもオシレータ動いてる状態でStop押すとなるみたい。
なので、音消えて終了したらPanic押してからの方が良さそう…




Dファイルの保存が勝手に出るので、好きな場所にobjとヘッダを保存する

4k lang VST


これでヘッダファイルとobjファイルの生成は終了。








■cppへの取り込み■

最小構成はこんな感じ
これはスレッド飛ばさない方です。



以下を守ってやれば波形を作って再生できる。

@ 4klang.hの_4klang_renderを使って適当に確保したバッファに入れる(もしくはCreateThreadに渡す)

A バッファのサイズは = 再生時間[s] x SAMPLE_RATE x sizeof(SAMPLE_TYPE) x チャンネル数

B obj作るときのVSTのウィンドウでRecord EnvsもしくはRecord Notesにチェック入れてれば、4klang.hに定義されている以下の手順でリアルタイムに音の状況が取れる


(1)MMTimeをwaveOutGetPositionで取ってくる。
(2) instrumentの番号を★とすると、以下でinstrumentのエンベロープの状態が読める。
※4klang_release\4klang_examples\Example\main.cppを引用。
       float aha = (&_4klang_envelope_buffer)[((MMTime.u.sample >> 8) << 5) + 2*★+0]; 
0.0〜1.0の間で取れる。



なお、noteの状態は以下で読める。
※4klang_release\4klang_examples\Example\main.cppを引用。

int curNote = (&_4klang_note_buffer)[((MMTime.u.sample >> 8) << 5) + 2*★+0];




Cソース作り終わったら、おもむろにコンパイルする

ただ再生するだけなら cl source.cpp 4klang.obj程度で十分。
4k lang VST




Dうまくコンパイルできれば曲が再生できる

4k lang VST



おまけ : テストソース(4klang_test.zip)




曲 -> Baghdad by Nordic Conspiracy。かっこいい!
Baghdad by Nordic Conspiracy









後半ちょっとむずいね…。


Back

2011/12/11 Gyabo