Help us understand the problem. What is going on with this article?

VST3ホストを作ろう(3) 〜VST3 SDK 入門〜

目次

はじめに

 連載の第一回で解説したとおり、VST3 規格に対応したホストアプリケーションやプラグインを開発するには、 VST3 SDK を使用します。

 今回の記事では、 VST3 SDK の入手方法とビルド方法について紹介します。

 ちなみに、サンプルとして用意したホストアプリケーション Vst3SampleHost のプロジェクトには、 VST3 SDK を入手してビルドする仕組みがビルドスクリプトの中に含まれているので、 Vst3SampleHost をビルドするにあたっては、今回この記事で解説するビルド処理を自分で行なう必要はありません。

VST3 SDK の入手方法

 VST3 SDK を入手する方法は二つあります。

  1. Steinberg 社のサイトから VST3 SDK のパッケージをダウンロードする方法
  2. 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 ファイルをダウンロードします。

vst3_sdk_download_link.jpg

 zip ファイルがダウンロードできたら、これを好きな場所に展開します。
これで完了です。

github から VST3 SDK のリポジトリを clone する方法

 VST3 SDK は、 github 上にもホスティングされています。

 このリポジトリを以下の手順で clone します。ここでは、ユーザーのホームディレクトリ以下に develop ディレクトリを作成して、その中に VST3 SDK を clone します。

Windows環境(コマンドプロンプト)
cd "%HOMEDRIVE%%HOMEPATH%"
mkdir develop
cd develop
git clone --recursive https://github.com/steinbergmedia/vst3sdk
macOS環境(ターミナル)
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_SDKmy_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

CMakeコマンドの実行例
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 を利用するには、ホストアプリケーションやプラグインのプロジェクトファイルで以下の設定を行います。

  1. VST3 SDKのディレクトリをインクルードディレクトリに追加する。
    • zip 版の VST3 SDK では VST3_SDK ディレクトリ。
    • git 版の VST3 SDK では、clone した vst3sdk ディレクトリ。
  2. ビルドした静的リンクライブラリをリンク設定に追加する。

 これらの設定を行った上で、自身のソースファイル内で以下のように VST3 SDK のヘッダーファイルをインクルードし、ビルドを行うことで、VST3 SDK を利用するアプリケーションを開発できます。

includeの書き方の例
#include <public.sdk/source/vst/vsteditcontroller.h> 
#include <pluginterfaces/vst/ivstparameterchanges.h>

 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 のドキュメントについて解説します。


  1. このように専用のビルドディレクトリを作成して、その中で cmake コマンドを実行する方法を out-of-source ビルドといいます。参考: https://qiita.com/osamu0329/items/7de2b190df3cfb4ad0ca 

  2. <generator>"Visual Studio 16 2019" を使用する場合は、ビルド対象のプラットフォームを指定する Win64 のような Suffix を渡せません。この場合は -G "Visual Studio 16 2019" -A x64 のように -A オプションでプラットフォームを指定してビルドしてください。 

  3. Windows環境では、この他に各サンプルプラグインの静的リンクライブラリも生成されますが、ここでは無視します。 

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした