Back
■目的 : VSTプラグインのSDKダウンロードしてきてコンソールで作成して音ならすまで
初音ミクの初期バージョンを買っていたので「Cubase LE AI Elements 7」が期間限定で無料でダウンロードできるようになっていた。
以前買っていたのを思い出し、Cubaseが使える!ということで早速ダウンロードして遊んでいた。
で、Cubase → VST → VSTプラグインを作るのが面白そう!と思い立ったのでちょっと調べた。
■かなり参考にしたサイト
C++でVST作り http://www39.atwiki.jp/vst_prog/
上記のサイトを参考にGUI抜きで作成したらあっさり音が鳴ったのでメモ的に記載しておく。
※コンソールから適当に作りたかったのでプロジェクトファイル作るとかは特に書いてないです。
■2014/6/6 追記 : 参考になるサイト / 本
ここではVSTプラグインの作り方だけ書いてて信号処理は特に解説しません。
メモ程度に以下。
PCM の基本
基本中の基本。とにかくBlockAlign単位で処理しましょう。
VSTの場合floatのまま突っ込み(VSTSDKに全部お任せ)できるので、全部-1〜+1で考えると良いです(適当だなあ…)
ご本は信号処理を読むのがベストっぽいんですが、とてもわかりやすかったのは以下。
(amazon)サウンドプログラミング入門――音響合成の基本とC言語による実装(青木 直史 著)
↑
ノンアフィリ。
緑色の同じような題名の本の発展版。フーリエふんにゃか、ディレイ、リバーブ、フィルタなど、
一通りの信号処理の解説がとても丁寧で参考になる。
リアルタイム処理についてはあんまり書いてない。
リアルタイム処理のもっと変態なのは洋書しかなさそうな感じもする。
◆VSTのSDKをダウンロードする
http://www.steinberg.net/nc/en/company/developer/sdk_download_portal.html
steinbergのサイトの「3RD PARTY DEVELOPER LOGIN」ってところから適当にアカウント作成。
SDKダウンロードできるリンク(目立つアイコンでいきなりあるのでわかる)を適当にクリックしていくと、
以下みたいにダウンロードできる画面が出るのでSDKをダウンロードする。
◆解凍する
こんな感じ。
◆テンプレートをコピーする
解凍したフォルダの./VST3 SDK/public.sdk/source/vst2.xの中身をコピーして、
./VST3 SDK/直下にコピーする(makeする際のpathを楽に通したい目的)
こんな感じで↓
◆vstplug.defを作成して、VSTプラグイン本体のソースを書く
vstplug.defの本体は、参考サイトにあるとおりにDLLexport定義書いて保存する。
EXPORTS
VSTPluginMain
main=VSTPluginMain
make.batはプラグイン作成する際のバッチ。obj作って/LDつかってリンクするだけの記載。
cl *.cpp /c /MT /Ox
cl /LD karp.obj audioeffect.obj audioeffectx.obj vstplugmain.obj vstplug.def
karp.cppはVSTプラグイン本体。
書いたらテンプレートと同じ場所に格納。
参考サイトによると、VSTプラグイン本体はclass AudioEffectXを派生させて作成する、とある。
お試しで作ったclass karpは、このページで書いた、
karplus strongモデルの弦楽器風の処理のほぼコピペ。
DAWからの入力やらの情報はクラスの関数 : processEventsで、MIDIデータ形式で取れるっぽい。
音さえ鳴れば良いので、note on(0x90)のみ処理している。
今サンプルで作ってあるkarp.cppの仕組みは参考程度に。
◆makeする
make.batをVCコンソールから実行してプラグインの作成を試みる。
するとこのとおりkarp.dllが作成されている。プラグインの作成はこれでおしまい。
◆鳴らす
Cubaseの本体がおいてある場所やら、VSTプラグインを参照しているフォルダにkarp.dllをコピーする。
こんな感じ。Cubaseを起動させて、インストゥルメンツから、karpってのが見えていればVSTプラグイン認識成功。
適当にトラックを追加してkarp選んで…
鳴る!楽しい!!
GUI周りも手順に従って作っていくと具合よさそう。
作ったのは以下にまとめとく(割と下品ででかい音出ますので注意)
karpVST.zip
◆備考
普通にMessageBoxとかwin32のAPI突っ込んでも大丈夫なのでデバッグしたい場合はいろいろ突っ込める。
Back
2014/06/06 Gyabo