音楽制作用DAWのプラグイン仕様VST3について調べました。今回はVSTGUIのスタンドアロンアプリについての説明です。
この記事はVST3プラグインを書く人向けの内容です。
TL;DR
- VSTGUIはスタンドアロンで起動可能
- スタンドアロンアプリのサンプルが用意されている
- サンプルのビルドにはコツが必要
- ただしビルドできても簡単にスタンドアロンのシンセアプリが作れるわけではない
背景
VST3に付属のGUIライブラリVSTGUIには、DAWのプラグインとしてではなくスタンドアロンで起動するアプリ用のライブラリが用意されています。公式ドキュメントによるとスタンドアロンライブラリはプレビュー版で今後変わる可能性があるとのことですが、せっかくなので調べてみました。なお、確認はVST3SDK3.7.3、VSTGUI4.10.1でおこなっています。
VSTGUIにはスタンドアロンライブラリのサンプルプログラムも同梱されています。しかしながらVST3SDKと一緒にVSTGUIをビルドしてもこれらはビルドされず存在自体に気づきにくくなっています。そのあたりの状況についても説明します。
実はVSTGUIはVST3SDKと独立したライブラリとなっています。つまりVSTGUI単独でコンパイルしてライブラリとして利用することができます。また、ライセンスもVST3SDKがGPLv3または"Proprietary Steinberg VST 3"なのに対し、VSTGUIはVSTGUIライセンス(三条項BSDライセンス)となっています。
サンプルアプリ
VSTGUIスタンドアロンライブラリの公式サンプルアプリは以下の4種です。
simple_standalone
standalone
mandelbrot
Minesweeper
ビルド方法
VST3SDKとVSTGUIを同時にビルドする方法(NG)
たとえばWindowsの場合、コマンドプロンプトで以下のようにするとVST3SDKとVSTGUIがビルドされますが、前述のとおりこれではサンプルのスタンドアロンアプリはビルドされません。
> cd VST_SDK
> mkdir build
> cd build
> cmake -G "Visual Studio 15 2017 Win64" ..\vst3sdk
> cmake --build . --config Release
本来であれば以下のように指定すればサンプルアプリもビルドされるはずなのですが、
> cmake -DVSTGUI_STANDALONE_EXAMPLES=ON -G "Visual Studio 15 2017 Win64" ..\vst3sdk
VST_SDK\vst3sdk\cmake\modules\SMTG_VstGuiSupport.cmakeの中で以下のようにわざわざOFFに指定するマクロを定義しており、これの影響でコマンドラインの変数定義が無視されてしまいます。
macro(smtg_enable_vstgui_support)
set(VSTGUI_DISABLE_UNITTESTS 1)
set(VSTGUI_STANDALONE_EXAMPLES OFF)
set(VSTGUI_STANDALONE ON)
set(VSTGUI_TOOLS OFF)
VSTGUIを単独でビルドする方法
解決方法としては、VSTGUIを単独でビルドするのが簡単です。この場合、何も変数定義を指定しなくてもサンプルプログラムがビルド対象になります。
> cd VST_SDK\vst3sdk\vstgui4
> mkdir build
> cd build
> cmake -G "Visual Studio 15 2017 Win64" ..
> cmake --build . --config Release
この手順でビルドすると、base64codecspeed.exe、GFXTest.exe、uidesccompressor.exeといったツールも一緒にビルドされます。これらのツールもVST3SDKと一緒にビルドした場合は生成されません。
実行方法
単独起動の場合
前項まででプロジェクトファイルの生成とビルドができました。例えば以下の場所にある.exeファイルを実行するとスタンドアロンアプリが起動します。
VST_SDK\vst3sdk\vstgui4\build\Release\simple_standalone\
IDEから起動する場合
Visual Studioからソースコードを見ながら動作確認したい場合、プロジェクトファイルは以下の場所にあります。
VST_SDK\vst3sdk\vstgui4\build\vstgui\standalone\examples\simple_standalone\
スタンドアロンアプリからVST3SDKの利用
サンプルアプリを見る限り、スタンドアロンアプリからVST3SDKを使うことは想定されていないようです。つまりスタンドアロンのシンセアプリを作るには、簡易的でもVST3ホスト相当のものを作る必要があり、またそのままスタンドアロンシンセとして利用できるようなホストアプリのサンプルは提供されていません。
これはちょっと残念です。