4klangのVSTとか
■RenoiseのVST導入まで。できればCPPに取り込んでリンクまで
4klangのVSTとか
Twitterでもちょっと見たけど、まともな導入資料なさそうなので、
再度写経して覚えましょう的な。
@
公式サイトからダウンロードするとイカみたいになる
B@のファイルをコピーする(とりあえず全部)
Cとりあえずrenoise起動
D赤丸をクリックして次々に進む
EとりあえずWindowが表示されれば導入は終わり
■Record と Stopでの再生して、ヘッダファイルとobjを作る■
4klangは、c/cppで使えるobjとヘッダファイルを自動生成して本番用に使う。
自動生成するのは以下の手順で行う。
@xrnsファイルを開く(もしくは曲をぽちぽち作ってみる)
※画像はないでござる…一番難しいと思う手順。
曲作ったら、Patchファイル(楽器の情報のこと)をセーブしておく事を忘れないように!
AVSTのウィンドウで「Record」ボタンを押す
必要であれば、エンベロープ取り込み、note取り込みにチェック入れておく。
入れないと、音同期面倒になる。
★重要 : 2012/01/26追記★
既にある曲再生するときは、下記の画面からLoad/SaveでPatch(楽器の情報!)を
読み込ませないと、音色しょぼいまま再生されるので注意!
BRenoiseを再生して、好きな場所でRenoiseを止める
C★音が消えたら、Panicキーを一度押してから、Stopを押す>
※
Renoiseが落ちるらしい原因は、どうもオシレータ動いてる状態でStop押すとなるみたい。
なので、音消えて終了したらPanic押してからの方が良さそう…
Dファイルの保存が勝手に出るので、好きな場所にobjとヘッダを保存する
これでヘッダファイルと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程度で十分。
Dうまくコンパイルできれば曲が再生できる
おまけ : テストソース(4klang_test.zip)
曲 -> Baghdad by Nordic Conspiracy。かっこいい!
Baghdad by Nordic Conspiracy
後半ちょっとむずいね…。
Back
2011/12/11 Gyabo