Wizard Notes

Python, JavaScript を使った音楽信号分析の技術録、作曲活動に関する雑記

VST3開発環境の構築 (Windows11, Visual Studio 2022, VST SDK ver. 3.7)

[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 の最新版を試したりする際に注意や対処が必要な箇所があったため,参考情報として残したいと思います。

検証環境

エラーと対処方法

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が作られています。

github.com

こちらの 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"が未定義というエラーです。

こちらの問題および対処方法は公式フォーラムでも指摘がありました。

Pluginterfaces.lib compilation error (win 10, VS 2022) - #4 by Mike737 - VST 3 SDK - Steinberg Forums

また、 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 にすることでエラーを解決できました。

まとめ

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

関連Webサイト

*1:ただし、ver 3.7.3 のビルドで生成されていた vst3格納フォルダからプロジェクトのプラグインへのリンクが生成されていません

*2:VST実装の一連の流れを理解しておく必要があるかと思います。