2015年6月2日火曜日

Windows:VSTホストを作れるのか?

色々あったけど、途中で書いておけばよかった・・。だいぶ忘れた・・。

さて、FM音源ドライバーが一旦落ち着いて(バグはあるが)、次の展開を考えていた所、
ドライバーの演奏部分がいい感じにできているので、FM音源だけでなく、VSTの
インストゥルメントをプラグイン的に挿して演奏できたら面白く無い?という事に至る。

そこで早速ググってみるも、日本人は実質一人くらいしかVSTホストに関して
取り組んでない感じ。いや、やってるんだけど、ググっても全く出てこない。

この神様のような人の作ったVSTホストを解析して、ウチの演奏先をVSTにできる
のか、ということで2日程試行錯誤。

結果的には、先ほど音が鳴った。すごい。

でもハマった所をいくつかメモ。

■余計なライブラリを使うの止めて!
<balor>
神様もGUI部分は面倒臭かったらしく、2011年くらいに開発が止まったライブラリを
使っていた。balorというGUIなどをちゃちゃちゃと作れるライブラリ。

これに依存しているGUI部分の解析に時間がかかった・・。

DLしてきてそのままリンクしてもビルドできず。そこでプロジェクトを見つけてリビルド
してみるも、ビルドエラーなどで全くライブラリ作れず。神様はちょいちょいと修正
したらビルドできたよ!とか言ってたけど、何か決定的な壁を感じて断念。

GUI無しでも行けるはずなので、そこはもうbalor無しで取り組む事に。

<boost>
これは昔もミンナ使ってたライブラリだなぁとか懐かしい感じに。

確かにboost使うと色々と便利なのでこれ使い出したら頼っちゃうよね・・。
でもリンクやライブラリのコンパイルにえらい時間がかかった・・。四苦八苦。

スタティックとか色々の設定あるけど未だわからず。

<std>
もはやC++では当たり前の存在らしいstdライブラリ。標準ライブラリとして普通に
皆さん使ってますな。std::vectorとかすごくいいよね。これで速ければメモリの
無駄使いにならないし。

でもこれの理解にだいぶ時間がかかった・・。

■balorの置き換え
ちょいちょいと修正してみるも理解してないので進まず。なかなかビルドが通らず。
悩んでググってみると、英語のページでいい所を見つけた。

すっごくシンプルにVSTを読み込むサンプルがあった。

ここのサンプルをちょいちょいと試したら、VSTが読み込めた!やった!

そしてこのサンプルの内容がわかってくると、ようやく神様の作ったソースも
内容が少しづつ理解できるように。

そこで、英語のサンプルからちょっとずつ神様のサンプルへ移行。

■ネームスペース
未だよくわからんけど、コードの書き方に自分ルールが持ち込めるという事
らしいが、これにだいぶハマった・・。まあ自分ルールはいいんだけど、サンプル
としてはもっと素っぴんの状態でお願いしたいよね・・。

■クラス化
C出身で未だにCっぽいプログラムしか書けないが、サンプルを読むのにC++な
クラスは必須。最近は少しづつクラスの書き方も読めるようになってきた。
自分ではなかなかクラス設計できないんだけどね!

0 件のコメント:

コメントを投稿