プラグイン VST
言語と開発環境へ戻る。
プラグイン開発 概要
VST開発の初歩の記事を書いていましたが、AIが台頭してきた今、もっとわかりやすい実践的なVSTの初歩について書き直すことにしました。VST 過去の初歩がそのときの記事になります。過去の記事では、VSTは作れるものの、スタンドアローン版についても通常は作成しなければならないところが反映されていないので、二重で開発をしなければならない効率の悪い方法を示していました。ChatGPTのチカラも借りて、より正しいVST開発の初歩について、わかった手順を示したいと思います。あとSteinbergから提供されるVST_SDKもだいぶカタチが変わったので、Steinbergが提唱するやり方に沿う形にもなっていると思います。Mac版の開発については触れませんので、Mac版も並行して開発する場合の手順については、別のサイトの記事を参考にして下さい。それでも、ここで開発するWindows版のStandaloneアプリとVSTの並行開発は少なくともやらないといけなくて、macOSとの並行開発のコツは全く別のノウハウになりますので、無駄ではありません。macOSの開発環境も必ず必要ですし、winPCだけでは無理です。macOSだけでも無理なのです。両方が必要です。macOSのコンピューターにwin環境を立ち上げることは可能なのでコンピュータは1台あれば済むということはあるかもしれません。クロスプラットフォーム開発はそれはそれで別のノウハウが必要になります。
クロスプラットフォーム開発はおいておいたとして、StandalonアプリとVST開発の並行開発環境を構築するやり方をここでは紹介したいと思います。
まずは、VST開発をするにはSteinberg(YAMAHA)からVST_SDKを入手しましょう。2026夏現在は以下のアドレスから入手できます。
https://www.steinberg.net/developers/vstsdk/
上記サイトから、SDK Download VST 3 Audio Plug-Ins SDK (Format: zip, 124.2 MB)となっているリンクからダウンロードしてzipファイルを解凍して、得られるVST_SDKフォルダをC:¥Src¥に置いたとして解説します。C:¥Src¥でなくてもいいです。好きな場所においてください。VST_SDKを置いたフォルダパスを今後(VST_SDK_Root)と表現します。
(VST_SDK_Root)には二つのフォルダがあります。
- (VST_SDK_Root)\VST3_Project_Generator
- これはVisualStudioプロジェクト生成のためのツール
- (VST_SDK_Root)\vst3sdk
- こっちがVST開発に必要なSoftware Development Kitね
(VST_SDK_Root)\VST3_Project_Generator\Windows_x64\VST3_Project_Generator.exe
を起動します。Welcomeのタブでvst3sdkのフォルダとCMakeファイルのありかを設定します。あとからPreferencesタブからでも修正できます。
- vst3sdk:(VST_SDK_Root)\vst3sdk
- CMake:C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\bin\cmake.exe
このように設定しよう。VisualStudio2022以外を使っている人は、その環境に合わせて下さい。
まずPreferencesタブの設定をしようVendorにVSTを開発する組織の名前を入れよう。個人の場合でもなんか決めて入れよう。管理人はアプリ開発の組織にはYoneTechStudioという名称を使っています。E-Mailには公開してもいいメールアドレスを使おう。URLには作ったVSTの情報を提供するURLを記述しよう。SNSの記事のアドレスとかでもいいよね。そこで延々とリプライだけで情報を伝えるならね。C++Namespaceもわかりやすい固有の名称を入れた方がいいと思います。管理人ならVendorと同じ名称をいれるなぁ。以降は設定した値を(Namespace)と表現します。
そしたらCreate Plug-in Projectタブに戻って、以下の通り入力していこう
Name:開発するVSTの名称を入れよう英字大文字小文字表記でね。 Type:音を鳴らす系のVSTならInstrument、音を加工するだけならAudio Effectを選択 Use VSTGUIチェックボックス。GUIを保持する予定ならチェックを入れておこう。 macOS Deployment Target:デフォルト値でいいんじゃない?例 10.13 C++ Class Name:開発するVSTの名称でいいと思う。 BundleID:com.venderid.puluginnameのように全部小文字で設定しよう。venderid=Vendorに設定した値の大文字を使わない小文字版、pluginename=Nameに設定したVSTの名称の小文字版 Filename Prefix:これもNameと同じ値でNameに設定したVSTの名称でいいと思う。わかりやすくなるからね。 OutputDirectory:C:¥Users\(UserID)\source\repos ※これがVisualStudio2022のデフォルト値。好きな場所に作っていいですよ。 CMakeGenerator:Visual Studio 17 2022 CMakePlatform:x64
これでCreateボタンを押すとソリューションが生成されます。
したらば、VST3開発に必要な設定をしよう。
WindowsStartMenu→設定→システム→詳細設定→開発者モードをOnにしよう。OnにしたときにメッセージでるけどOKでいいよ。VST3のシンボリックリンクが使えるようになる。
次にCMakeList.txtを書き換えよう。
cmake_minimum_required(VERSION 3.14.0)
option(SMTG_ENABLE_VST3_PLUGIN_EXAMPLES "Enable VST 3 Plug-in Examples" OFF)
option(SMTG_ENABLE_VST3_HOSTING_EXAMPLES "Enable VST 3 Hosting Examples" OFF)
set(CMAKE_OSX_DEPLOYMENT_TARGET 10.13 CACHE STRING "")
set(vst3sdk_SOURCE_DIR "C:/Src/VST_SDK/vst3sdk")
if(NOT vst3sdk_SOURCE_DIR)
message(FATAL_ERROR "Path to VST3 SDK is empty!")
endif()
project(EmulatorY
# This is your plug-in version number. Change it here only.
# Version number symbols usable in C++ can be found in
# source/version.h and ${PROJECT_BINARY_DIR}/projectversion.h.
VERSION 1.0.0.0
DESCRIPTION "EmulatorY VST 3 Plug-in"
)
set(SMTG_VSTGUI_ROOT "${vst3sdk_SOURCE_DIR}")
add_subdirectory(${vst3sdk_SOURCE_DIR} ${PROJECT_BINARY_DIR}/vst3sdk)
smtg_enable_vst3_sdk()
# =============================================================================
# EmulatorY Core
# =============================================================================
add_library(EmulatorYCore STATIC
source/core/SamplerEngine.h
source/core/SamplerEngine.cpp
)
target_include_directories(EmulatorYCore
PUBLIC
${CMAKE_CURRENT_SOURCE_DIR}/source/core
)
target_compile_features(EmulatorYCore
PUBLIC
cxx_std_17
)
# =============================================================================
# EmulatorY VST3
# =============================================================================
smtg_add_vst3plugin(EmulatorY
source/version.h
source/EmulatorYcids.h
source/EmulatorYprocessor.h
source/EmulatorYprocessor.cpp
source/EmulatorYcontroller.h
source/EmulatorYcontroller.cpp
source/EmulatorYentry.cpp
)
#- VSTGUI Wanted ----
if(SMTG_ENABLE_VSTGUI_SUPPORT)
target_sources(EmulatorY
PRIVATE
resource/EmulatorYeditor.uidesc
)
target_link_libraries(EmulatorY
PRIVATE
vstgui_support
)
smtg_target_add_plugin_resources(EmulatorY
RESOURCES
"resource/EmulatorYeditor.uidesc"
)
endif(SMTG_ENABLE_VSTGUI_SUPPORT)
# -------------------
smtg_target_add_plugin_snapshots(EmulatorY
RESOURCES
resource/7A4ED0320F9D5F27BF654E3AACA29E97_snapshot.png
resource/7A4ED0320F9D5F27BF654E3AACA29E97_snapshot_2.0x.png
)
target_link_libraries(EmulatorY
PRIVATE
sdk
EmulatorYCore
)
smtg_target_configure_version_file(EmulatorY)
if(SMTG_MAC)
smtg_target_set_bundle(EmulatorY
BUNDLE_IDENTIFIER com.yonetechstudio.emulatory
COMPANY_NAME "YoneTechStduio"
)
smtg_target_set_debug_executable(EmulatorY
"/Applications/VST3PluginTestHost.app"
"--pluginfolder;$(BUILT_PRODUCTS_DIR)"
)
elseif(SMTG_WIN)
target_sources(EmulatorY
PRIVATE
resource/win32resource.rc
)
if(MSVC)
set_property(
DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
PROPERTY VS_STARTUP_PROJECT EmulatorY
)
smtg_target_set_debug_executable(EmulatorY
"$(ProgramW6432)/Steinberg/VST3PluginTestHost/VST3PluginTestHost.exe"
"--pluginfolder \"$(OutDir)/\""
)
endif()
endif(SMTG_MAC)
# =============================================================================
# EmulatorY Standalone
# =============================================================================
add_executable(EmulatorYStandalone WIN32
source/standalone/StandaloneMain.cpp
)
target_compile_features(EmulatorYStandalone
PRIVATE
cxx_std_17
)
target_link_libraries(EmulatorYStandalone
PRIVATE
EmulatorYCore
)
VSTeプログラミング初歩
- VST 過去の初歩
- VST サンプルファイルのビルド方法
- VSTe 何も音響処理をしない入力をそのまま出力する処理
- VSTe VST3PluginHostTestで動作確認
- VSTe FL STUDIOで動作確認
- VSTe VSTGUI inline UI Editor *.uidescファイル作成配置方法
- VSTe 操作するパラメータを管理するコードを覚える
- VSTe VSTGUI inline UI Editor 基本的な使用方法
- VSTe VSTGUI inline UI Editor を使わないで、Viewに出力音声波形を描画する方法
VSTライブラリ
■リファレンス熟読
言語と開発環境へ戻る。