VST3.6勉強中 3 – 最小構成のVST3

最小構成のVST3

前回はVST3のプラグインを作成する際のVisual Studioのプロジェクト作成についてメモいたしましたので、今回は最小構成のVST3プラグインを作成します。

今回作成するプラグインは下記のとおりです。

  • パラメーターはなし
  • 入力をそのまま出力する
  • 入力バス、出力バスは1つで、共にステレオ(2ch)

上記にある「バス」についての概念は次回あたりで記載できればと思います。

音声処理を行うクラスの作成

まずはVSTプラグインの中心となる音声処理を行うクラスを作成します。

音声処理クラスはAudioEffectクラスを継承して下記のように宣言します。
(VST3の開発では名前空間を指定する必要がありますので忘れないようご注意ください。)

【processor.h】

【processor.cpp】

initialize()関数は名前のとおり、クラスの初期化を行う関数です。
継承元のinitialize()関数を呼び出した後、addAudioInput()関数、addAudioOutput()関数を呼び出し、入力と出力のバスを定義しています。

setBusArrangements()関数はバス構成が変更されたとき呼び出されます。
(「入力バスがモノラルからステレオに変更された」等)
詳細な説明はここでは省略いたします。

process()関数は実際に音声の処理を行う関数です。
引数のProcessData& dataには処理に必要な一通りの情報(パラメーターの変更内容や入力・出力バッファのポインタなど)が入っています。
詳細な説明は省略します。

FUIDの作成

次に音声処理クラス用のFUID(GUID)を定義します。
(VST SDK 3.6はCOM(Component Object Model)と呼ばれる仕様に基づいて作成されています。
COMではグローバル一意識別子と呼ばれるIDをクラスに関連付けなければならないので定義します。)

FUIDは下記の手順で発行します。
 1.メニューから「ツール」→「GUIDの作成」を選択
 2.「4.レジストリ形式」にチェックを入れ「コピー」ボタンを押す
 3.クリップボードにGUIDがコピーされるので、メモ帳などに貼り付ける。
 4.貼り付けたGUIDを8桁ずつ区切ってFUIDクラスの引数とする。

  【例】
  発行されたGUIDが
    {ACAF6FC4-9094-4AC3-B413-D957C4B5BD93}
  の場合、FUIDクラスは
    FUID ProcessorUID (0xACAF6FC4, 0x90944AC3, 0xB413D957, 0x7C4B5BD93);
  とする。

実際のコードは下記のとおりです。
【myvst3fuid.h】

生成関数の作成

最後に音声処理クラスを呼び出すための関数を作成します。
この関数はマクロを使って下記のように定義・作成します。
説明については省略します。

【factory.cpp】

ソースファイルのビルド

上記4つのファイル(processor.h、processor.cpp、myvst3fuid.h、factory.cpp)を作成した後、ビルドするとVST3プラグインが作成されます。
VST3プラグインは通常のDLLファイルとは違い、下記のVST3専用フォルダへのコピーしなければ使えません。

C:\Program Files\Common Files\VST3\Steinberg\
C:\Program Files (x86)\Common Files\VST3\Steinberg\

最後に

以上でとりあえず音声処理を行えるVST3を作成することができるはずです。

今回作成したVST3のソースファイルはこちらになります。→20141129_vst3

次回は、バスについての概念を記載できればと思います。


コメントを残す