こんにちは。音楽もやっているエンジニア、亀山です。
Steinberg が提供する VST3 SDK を使うと、Cubase といった DAW 上で動作するソフトウェアである VST プラグインを開発することができます。今回は、VST プラグインの開発環境構築について書きます。
環境
- macOS Venture 13.5.2
- Xcode 15
- cmake 3.26.3
SDK の配置
(後述の submodule を利用する方法もオススメです)
- SDK を Steinberg のサイト よりダウンロードします
- 解凍して
~/vst3sdk
に配置
VST3_Project_Generator
SDK に付属してくる VST3_Project_Generator
を起動すると、プロジェクトを生成するためのアプリが起動します。
プラグインの名前などを入力すると、CMakeLists.txt が生成され、プロジェクトの生成が行われます。
ところが、CMake Generator を Xcode に指定すると、下記のようなエラーが発生します。
PhaseScriptExecution CMake\ PostBuild\ Rules /Users/ryohey/Repository/VST3Example/MIDIOutputExample/build/build/validator.build/Debug/Script-0FCC6575D9B49861AF65DEE7.sh (in target 'validator' from project 'MIDIOutputExample') cd /Users/ryohey/Repository/VST3Example/MIDIOutputExample /bin/sh -c /Users/ryohey/Repository/VST3Example/MIDIOutputExample/build/build/validator.build/Debug/Script-0FCC6575D9B49861AF65DEE7.sh /Users/ryohey/Repository/VST3Example/MIDIOutputExample/build/build/validator.build/Debug/Script-0FCC6575D9B49861AF65DEE7.sh: line 6: 27473 Killed: 9 /Users/ryohey/Repository/VST3Example/MIDIOutputExample/build/bin/Debug/validator -selftest Command PhaseScriptExecution failed with a nonzero exit code
CMakeLists.txt が出力された場所で cmake コマンドを使うとビルドができました。
cmake -B build cmake --build build
build/VST3/MIDIOutputExample.vst3
のように出力されます。サンプルで付属してくる adelay.vst3 なども入っていました。
ビルドすると自動的にに ~/Library/Audio/Plug-Ins/VST3
にシンボリックリンクが作られます。DAW の一種である REAPER を起動すると読み込んでくれました。
サンプルのビルド
SDK に付属してくるサンプルプロジェクトのビルドを行います。
cd ~/vst3sdk mkdir build cd build cmake -GXcode ../ xed .
これで Xcode プロジェクトが生成されます。しかし、ビルドすると次のようなエラーが発生しました。
/Users/ryohey/vst3sdk/build/bin/Debug/validator Killed: 9
validator の Build Phases の CMake PostBuild Rules で validator 自身を使っているために問題が起きているのかもしれません。下記のように一度成功として通るようにしてから一度ビルドし、exit 0;
を外してもう一度ビルドを実行すると成功するようになりました。
set -e
+ exit 0;
if test "$CONFIGURATION" = "Debug"; then :
同じように Project Generator で生成した Xcode プロジェクトでもエラーが発生するので、validator の Build Phases に exit 0;
を追加してビルドし、また外してビルドします。さらに MIDIOutputExample (プロジェクト名) のターゲットも同様に exit 0;
の追加、削除を行うとビルドできるようになりました。なかなか不便なので、もし解決法を知っている方がいたら教えてくれると助かります。set -e
を消しても良い気もします。
プロジェクト構成
ここまでは ~/vst3sdk
に SDK を配置して開発を行ってきました。しかし、チーム開発となるとこの方法では CMakeLists.txt にユーザー名を含む絶対パスが記述されるなど、よろしくない部分があります。そこで、プロジェクトのリポジトリに submodule として VST3 SDK を追加する方法がおすすめです。次のリポジトリを参考にしました。
できたプロジェクトをサンプルとして公開しましたので、ぜひご参考にしてください。
デバッグ
DAW で VST プラグインをロードし、Attach to process でデバッガにアタッチすることで、ブレークポイントで止めたりといったデバッグが可能になります。Xcode 上だけで開発が完結して便利ですね。