システム開発・Webサイト構築 プラスラス

2004/2/7 土曜日

【VST】VST & VSTi開発概要メモ

このエントリーを含むはてなブックマーク Yahoo!ブックマークに登録 Google ブックマーク del.icio.us

VSTプラグイン作成の大まかな手順のメモです。

なお、作成にあたり私は、

OS:Windows XP Proffesional SP 1
開発ツール:Visual C++ 6.0 SP 5
ライブラリ:VST SDK 2.3
ホストアプリケーション:CUBASE SL

を使用しています。

プログラムを作成するために、まずは、VST SDKを入手しましょう。

VST SDK

最初にSDK(Software Development Kit 開発キット)を入手する必要があります。VSTのSDKは、C++でできています。SDKに入っているクラスを継承した独自のクラスを定義していくことで、VSTプラグインのプログラミングを進めていくことになります。

VST SDKは、Steinberg社のサイトから入手してください。
http://ygrabit.steinberg.de/

LICENSING AGREEMENTに同意し、名前とE-mailアドレスを登録する必要があります。
なお、メーリングリストにも登録しておくと、英語ですが、最近の情報やTipsがわかるので便利です。

基礎知識としてC++でプログラムが組めないと無理なので、わからない方は修行を積んでください。
Webでは、猫でもわかるプログラミングなどが参考になると思います。

しかし、MFCやWin32 APIを使ったアプリケーションとは、ちょっと違うので、Windowsアプリケーションの作り方の全容までは知らなくて良いと思います。ただし、概要は知っていた方が便利でしょう。

本であれば、これならわかるC++などが良いと思います。

*Delphi用のSDKを配布している猛者がいるようなので、Delphiでも作成できると思います。私は、Delphiでの開発についてはさっぱりわかりません。

Delphi用SDK配布サイト: http://www.tobybear.de/ | http://www.axiworld.be/

開発ソフト

開発ツールについては、SDKが基本的にVC++用に作られているようなので、Microsoft Visual C++を使うのが無難でしょう。Borland C++ Builderなどでも手を加えることで、作成可能なようです。

私は、C++ Builderでは試していないので、詳細については、さっぱりわかりません。

ホストアプリケーション

作成したものを試すには(Debug時にも)、VSTプラグインに対応したアプリケーションが必要です。私自身は、Steinberg CUBASE SLを使用しています。

他の製品では、Steinberg CUBASE SX 他CUBASEシリーズ、Steinberg Cubasis、INTERNET Singer Song Writer、SonicFoundry ACID PRO 4.0、emagic Logic Audioなどで使用可能です。

シェアウェアのMusic Studio Independenceや、SynthEditで試すのもいいと思います。

追記:デバッグにDAWを起動するのは面倒ですし、そもそも、Cubaseなどは、クラック防止機能がついていてデバッガでブレークできません。VSTHostなどの軽量なアプリを使用すると便利です。

VSTプラグイン開発のおおざっぱな流れ

VST SDKのサンプルプログラムをスケルトンとして使うと理解しやすいです。

最低限のVSTプラグインを作成するには、AudioEffectXクラスを継承したクラスを定義し、必要なメソッドを書けば良いです。

エフェクターの場合も、VSTiの場合も基本的には同じです。MIDIなどのイベントの処理と信号処理をどうするかというような動作上の違いが、エフェクターかVSTiかの違いになります。

具体的な動作として、ホストアプリケーションは、DLLのエクスポート関数 AEffect *main(audioMasterCallback audioMaster)を呼んでくるので、書いておく必要があります。

(サンプルでは、モジュール定義ファイル(defファイル)でエクスポートする関数を定義しているので、これもプロジェクトに追加しておきましょう)

結局のところ、エクスポートする関数AEffect *main(audioMasterCallback audioMaster)の中で、AudioEffectXクラスを継承した独自クラスをインスタンス化し、戻り値にAEffectクラスのポインタ(getAeffect()メソッドの戻り値)を渡すように書いて、AudioEffectXクラスを継承したそのVSTプラグイン独自のクラスを書き、DLLとしてビルドするのが、VSTプラグインのおおざっぱな作成手順です。

ここら辺は、流れさえわかれば、VST SDKのサンプルを見ていただくとわかりやすいと思います。

独自のGUI(Editor) を作るには、サンプルのdelayeditguiが参考になります。

Editorを作成するには、delayeditguiで言うと、ADEditorクラスのように、AeffGUIEditorクラスと、CControlListerクラスを継承したクラスを定義し、必要なメソッドを書いてやると良いです。

サンプルdelayeditguiでは、上記のADEditorクラスのインスタンスを、ADelayEditクラスのコンストラクタで作成し、メンバ変数editorに代入しています。

関連記事

Filed under: Programming,VST & VSTi — Nakai @ 21:21:09

2件のコメント »

  1. ペヤングだばぁ

    どうもJudaです。
    覚書程度に、VSTについて
    VST&VSTi開発概要メモ
    VSTiとは

    カシオレータはやく買いたいなぁー。
    題名は、同名のfeatring初音ミクの曲が最高です。
    それにしてもぺヤン…

    トラックバック by DENX blog β — 2008/8/25 月曜日 @ 22:02:17

  2. vst開発のwikiを作っているものです。
    vst開発の記事を取り上げられているので、我々のwikiに掲載させていただきます。
    不都合でしたらご連絡ください。
    ぶしつけとなりますがよろしくお願いします。

    コメント by vstdev — 2010/1/24 日曜日 @ 13:54:40

この投稿へのコメントの RSS フィード。 TrackBack URL

コメントする

HTML convert time: 0.776 sec. Powered by WordPress