はじめに
連載の第一回で解説したとおり、VST3 規格に対応したホストアプリケーションやプラグインを開発するには、 VST3 SDK を使用します。
今回の記事では、 VST3 SDK の入手方法とビルド方法について紹介します。
ちなみに、サンプルとして用意したホストアプリケーション Vst3SampleHost のプロジェクトには、 VST3 SDK を入手してビルドする仕組みがビルドスクリプトの中に含まれているので、 Vst3SampleHost をビルドするにあたっては、今回この記事で解説するビルド処理を自分で行なう必要はありません。
VST3 SDK の入手方法
VST3 SDK を入手する方法は二つあります。
- Steinberg 社のサイトから VST3 SDK のパッケージをダウンロードする方法
- GitHub から VST3 SDK のリポジトリを clone する方法
前者の方法で取得できる VST3 SDK を zip 版、後者の方法で取得できる VST3 SDK を git 版と呼ぶことにします。
これらのうち、 zip 版のほうが git 版よりも含んでいるファイルが多く、より完全なパッケージになっています。そのため、最初は前者の方法で zip 版を入手して利用するほうが問題が起きにくいかもしれません。
これに対して後者の方法は git コマンドに慣れている人に便利な方法です。特定のバージョンの SDK を入手したり、ビルドスクリプトで作業を自動化したりする場合はこちらの方法を使用するのが良いでしょう。
それぞれの方法の手順について詳しく解説します。
Steinberg 社のサイトから VST3 SDK のパッケージをダウンロードする方法
Steinberg 社のサイトに、最新バージョンの VST3 SDK の zip ファイルが公開されているため、これをダウンロードします。
まず、以下の URL から Steinberg の開発者向けページを開きます。
そして、そのページの[VST 3 Audio Plug-Ins SDK]リンクから zip ファイルをダウンロードします。
zip ファイルがダウンロードできたら、これを好きな場所に展開します。
これで完了です。
github から VST3 SDK のリポジトリを clone する方法
VST3 SDK は、 github 上にもホスティングされています。
このリポジトリを以下の手順で clone します。ここでは、ユーザーのホームディレクトリ以下に develop ディレクトリを作成して、その中に VST3 SDK を clone します。
cd "%HOMEDRIVE%%HOMEPATH%"
mkdir develop
cd develop
git clone --recursive https://github.com/steinbergmedia/vst3sdk
cd ~
mkdir -p develop
cd develop
git clone --recursive https://github.com/steinbergmedia/vst3sdk
これによって、developディレクトリ以下にvst3sdkディレクトリが作成され、その中に SDK のファイルがチェックアウトされます。
github 上で確認すると分かりますが、このリポジトリ自体にはほとんどファイルは含まれていません。VST3 SDK に含まれる基本ライブラリ、インターフェースクラス定義、ドキュメント関連ファイルなどはそれぞれ個別のリポジトリに細かくまとめられており、vst3sdk リポジトリはそれらをサブモジュールとして取り込む仕組みになっています。
そのため、vst3sdk リポジトリのブランチやコミット位置を変更したときは、以下のコマンドを実行してサブモジュールの状態をそれに追従させる必要があるため注意してください。
cd vst3sdk
git submodule update --recursive
VST3 SDK のディレクトリ構成
以下に、 zip 版 VST3 SDK のディレクトリ構造を示します。
VST_SDK/.............................zip 版 VST3 SDK のルートディレクトリ
├── VST2_SDK/........................VST2 関連ファイルのディレクトリ
├── VST3_SDK/........................VST3 関連ファイルのディレクトリ
│ ├── CMakeLists.txt...............CMakeビルド設定ファイル
│ ├── LICENSE.txt..................ライセンステキスト
│ ├── README.md....................READMEファイル
│ ├── VST3_License_Agreement.pdf...ライセンス契約書
│ ├── VST3_Usage_Guidelines.pdf....VST3使用者ガイドライン
│ ├── base/........................SDK 内で用いられる基礎的な型やクラス
│ ├── bin/.........................プラグイン検証用簡易ホストのインストーラ
│ ├── cmake/.......................CMake 関連ファイル
│ ├── doc/.........................SDK のドキュメント関連ファイル
│ ├── index.html...................ドキュメントのトップページ
│ ├── pluginterfaces/..............VST3 プラグインインターフェース
│ ├── public.sdk/..................SDK の実装コードとサンプルプログラム
│ └── vstgui4/.....................VST3 プラグイン用GUIフレームワーク
├── copy_vst2_to_vst3_sdk.bat........VST2 サポートを有効にするためのバッチファイル
├── copy_vst2_to_vst3_sdk.sh.........VST2 サポートを有効にするためのシェルスクリプト
└── my_plugins/......................自作プラグイン開発のためのプロジェクトテンプレート
git 版の VST3 SDK は若干構成が異なり、以下の違いがあります。
- ルートディレクトリが、上記の
VST3_SDKディレクトリとなります。そのため、上記のVST3_SDKと同じ階層にあるVST2_SDK/my_pluginsなどのディレクトリや、VST2 サポートのためのスクリプトファイルなどが含まれません。 - VST3_SDK 内に
binディレクトリが含まれません。つまり、プラグインの動作検証を行うための簡易ホストのインストーラが含まれません。
VST3 SDK のビルド方法
VST3 SDK を利用するには、 VST3 SDK のソースコードを静的リンクライブラリとしてビルドし、それをアプリケーションやプラグインのビルド時にリンクさせる必要があります。
VST3 SDK をビルドするには CMake を使用します。ここでは CMake をコマンドラインで使用する方法を解説しますが、 cmake-gui のような GUI ツールに慣れている人はそちらを使用しても問題ありません。この手順については、VST3 SDK ドキュメントの "How to use cmake for Building VST 3 Plug-ins" にも記載されています。
cmake コマンドを以下のように実行します。(ここでは zip 版を想定しています。もし git 版をビルドする場合は、 vst3sdk ディレクトリ内に build ディレクトリを作成して、その中で cmake コマンドを実行するなどに読み替えてください。)1
cd /path/to/VST_SDK
mkdir build
cd build
cmake -G <generator> ../VST3_SDK
cmake --build . --config <Debug or Release>
このコードを詳しく解説していきます。
cd /path/to/VST_SDK
mkdir build
cd build
最初の部分では、 VST3 SDK をビルドするためのディレクトリを準備しています。 CMake のビルド設定が何かおかしくなったりよく分からない状態になったときは、このディレクトリを削除して作り直すことで、作業をやり直せます。
cmake -G <generator> ../VST3_SDK
続く cmake コマンドでは VST3 SDK をビルドするための IDE のプロジェクトファイルを生成します。<generator> の箇所には Xcode や "Visual Studio 15 2017 Win64" など、読者の環境で適切なものを指定します。2
また、このときに VST3 SDK で定義されたオプションを渡すとビルド設定を変更できます。
デフォルトのビルド設定では、 VST3 SDK の静的リンクライブラリの他に、プラグイン開発用の GUI ライブラリである VSTGUI や、サンプルホストアプリケーション、サンプルプラグインなどがビルドされます。もし必要なものが VST3 SDK の静的リンクライブラリだけでそれ以外をビルドする必要がない場合は、以下のようにオプションを設定することでビルドにかかる時間を短縮できます。
cmake -G <generator> -DSMTG_ADD_VST3_HOSTING_SAMPLES=OFF -DSMTG_ADD_VST3_PLUGINS_SAMPLES=OFF -DSMTG_ADD_VSTGUI=OFF ../VST3_SDK
IDE のプロジェクトファイルが生成できたら、cmake --build コマンドで静的リンクライブラリをビルドします。
cmake --build . --config <Debug or Release>
ここで、cmake --build コマンドを使用せず、 build ディレクトリに生成された vstsdk.sln ファイルや vstsdk.xcodeproj を開いて IDE 上でビルドしても構いません。
ビルドが成功すると、 build/lib/<Debug or Release> ディレクトリに、ビルドした静的リンクライブラリが作成されます。作成されるファイルは以下のとおりです。3
| ファイル名(Windows) | ファイル名(macOS) | 解説 |
|---|---|---|
| base.lib | libbase.a | VST3 SDKの base ディレクトリ内のソースファイルから作られる静的リンクライブラリファイル |
| pluginterfaces.lib | libpluginterfaces.a | VST3 SDKの pluginterfaces ディレクトリ内のソースファイルから作られる静的リンクライブラリファイル |
| sdk.lib | libsdk.a | VST3 SDKの public.sdk/source ディレクトリ内のソースファイルから作られる静的リンクライブラリファイル |
| vstgui*.lib | libvstgui*.a | VSTGUI ライブラリの静的リンクライブラリファイル |
これらのうち、先頭の3つのライブラリは VST3 プラグインやホストの開発の際には必ずリンクするようにします。名前に vstgui を含んでいる静的リンクライブラリファイルは、プラグイン開発時に VSTGUI ライブラリを利用する場合にリンクします。
VST3 SDK の利用方法
VST3 SDK を利用するには、ホストアプリケーションやプラグインのプロジェクトファイルで以下の設定を行います。
- VST3 SDKのディレクトリをインクルードディレクトリに追加する。
- zip 版の VST3 SDK では
VST3_SDKディレクトリ。 - git 版の VST3 SDK では、
cloneしたvst3sdkディレクトリ。
- zip 版の VST3 SDK では
- ビルドした静的リンクライブラリをリンク設定に追加する。
これらの設定を行った上で、自身のソースファイル内で以下のように VST3 SDK のヘッダーファイルをインクルードし、ビルドを行うことで、VST3 SDK を利用するアプリケーションを開発できます。
# include <public.sdk/source/vst/vsteditcontroller.h>
# include <pluginterfaces/vst/ivstparameterchanges.h>
VST3 SDK には、使用頻度の多いヘッダーファイルをまとめてインクルードした、「これだけインクルードすれば VST3 SDK の基本的なクラスや関数を利用できるようになるヘッダーファイル」のようなものは用意されていないので、各自が自分のソフトウェアで必要となるヘッダーを適切にインクルードする必要があります。どのクラスや関数を利用する場合にどのヘッダーファイルをインクルードする必要があるかは、それぞれのドキュメントを参照してください。
VST3 SDK に含まれるサンプルプラグインについて
VST3 SDK には何種類かサンプルのプラグインが含まれていて、ホスト開発時にはこれらのプラグインを使って、ホストが正しく実装できているか検証できます。
サンプルプラグインは、 [VST3 SDK のビルド方法](# VST3 SDK のビルド方法) に記載したコマンドでビルドできます。もし先に -DSMTG_ADD_VST3_PLUGINS_SAMPLES=OFF 指定して cmake を呼び出してしまった場合は、その値がキャッシュされて、サンプルプラグインがビルドされないかもしれません。その場合は、明示的に -DSMTG_ADD_VST3_PLUGINS_SAMPLES=ON を指定して cmake コマンドを実行してください。
以下にサンプルプラグインの一覧を記載します。
| 名前 | 説明 |
|---|---|
| ADelay | シンプルなディレイエフェクトプラグイン |
| AGain | シンプルな VST3 プラグインのサンプル実装として用意されたプラグイン |
| mda | DSP 処理を VST3 プラグインとしてラップする仕組みのサンプルとして用意されたプラグイン集。オープンソースの mda プラグインをもとにしている。 |
| Note Expression Synth | Note Expression Event に対応したインストゥルメントプラグイン |
| PitchNames | 音階に別名を付ける Pitch Name 機能を実装したプラグイン |
| HostChecker | ホスト側の挙動をチェックするためのプラグイン |
| TestChannelContext | ホストからプラグインへ Channel Context という情報を渡すための機能を実装したプラグイン |
| TestLegacyMIDICCOut | プラグインから MIDI CC イベントを出力するための LegacyMIDICCOutEvent 機能を実装したプラグイン |
| TestPrefetchableSupport | プラグインの合成処理を Prefetch というモードに切り替え機能を実装したプラグイン |
| TestProgramChange | プログラムチェンジ機能を実装したプラグイン |
おわりに
今回は VST3 SDK の入手方法とビルド方法を解説しました。次回 は VST3 SDK のドキュメントについて解説します。
-
このように専用のビルドディレクトリを作成して、その中で
cmakeコマンドを実行する方法をout-of-sourceビルドといいます。参考: https://qiita.com/osamu0329/items/7de2b190df3cfb4ad0ca ↩ -
<generator>に"Visual Studio 16 2019"を使用する場合は、ビルド対象のプラットフォームを指定するWin64のような Suffix を渡せません。この場合は-G "Visual Studio 16 2019" -A x64のように-Aオプションでプラットフォームを指定してビルドしてください。 ↩ -
Windows環境では、この他に各サンプルプラグインの静的リンクライブラリも生成されますが、ここでは無視します。 ↩
