[2023/5/2: Twitterで頂いたすずむし様からのご指摘を元に,VST SDK ver. 3.7.7での動作確認ができたため修正。ご情報ありがとうございました。]
前々からやろうと思っていたWin11,VS2022,VST3.7 でのVST開発環境の構築にトライしてみたところ、とりあえず VST SDK ver. 3.7.7(もしくは ver. 3.7.3)を導入して VSTe を作成・正常動作するところまで確認できました。
基本的には、うつぼかずら様のWebサイトの記事「VST3プラグイン開発01 – VST3開発環境の準備」の手順に従うことで環境構築できました。
VST3プラグイン開発01 – VST3開発環境の準備 | C++でVST作り
しかし、Visual Studio 2022 を利用したり VST SDK の最新版を試したりする際に注意や対処が必要な箇所があったため,参考情報として残したいと思います。
検証環境
- Windows 11 Pro
- Microsoft Visual Studio Community 2022 (64 ビット)
- VST SDK
- ver. 3.7.7
- ver. 3.7.3
- 過去のバージョンのダウンロードリンクに関するスタインバーグの公式アナウンスは見当たりませんでしたが、以下のWebページでまとめてくださっています。
- VST SDKの各バージョンのリンク | C++でVST作り
エラーと対処方法
cmke: build.ninja でのエラー (ver. 3.7.7 で発生)
2023年5月2日現在の最新版である SDK 3.7.7 をダウンロードして設定し、SDKを展開してビルドしてみたところ、以下のエラーを確認しました。
SMTG_AddSMTGLibrary.cmake
を確認したところ、分岐の条件からWindowsでの問題かと思います。
また、"CMake fails with bad $-escape" ということで GitHub では本問題のIssueが作られています。
こちらの cmake のエラーは以下の方法で解決できました。
cmake/modules/SMTG_AddSMTGLibrary.cmake の ll.459 をコメントアウト
SDK展開時のビルドでは上記の問題に関係してファイル名に関するエラーがビルドで発生しました。
ただし、SDK展開時はビルド落ちしても VST3 Project Generator で作成したプロジェクトのビルドは可能との情報をTwitterでいただきました。
私の環境でも試したところ、今のところプラグインの動作には問題なくビルドできていることを確認できました*1。
atomic_fetch_add, atomic_int_least32_t に関するエラー (ver. 3.7.3で発生)
SDK ver. 3.7.3 のプラグインのプロジェクトのビルド時に発生しました。
"atomic_fetch_add" と "atomic_int_least32_t"が未定義というエラーです。
こちらの問題および対処方法は公式フォーラムでも指摘がありました。
また、 VST3の開発者向けポータルサイトでも紹介されています。Visual Studio 2022 を使うことで発生するエラーのようです。
Preparation on Windows - VST 3 Developer Portal
解決方法としては 3つありました。
- cmake のオプションで cmake -DSMTG_USE_STDATOMIC_H=OFF
- CMakeLists.txt に追記
- MSVCのときはSMTG_USE_STDATOMIC_HをOFFにする設定を書く
if (MSVC) set(SMTG_USE_STDATOMIC_H OFF CACHE BOOL "" FORCE) endif()
pluginterfaces\base\funknown.cpp
の90行目修正:#if
ディレクティブの行を書き換えることで,91行目の return atomic_fetch_add()の実行を常に避ける
#if SMTG_USE_STDATOMIC_H && 0 return atomic_fetch_add (reinterpret_cast<atomic_int_least32_t*> (&var), d) + d; #else
なお、ver. 3.7.7の場合、Progect Generator でプラグイン用のプロジェクトを生成すると上記のエラーは発生しませんでした。
実行権限に関するエラー
SDK ver. 3.7.3 のプラグインのプロジェクトのビルド時に set local 関連のエラーがでました。
こちらもフォーラムやポータルサイトで指摘があります。
Build Error: the Command "set local" - VST 3 SDK - Steinberg Forums
解決方法としては2つで、毎回管理者権限で実行するか、Windowsの開発者モードを利用すればよさそうです。
私の場合は開発者モードを On にすることでエラーを解決できました。
https://t.co/V6z5HwAjgQ
— Syrup 2/3 (@Syrup23rds) 2020年12月12日
ここを参照しながら進めているのだけど、VST SDK 3.7.1 と Visual Studio 2019 だとダメなのかね。ライブラリを作る(?)ところでエラーになる。CMake の画面もなんか違う。 pic.twitter.com/wlmofQKSzT
設定→更新とセキュリティ から開発者モードにするとmklinkでエラーが出ないと教えてもらった。なるほど。 pic.twitter.com/PTaQDCD5Hu
— aike (@aike1000) 2020年11月24日
まとめ
Windows11, Visual Studio 2022, VST SDK ver. 3.7.7 もしくは ver. 3.7.3 でVST3開発環境の構築しました。
当初、最新版のVST SDK ver. 3.7.7 を導入できずに時間をだいぶ割いてしまったので、Windowsで開発環境を構築する方は気をつけたほうがよいかと思います。
開発環境さえ整えば、冒頭の画像のようにエフェクタはサクッと作ることができました。VST 3 Project Generator を使うことでだいぶ楽になる印象です*2。