「プラグイン VST」の版間の差分

提供:yonewiki
編集の要約なし
36行目: 36行目:




 まずPreferencesタブの設定をしようVendorにVSTを開発する組織の名前を入れよう。個人の場合でもなんか決めて入れよう。管理人はアプリ開発の組織にはYoneTechStudioという名称を使っています。E-Mailには公開してもいいメールアドレスを使おう。URLには作ったVSTの情報を提供するURLを記述しよう。SNSの記事のアドレスとかでもいいよね。そこで延々とリプライだけで情報を伝えるならね。C++Namespaceもわかりやすい固有の名称を入れた方がいいと思います。管理人ならVendorと同じ名称をいれるなぁ。以降は設定した値を(Namespace)と表現します。
 まずPreferencesタブの設定をしよう
*VendorにVSTを開発する組織の名前を入れよう。個人の場合でもなんか決めて入れよう。管理人はアプリ開発の組織にはYoneTechStudioという名称を使っています。
*E-Mailには公開してもいいメールアドレスを使おう。
*URLには作ったVSTの情報を提供するURLを記述しよう。SNSの記事のアドレスとかでもいいよね。そこで延々とリプライだけで情報を伝えるならね。
*C++Namespaceもわかりやすい固有の名称を入れた方がいいと思います。管理人ならVendorと同じ名称をいれるなぁ。以降は設定した値を(Namespace)と表現します。




 そしたらCreate Plug-in Projectタブに戻って、以下の通り入力していこう
 そしたらCreate Plug-in Projectタブに戻って、以下の通り入力していこう


Name:開発するVSTの名称を入れよう英字大文字小文字表記でね。
*Name:開発するVSTの名称を入れよう英字大文字小文字表記でね。
Type:音を鳴らす系のVSTならInstrument、音を加工するだけならAudio Effectを選択
*Type:音を鳴らす系のVSTならInstrument、音を加工するだけならAudio Effectを選択
Use VSTGUIチェックボックス。GUIを保持する予定ならチェックを入れておこう。
*Use VSTGUIチェックボックス。GUIを保持する予定ならチェックを入れておこう。
macOS Deployment Target:デフォルト値でいいんじゃない?例 10.13
*macOS Deployment Target:デフォルト値でいいんじゃない?例 10.13
C++ Class Name:開発するVSTの名称でいいと思う。
*C++ Class Name:開発するVSTの名称でいいと思う。
BundleID:com.venderid.puluginnameのように全部小文字で設定しよう。venderid=Vendorに設定した値の大文字を使わない小文字版、pluginename=Nameに設定したVSTの名称の小文字版
*BundleID:com.venderid.puluginnameのように全部小文字で設定しよう。venderid=Vendorに設定した値の大文字を使わない小文字版、pluginename=Nameに設定したVSTの名称の小文字版
Filename Prefix:これもNameと同じ値でNameに設定したVSTの名称でいいと思う。わかりやすくなるからね。
*Filename Prefix:これもNameと同じ値でNameに設定したVSTの名称でいいと思う。わかりやすくなるからね。
OutputDirectory:C:¥Users\(UserID)\source\repos ※これがVisualStudio2022のデフォルト値。好きな場所に作っていいですよ。
*OutputDirectory:C:¥Users\(UserID)\source\repos ※これがVisualStudio2022のデフォルト値。好きな場所に作っていいですよ。
CMakeGenerator:Visual Studio 17 2022
*CMakeGenerator:Visual Studio 17 2022
CMakePlatform:x64
*CMakePlatform:x64




72行目: 76行目:
  set(CMAKE_OSX_DEPLOYMENT_TARGET 10.13 CACHE STRING "")
  set(CMAKE_OSX_DEPLOYMENT_TARGET 10.13 CACHE STRING "")
   
   
  set(vst3sdk_SOURCE_DIR "C:/Src/VST_SDK/vst3sdk")
  set(vst3sdk_SOURCE_DIR "(VST_SDK_Root)/vst3sdk")
  if(NOT vst3sdk_SOURCE_DIR)
  if(NOT vst3sdk_SOURCE_DIR)
     message(FATAL_ERROR "Path to VST3 SDK is empty!")
     message(FATAL_ERROR "Path to VST3 SDK is empty!")
82行目: 86行目:
     # source/version.h and ${PROJECT_BINARY_DIR}/projectversion.h.
     # source/version.h and ${PROJECT_BINARY_DIR}/projectversion.h.
     VERSION 1.0.0.0
     VERSION 1.0.0.0
     DESCRIPTION "EmulatorY VST 3 Plug-in"
     DESCRIPTION "(PluginName) VST 3 Plug-in"
  )
  )
   
   
90行目: 94行目:
  smtg_enable_vst3_sdk()
  smtg_enable_vst3_sdk()
   
   
   
 
  <span style="font-weight: bold;">
  # =============================================================================
  # =============================================================================
  # EmulatorY Core
  # (PluginName) Core
  # =============================================================================  
  # =============================================================================  
   
   
  add_library(EmulatorYCore STATIC
  add_library((PluginName)Core STATIC
     source/core/SamplerEngine.h
     source/core/SamplerEngine.h
     source/core/SamplerEngine.cpp
     source/core/SamplerEngine.cpp
  )
  )
   
   
  target_include_directories(EmulatorYCore
  target_include_directories((PluginName)Core
     PUBLIC
     PUBLIC
         ${CMAKE_CURRENT_SOURCE_DIR}/source/core
         ${CMAKE_CURRENT_SOURCE_DIR}/source/core
  )
  )
   
   
  target_compile_features(EmulatorYCore
  target_compile_features((PluginName)Core
     PUBLIC
     PUBLIC
         cxx_std_17
         cxx_std_17
112行目: 117行目:
   
   
  # =============================================================================
  # =============================================================================
  # EmulatorY VST3
  # (PluginName) VST3
  # =============================================================================
  # =============================================================================
   
  </span>
  smtg_add_vst3plugin(EmulatorY
  smtg_add_vst3plugin((PluginName)
     source/version.h
     source/version.h
     source/EmulatorYcids.h
     source/(PluginName)cids.h
     source/EmulatorYprocessor.h
     source/(PluginName)processor.h
     source/EmulatorYprocessor.cpp
     source/(PluginName)processor.cpp
     source/EmulatorYcontroller.h
     source/(PluginName)controller.h
     source/EmulatorYcontroller.cpp
     source/(PluginName)controller.cpp
     source/EmulatorYentry.cpp
     source/(PluginName)entry.cpp
  )
  )
   
   
  #- VSTGUI Wanted ----
  #- VSTGUI Wanted ----
  if(SMTG_ENABLE_VSTGUI_SUPPORT)
  if(SMTG_ENABLE_VSTGUI_SUPPORT)
     target_sources(EmulatorY
     target_sources((PluginName)
         PRIVATE
         PRIVATE
             resource/EmulatorYeditor.uidesc
             resource/(PluginName)editor.uidesc
     )
     )
   
   
     target_link_libraries(EmulatorY
     target_link_libraries((PluginName)
         PRIVATE
         PRIVATE
             vstgui_support
             vstgui_support
     )
     )
   
   
     smtg_target_add_plugin_resources(EmulatorY
     smtg_target_add_plugin_resources((PluginName)
         RESOURCES
         RESOURCES
             "resource/EmulatorYeditor.uidesc"
             "resource/(PluginName)editor.uidesc"
     )
     )
  endif(SMTG_ENABLE_VSTGUI_SUPPORT)
  endif(SMTG_ENABLE_VSTGUI_SUPPORT)
  # -------------------
  # -------------------
   
   
  smtg_target_add_plugin_snapshots(EmulatorY
  smtg_target_add_plugin_snapshots((PluginName)
     RESOURCES
     RESOURCES
         resource/7A4ED0320F9D5F27BF654E3AACA29E97_snapshot.png
         resource/7A4ED0320F9D5F27BF654E3AACA29E97_snapshot.png
150行目: 155行目:
  )
  )
   
   
  target_link_libraries(EmulatorY
  target_link_libraries((PluginName)
     PRIVATE
     PRIVATE
         sdk
         sdk
         EmulatorYCore
         (PluginName)Core
  )
  )
   
   
  smtg_target_configure_version_file(EmulatorY)
  smtg_target_configure_version_file((PluginName))
   
   
  if(SMTG_MAC)
  if(SMTG_MAC)
   
   
     smtg_target_set_bundle(EmulatorY
     smtg_target_set_bundle((PluginName)
         BUNDLE_IDENTIFIER com.yonetechstudio.emulatory
         BUNDLE_IDENTIFIER com.(venderid).(pluginname)
         COMPANY_NAME "YoneTechStduio"
         COMPANY_NAME "(VenderID)"
     )
     )
   
   
     smtg_target_set_debug_executable(EmulatorY
     smtg_target_set_debug_executable((PluginName)
         "/Applications/VST3PluginTestHost.app"
         "/Applications/VST3PluginTestHost.app"
         "--pluginfolder;$(BUILT_PRODUCTS_DIR)"
         "--pluginfolder;$(BUILT_PRODUCTS_DIR)"
172行目: 177行目:
  elseif(SMTG_WIN)
  elseif(SMTG_WIN)
   
   
     target_sources(EmulatorY
     target_sources((PluginName)
         PRIVATE
         PRIVATE
             resource/win32resource.rc
             resource/win32resource.rc
181行目: 186行目:
         set_property(
         set_property(
             DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
             DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
             PROPERTY VS_STARTUP_PROJECT EmulatorY
             PROPERTY VS_STARTUP_PROJECT (PluginName)
         )
         )
   
   
         smtg_target_set_debug_executable(EmulatorY
         smtg_target_set_debug_executable((PluginName)
             "$(ProgramW6432)/Steinberg/VST3PluginTestHost/VST3PluginTestHost.exe"
             "$(ProgramW6432)/Steinberg/VST3PluginTestHost/VST3PluginTestHost.exe"
             "--pluginfolder \"$(OutDir)/\""
             "--pluginfolder \"$(OutDir)/\""
193行目: 198行目:
  endif(SMTG_MAC)
  endif(SMTG_MAC)
   
   
   
  <span style="font-weight: bold;">
  # =============================================================================
  # =============================================================================
  # EmulatorY Standalone
  # (PluginName) Standalone
  # =============================================================================  
  # =============================================================================  
   
   
  add_executable(EmulatorYStandalone WIN32
  add_executable((PluginName)Standalone WIN32
     source/standalone/StandaloneMain.cpp
     source/standalone/StandaloneMain.cpp
  )
  )
   
   
  target_compile_features(EmulatorYStandalone
  target_compile_features((PluginName)Standalone
     PRIVATE
     PRIVATE
         cxx_std_17
         cxx_std_17
  )
  )
   
   
  target_link_libraries(EmulatorYStandalone
  target_link_libraries((PluginName)Standalone
     PRIVATE
     PRIVATE
         EmulatorYCore
         (PluginName)Core
  )
  )
</span>
   
   
 
 

2026年9月13日 (日) 14:04時点における版

言語と開発環境へ戻る。

プラグイン開発 概要

 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 "(VST_SDK_Root)/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 "(PluginName) VST 3 Plug-in"
)

set(SMTG_VSTGUI_ROOT "${vst3sdk_SOURCE_DIR}") 

add_subdirectory(${vst3sdk_SOURCE_DIR} ${PROJECT_BINARY_DIR}/vst3sdk)
smtg_enable_vst3_sdk()

 
# =============================================================================
# (PluginName) Core
# ============================================================================= 

add_library((PluginName)Core STATIC
    source/core/SamplerEngine.h
    source/core/SamplerEngine.cpp
)

target_include_directories((PluginName)Core
    PUBLIC
        ${CMAKE_CURRENT_SOURCE_DIR}/source/core
)

target_compile_features((PluginName)Core
    PUBLIC
        cxx_std_17
)


# =============================================================================
# (PluginName) VST3
# =============================================================================
 
smtg_add_vst3plugin((PluginName)
    source/version.h
    source/(PluginName)cids.h
    source/(PluginName)processor.h
    source/(PluginName)processor.cpp
    source/(PluginName)controller.h
    source/(PluginName)controller.cpp
    source/(PluginName)entry.cpp
)

#- VSTGUI Wanted ----
if(SMTG_ENABLE_VSTGUI_SUPPORT)
    target_sources((PluginName)
        PRIVATE
            resource/(PluginName)editor.uidesc
    )

    target_link_libraries((PluginName)
        PRIVATE
            vstgui_support
    )

    smtg_target_add_plugin_resources((PluginName)
        RESOURCES
            "resource/(PluginName)editor.uidesc"
    )
endif(SMTG_ENABLE_VSTGUI_SUPPORT)
# -------------------

smtg_target_add_plugin_snapshots((PluginName)
    RESOURCES
        resource/7A4ED0320F9D5F27BF654E3AACA29E97_snapshot.png
        resource/7A4ED0320F9D5F27BF654E3AACA29E97_snapshot_2.0x.png
)

target_link_libraries((PluginName)
    PRIVATE
        sdk
        (PluginName)Core
)

smtg_target_configure_version_file((PluginName))

if(SMTG_MAC)

    smtg_target_set_bundle((PluginName)
        BUNDLE_IDENTIFIER com.(venderid).(pluginname)
        COMPANY_NAME "(VenderID)"
    )

    smtg_target_set_debug_executable((PluginName)
        "/Applications/VST3PluginTestHost.app"
        "--pluginfolder;$(BUILT_PRODUCTS_DIR)"
    )

elseif(SMTG_WIN)

    target_sources((PluginName)
        PRIVATE
            resource/win32resource.rc
    )

    if(MSVC)

        set_property(
            DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
            PROPERTY VS_STARTUP_PROJECT (PluginName)
        )

        smtg_target_set_debug_executable((PluginName)
            "$(ProgramW6432)/Steinberg/VST3PluginTestHost/VST3PluginTestHost.exe"
            "--pluginfolder \"$(OutDir)/\""
        )

    endif()

endif(SMTG_MAC)


# =============================================================================
# (PluginName) Standalone
# ============================================================================= 

add_executable((PluginName)Standalone WIN32
    source/standalone/StandaloneMain.cpp
)

target_compile_features((PluginName)Standalone
    PRIVATE
        cxx_std_17
)

target_link_libraries((PluginName)Standalone
    PRIVATE
        (PluginName)Core
)


 

VSTeプログラミング初歩

 

VSTライブラリ

■リファレンス熟読


 

言語と開発環境へ戻る。