プラグイン VST
言語と開発環境へ戻る。
概要
SteinBergが提唱したDAW用のプラグイン構造で、SteinBergが提供するSDKを使って、プラグインDLL(*.dll)や上位機能のVST3(*.vst3)のようなファイルを生成し、DAWに読み込ませることで、拡張機能が実現できるといった仕組みです。
拡張機能には2種類あって、VSTi(iはinstrumentで機器というような意味だけど、ここでは楽器を意味する)とVSTe(eはeffectという意味)があります。VSTiは音を鳴らす機能を有します。シンセサイザーやサンプラーのような仕組みをもった機能をプログラムによって制作した場合にVSTiとなります。もう一つは、音声波形に対して、音響効果を与えるような機能を持ったプログラムを制作した場合にVSTeとなります。DAWからプラグインが受け取る情報とプラグインからDAWに情報を受け渡すしくみがSDKによって提供されています。VSTが発案されたのが、1996年ですが、2023年時点でもC++言語による開発方法のみが提供されています。
導入
- MicrosoftからVisual Studio 2022をインストールします。
- Windows版 Visual Studio 2022 Community が無償版になります。多くの人はこれを使うと思います。ダウンロードして起動するとインストールが始まります。何をインストールするか指示しなければなりませんが、VST作成にはC++開発環境だけが必要ですので、[C++によるデスクトップ開発]のところにチェックボックスに印を入れるだけで良いです。他の作業をしたくなったら、またVisual Studio Installerを起動して、追加していくことが出来ます。スタートメニューに項目があるので、そこからどうぞ。
- SteinBergのホームページからSDKをダウンロードします。
- https://www.steinberg.net/developers/から「VST 3 Audio Plug-ins SDK」をダウンロードします。2023年4月下旬時点ではvst-sdk_3.7.7_build-19_2022-12-12.zipがダウンロードされます。頻繁に更新はされているのですが、古い技術がまったく使えなくなるというようなことは少ないので最新版を使うとよいでしょう。古いものを使うということを推奨していないようです。現に古いモノへのリンクはなく入手は出来ません。直リンクは残っているので、URLを知っている場合は古いものが入手出来ます。大規模開発をチームでやっている場合は困ることもあるかもしれません。古いものは入手した側が管理しなければならないのでしょう。
- Windows版の場合はC:¥Program Files¥Common Files¥VST3というフォルダを作成します。
- ダウンロードしたファイルをC:¥SDK¥VST_SDK。C:¥SDK¥VST_SDK¥vst2sdk、C:¥SDK¥VST_SDK¥vst3sdk。となるように配置します。C:¥SDKの部分は任意の位置にすることが出来ます。好きな場所へどうぞ。
- 古いバージョンの場合。vst3sdkではなくVST3_SDKとなっています。vst2sdkもVST2_SDKとなっています。
- Visual Studio 2022 Community を起動します。ファーストアクションダイアログで「フォルダーを開く」を選択するか、ダイアログが開いていない場合はメニューの[ファイル]-[開く]-[フォルダ]を選択する。あるいは[Ctrl]+[Shift]+[Alt]+[O]をキー入力します。
- C:¥SDK¥VST_SDK¥VST3_SDKを開きます。
- とにかく、待ちます。いつまで?
- 出力Windowに「CMake生成が完了しました」みたいな表示が出るまで待ちます。
- 3.7.7では高速化のためだと思われますが、NinjaというCMakeビルドシステムを使うように指定されていますが、VisualStudio2022Communityでは正しく動作しませんでした。そこで、一度以下のようなエラーが表示されたら
重大度レベル コード 説明 プロジェクト ファイル 行 抑制状態 エラー CMake Error: Running 'C:/(任意*Default値=Program Files)/Microsoft Visual Studio/2022/Community/Common7/IDE/CommonExtensions/Microsoft/CMake/Ninja/ninja.exe' '-C' 'C:/(任意)/VST_SDK/vst3sdk/out/build/x64-Debug' '-t' 'recompact' failed with: ninja: error: build.ninja:3524: bad $-escape (literal $ must be written as $$) C:\(任意)\VST_SDK\vst3sdk\ ninja
- メニューの[プロジェクト]-[vstsdkのCMakeの設定]を開きます。そうするとCMakeSettings.jsonというタブが作られ、その詳細が表示されます。そのタブの下の方に高度な設定と表示というリンクがあるのでクリックするとさらに詳細が表示されます。その中にあるCMakeジェネレータを[Ninja]から[Visual Studio 17 2022 Win64]に変更します。そして保存をします。
- しばらくすると出力Windowに「CMake生成が完了しました」と表示されると思います。構成名がx64-Debug(既定値)のように後ろに日本語が付くことでエラーが発生するケースもあるそうです。ビルドルートの${name}と記載されている部分をx64-Debugに置き換えるとうまくいくようです。${projectDir}¥out¥build¥${name}を${projectDir}¥out¥build¥x64-Debugにするということです。その他のトラブルケースになった場合はわかりません。ご自分で対処なさってください。
- メニューの[ビルド]-[すべてビルド]を選択します。
- また、とにかく待ちます。いつまで?
- 出力Windowに「すべてビルド が成功しました。」と表示されるとよいです。
- C:¥(任意)¥VST_SDK¥vst3sdk¥out¥build¥x64-Debug¥lib¥Debugに*.libファイルが生成されていることが重要です。
- base.lib
- sdk.lib
- pluginterface.lib
- vstgui.lib
- vstgui_support.lib
- vstgui_uidescription.lib
全27ファイル
動作確認用アプリ
VSTの動作確認用のアプリが同梱されています。
- VST3PluginTestHost 64bit
- C:\(任意)\VST_SDK\vst3sdk\bin\Windows 64 bit\VST3PluginTestHost_x64_Installer_3.4.0.zip
- Generic_Lower_Latency_ASIO_Driver_64bit
- C:\(任意)\VST_SDK\vst3sdk\bin\Windows 64 bit\Generic_Lower_Latency_ASIO_Driver_64bit_Installer_1.0.20.9.zip
基礎
導入が終わった時点ではまだ準備はできていません。プロジェクトでSDKを使うという設定をしなければならないし、Visual Studio 2022で作成を始めると必ず通る道である基礎というものがあります。そこを見てみましょう。その先はそれぞれが歩みだせることでしょう。ほんとか?
自動生成手順(かなり無駄が多く肥大化するのでオススメ出来ない。)
- gitツールをダウンロードしてインストールする。インストールの仕方の説明書・一つの例は以下にあります。
- https://git-scm.com/download/winからダウンロードする。
- MathJaxをデバッグしてJavaScriptの理解を深める#デバッグ環境を整えるに手順が説明されています。
- CMakeツールをインストールする。
- https://cmake.org/download/からダウンロードしてインストールします。
- Git CMDを起動して、以下のコマンドを実行する。
git clone https://github.com/steinbergmedia/vst3projectgenerator.git mkdir build cd build cmake -G "Visual Studio 17 2022" ../vst3projectgenerator cmake --build .
- -Gオプションには以下のものが使えます。
- Visual Studio 16 2019
- Visual Studio 15 2017 [arch] "Win64" or "ARM"
- Visual Studio 14 2015 [arch] "Win64" or "ARM"
- Visual Studio 12 2013 [arch] "Win64" or "ARM"
- Visual Studio 11 2012 [arch] "Win64" or "ARM"
- Visual Studio 9 2008 [arch] "Win64" or "ARM"
- VST3ProjectGenerator\build\Debug\VST3_Project_GeneratorにVST3_Project_Generator.exeというジェネレータ実行ファイルができるので、これを使います。
- gitとCMakeを使わない場合は
- https://github.com/steinbergmedia/vst3projectgeneratorへアクセスする。ダウンロードする。
- 解凍する。
- 解凍したフォルダのvst3projectgenerator-masterフォルダをVisual Studio 2022 Communityで開く。
- CMakeLists.txtファイルがあるフォルダです。
- Visual Studio 2022 Communityのメニュー、[ビルド]-[すべてビルド]を選択します。
- vst3projectgenerator-master\out\build\x64-Debug\Debug\VST3_Project_GeneratorのVST3_Project_Generator.exeを使います。
- VST3_Project_Generator.exeを起動します。あ、結局CMakeいりますね。ダウンロードしてインストールして下さい。
- 起動したら最初にPreferencesの項目をうめうめします。
- 上側領域がCompany Informationです。Vendor名。E-Mail。URL。入力します。なんでもいいでしょう。
- 下側領域がPath Preferencesです。
- VST3_SDKにはVST_SDKのインストール先のパスを入力します。
- C:\(任意)\VST_SDK\vst3sdk
- CMake Exebutable PathにはCMake.exeへのパスを入力します。
- C:\(任意*規定ではProgram Files)\CMake\bin\cmake.exe
- 次にCreate Plugin Projectのタブへ移って、各項目を入力します。
- Name = CodeTester
- Type = Audio Effect Or Audio Instrument
- C++ClassName = MyPlugin
- Bundle ID = com.任意英字(プラグイン名).任意英字(プラグイン製造組織名)
- FilenamePrefix = 任意
- OutputDirectory = 任意
- CMake Generator = Visual Studio 17 2022
- CMake Platform = x64
- Createボタンを押します。
こつこつ手作業でやっていく手順
- Visual Studio 2022 Communityを起動します。
- ファーストステップダイアログで[新しいプロジェクトの作成]を選択します。
- [Windowsデスクトップウィザード]を選択します。dllを作成するプロジェクトにしたいからです。
- プロジェクト名を何かしら決めます。管理人はCodeTesterとしました。好きな単語でもなんでもいいでしょう。そして次へです。
- どうせ、適当なことをやってすぐ消すことになるし、深く考えない方が良いでしょう。本格的に世に出すモノを作る時はキャッチーな素晴らしい名前を考えた方がよろしいかと思います。とにかく素早く考えて、決めて、入力編集したら[次へ]を選択します。
- C:\User\(ユーザ名)\source\reposに保存され、ソリューション名も同じで「CodeTester」がプロジェクト名になりました。
- 表示されたダイアログでアプリケーションの種類を[ダイナミックリンクライブラリ(.dll)]にして、空のプロジェクトのチェックボックスにレ点を入れて[OK]ボタンを押します。
- これで、いよいよプロジェクトの編集が開始できますがまだ準備することがあります。プロジェクトの設定とか、メインプログラムの定型部分のコピーとか、モジュール定義の定型部分の設定とかです。やってみましょう。
- メニューの[プロジェクト]-[プロジェクト名(CodeTester)のプロパティ]を選択します。
- 表示されたダイアログで以下のように編集します。
- ▽構成プロパティ
- 詳細 - [ターゲットファイルの拡張子]=「.vst3」
- VC++ディレクトリ - [インクルードディレクトリ]=「C:\(任意)\VST_SDK\vst3sdk」を追記
- VC++ディレクトリ - [インクルードディレクトリ]=「C:\(任意)\VST_SDK\vst3sdk\vstgui4」を追記
- VC++ディレクトリ - [ ライブラリディレクトリ]=「C:\(任意)\VST_SDK\vst3sdk\out\build\x64-Debug\lib\Debug」を追記
- 古いバージョンの場合。vst3sdkではなくVST3_SDKとなっています。
- ▽C/C++
- 全般 - [SDLチェック]=「いいえ(/sdl-)」
- プリプロセッサ - [プリプロセッサの定義]=「VSTGUI_LIVE_EDITING=1」を追記
- プリプロセッサ - [プリプロセッサの定義]=「DEVELOPMENT=1」を追記
- ▽リンカー
- 入力 - [追加の依存ファイル]=「base.lib」を追記
- 入力 - [追加の依存ファイル]=「base.lib」を追記
- 入力 - [追加の依存ファイル]=「sdk.lib」を追記
- 入力 - [追加の依存ファイル]=「pluginterface.lib」を追記
- 入力 - [追加の依存ファイル]=「vst_gui.lib」を追記
- 入力 - [追加の依存ファイル]=「vst_support.lib」を追記
- 入力 - [追加の依存ファイル]=「vst_uidescription.lib」を追記
- 入力 - [モジュール定義ファイル]=「./任意.def」を追記、この項目は古いバージョンのSDKの時に必要になります。ファイル名は何でも良いですがこの後作るファイル名と同じである必要があります。
- 古いバージョンの場合*.defファイルを作ります。
ファイル名はなんでも良いです。ファイルの中身は以下のようにします。
EXPORTS GetPluginFactory
- GetPluginFactoryは外部に見せたい関数の名前になります。新しいSDKではプログラム内部で指定されています。
言語と開発環境へ戻る。