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

提供:yonewiki
 
(同じ利用者による、間の20版が非表示)
1行目: 1行目:
[[メインページ#言語と開発環境|言語と開発環境]]へ戻る。
[[メインページ#言語と開発環境|言語と開発環境]]へ戻る。
== '''概要''' ==
== '''プラグイン開発 概要''' ==
 SteinBergが提唱したDAW用のプラグイン構造で、SteinBergが提供するSDKを使って、プラグインDLL(*.dll)や上位機能のVST3(*.vst3)のようなファイルを生成し、DAWに読み込ませることで、拡張機能が実現できるといった仕組みです。
 VST開発の初歩の記事を書いていましたが、AIが台頭してきた今、もっとわかりやすい実践的なVSTの初歩について書き直すことにしました。[[VST 過去の初歩]]がそのときの記事になります。過去の記事では、VSTは作れるものの、スタンドアローン版についても通常は作成しなければならないところが反映されていないので、二重で開発をしなければならない効率の悪い方法を示していました。ChatGPTのチカラも借りて、より正しいVST開発の初歩について、わかった手順を示したいと思います。あとSteinbergから提供されるVST_SDKもだいぶカタチが変わったので、Steinbergが提唱するやり方に沿う形にもなっていると思います。Mac版の開発については触れませんので、Mac版も並行して開発する場合の手順については、別のサイトの記事を参考にして下さい。それでも、ここで開発するWindows版のStandaloneアプリとVSTの並行開発は少なくともやらないといけなくて、macOSとの並行開発のコツは全く別のノウハウになりますので、無駄ではありません。macOSの開発環境も必ず必要ですし、winPCだけでは無理です。macOSだけでも無理なのです。両方が必要です。macOSのコンピューターにwin環境を立ち上げることは可能なのでコンピュータは1台あれば済むということはあるかもしれません。クロスプラットフォーム開発はそれはそれで別のノウハウが必要になります。




 拡張機能には2種類あって、VSTi(iはinstrumentで機器というような意味だけど、ここでは楽器を意味する)とVSTe(eはeffectという意味)があります。VSTiは音を鳴らす機能を有します。シンセサイザーやサンプラーのような仕組みをもった機能をプログラムによって制作した場合にVSTiとなります。もう一つは、音声波形に対して、音響効果を与えるような機能を持ったプログラムを制作した場合にVSTeとなります。DAWからプラグインが受け取る情報とプラグインからDAWに情報を受け渡すしくみがSDKによって提供されています。VSTが発案されたのが、1996年ですが、2023年時点でもC++言語による開発方法のみが提供されています。
 クロスプラットフォーム開発はおいておいたとして、StandaloneアプリとVST開発の並行開発環境を構築するやり方をここでは紹介したいと思います。




== '''導入''' ==
 まずは、VST開発をするにはSteinberg(YAMAHA)からVST_SDKを入手しましょう。2026夏現在は以下のアドレスから入手できます。
*MicrosoftからVisual Studio 2022をインストールします。
: [https://visualstudio.microsoft.com/ja/ https://visualstudio.microsoft.com/ja/]


: Windows版 Visual Studio 2022 Community が無償版になります。多くの人はこれを使うと思います。ダウンロードして起動するとインストールが始まります。何をインストールするか指示しなければなりませんが、VST作成にはC++開発環境だけが必要ですので、[C++によるデスクトップ開発]のところにチェックボックスに印を入れるだけで良いです。他の作業をしたくなったら、またVisual Studio Installerを起動して、追加していくことが出来ます。スタートメニューに項目があるので、そこからどうぞ。


[https://www.steinberg.net/developers/vstsdk/ https://www.steinberg.net/developers/vstsdk/]


*SteinBergのホームページからSDKをダウンロードします。
: [https://www.steinberg.net/developers/ 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を知っている場合は古いものが入手出来ます。大規模開発をチームでやっている場合は困ることもあるかもしれません。古いものは入手した側が管理しなければならないのでしょう。


 上記サイトから、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)と表現します。


*Windows版の場合はC:¥Program Files¥Common Files¥VST3というフォルダを作成します。


 (VST_SDK_Root)には二つのフォルダがあります。


*ダウンロードしたファイルをC:¥SDK¥VST_SDK。C:¥SDK¥VST_SDK¥vst2sdk、C:¥SDK¥VST_SDK¥vst3sdk。となるように配置します。C:¥SDKの部分は任意の位置にすることが出来ます。好きな場所へどうぞ。
*(VST_SDK_Root)\VST3_Project_Generator
:古いバージョンの場合。vst3sdkではなくVST3_SDKとなっています。vst2sdkもVST2_SDKとなっています。
:これはVisualStudioプロジェクト生成のためのツール
*(VST_SDK_Root)\vst3sdk
:こっちがVST開発に必要なSoftware Development Kitね


*Visual Studio 2022 Community を起動します。ファーストアクションダイアログで「フォルダーを開く」を選択するか、ダイアログが開いていない場合はメニューの[ファイル]-[開く]-[フォルダ]を選択する。あるいは[Ctrl]+[Shift]+[Alt]+[O]をキー入力します。


 (VST_SDK_Root)\VST3_Project_Generator\Windows_x64\VST3_Project_Generator.exe


*C:¥SDK¥VST_SDK¥vst3sdkを開きます。


 を起動します。Welcomeのタブでvst3sdkのフォルダとCMakeファイルのありかを設定します。あとからPreferencesタブからでも修正できます。


*とにかく、待ちます。いつまで?
: 出力Windowに「CMake生成が完了しました」みたいな表示が出るまで待ちます。
: 3.7.7では高速化のためだと思われますが、NinjaというCMakeビルドシステムを使うように指定されていますが、VisualStudio2022Communityでは正しく動作しませんでした。そこで、一度以下のようなエラーが表示されたら


*vst3sdk:(VST_SDK_Root)\vst3sdk
*CMake:C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\bin\cmake.exe


重大度レベル コード 説明 プロジェクト ファイル 行 抑制状態
エラー 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


 このように設定しよう。VisualStudio2022以外を使っている人は、その環境に合わせて下さい。


: メニューの[プロジェクト]-[vstsdkのCMakeの設定]を開きます。そうするとCMakeSettings.jsonというタブが作られ、その詳細が表示されます。そのタブの下の方に高度な設定と表示というリンクがあるのでクリックするとさらに詳細が表示されます。その中にあるCMakeジェネレータを[Ninja]から[Visual Studio 17 2022 Win64]に変更します。そして保存をします。


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


: しばらくすると出力Windowに「CMake生成が完了しました」と表示されると思います。構成名がx64-Debug(既定値)のように後ろに日本語が付くことでエラーが発生するケースもあるそうです。ビルドルートの${name}と記載されている部分をx64-Debugに置き換えるとうまくいくようです。${projectDir}¥out¥build¥${name}を${projectDir}¥out¥build¥x64-Debugにするということです。その他のトラブルケースになった場合はわかりません。ご自分で対処なさってください。


 そしたら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


*また、とにかく待ちます。いつまで?
: 出力Windowに「すべてビルド が成功しました。」と表示されるとよいです。


 これでCreateボタンを押すとソリューションが生成されます。


*C:¥(任意)¥VST_SDK¥vst3sdk¥out¥build¥x64-Debug¥lib¥Debugに*.libファイルが生成されていることが重要です。
:*base.lib
:*sdk.lib
:*sdk_common.lib
:*pluginterface.lib
:*vstgui.lib
:*vstgui_support.lib
:*vstgui_uidescription.lib
全27ファイル.バージョンによって数は異なるそうな。


 したらば、VST3開発に必要な設定をしよう。


■CMakeの設定規定値
*構成 x64-Debug
:*全般
::*構成名
:::x64-Debug
::*構成の種類
:::Debug
::*ツールセット
:::msvc_x64_x64
::*CMakeツールチェーンファイル
:::None
::*ツールセット
:::msvc_x64_x64
:*コマンド引数
::*CMakeコマンド引数
:::None
::*ビルドコマンド引数
:::None
::*CTestコマンド引数
:::None
:*CMake変数とキャッシュ
<table style="width: 100%; text-align: left; border-collapse: collapse; border-spacing: 0;">
<tr style=" background: #778ca3; border-right: solid 1px #778ca3; color: #ffffff;">
  <th style="width: 400px;">名前</th>
  <th>値</th>
  </tr>
<tr>
  <td>CMAKE_BUILD_TYPE</td>
  <td>Debug</td>
</tr>
<tr style=" background: #dddddd;">
  <td>VSTGUI_ENABLE_DEPRECATED_METHODS</td>
  <td>[レ]</td>
</tr>
<tr>
  <td>SMTG_USE_STATIC_CRT</td>
  <td>[ ]</td>
</tr>
<tr style=" background: #dddddd;">
  <td>SMTG_RUN_VST_VALIDATOR</td>
  <td>[レ]</td>
</tr>
<tr>
  <td>SMTG_RENAME_ASSERT</td>
  <td>[ ]</td>
</tr>
<tr style=" background: #dddddd;">
  <td>SMTG_PLUGIN_TARGET_USER_PROGRAM_FILES_COMMON</td>
  <td>[レ]</td>
</tr>
<tr>
  <td>SMTG_PLUGIN_TARGET_USER_PATH</td>
  <td>None</td>
</tr>
<tr style=" background: #dddddd;">
  <td>SMTG_MDA_VST3_VST2_COMPATIBLE</td>
  <td>[レ]</td>
</tr>
<tr>
  <td>SMTG_JACK_SDK_PATH</td>
  <td>None</td>
</tr>
<tr style=" background: #dddddd;">
  <td>SMTG_ENABLE_VSTGUI_SUPPORT</td>
  <td>[レ]</td>
</tr>
<tr>
  <td>SMTG_ENABLE_VST3_PLUGIN_EXAMPLES</td>
  <td>[レ]</td>
</tr>
<tr style=" background: #dddddd;">
  <td>SMTG_ENABLE_VST3_HOSTING_EXAMPLES</td>
  <td>[レ]</td>
</tr>
<tr>
  <td>SMTG_ENABLE_TARGET_VARS_LOG</td>
  <td>[レ]</td>
</tr>
<tr style=" background: #dddddd;">
  <td>SMTG_ENABLE_ADDRESS_SANITIZER</td>
  <td>[ ]</td>
</tr>
<tr>
  <td>VSTGUI_ENABLE_OPENGL_SUPPORT</td>
  <td>[レ]</td>
</tr>
<tr style=" background: #dddddd;">
  <td>SMTG_CXX_STANDARD</td>
  <td>None</td>
</tr>
<tr>
  <td>SMTG_CREATE_VST2_AGAIN_SAMPLE_VERSION</td>
  <td>[ ]</td>
</tr>
<tr style=" background: #dddddd;">
  <td>SMTG_CREATE_PLUGIN_LINK</td>
  <td>[レ]</td>
</tr>
<tr>
  <td>SMTG_CREATE_MODULE_INFO</td>
  <td>[レ]</td>
</tr>
<tr style=" background: #dddddd;">
  <td>SMTG_CREATE_BUNDLE_FOR_WINDOWS</td>
  <td>[レ]</td>
</tr>
<tr>
  <td>SMTG_ADD_VST3_UTILITIES</td>
  <td>[レ]</td>
</tr>
<tr style=" background: #dddddd;">
  <td>SMTG_CREATE_BUNDLE_FOR_WINDOWS</td>
  <td>[レ]</td>
</tr>
<tr>
  <td>SMTG_AAX_SDK_PATH</td>
  <td>None</td>
</tr>
<tr style=" background: #dddddd;">
  <td>LIBJACK_libjackserver_LIBRARY</td>
  <td>LIBJACK_libjackserver_LIBRARY-NOTFOUND</td>
</tr>
<tr>
  <td>LIBJACK_libjack_LIBRARY</td>
  <td>LIBJACK_libjack_LIBRARY-NOTFOUND</td>
</tr>
<tr style=" background: #dddddd;">
  <td>LIBJACK_INCLUDE_DIR</td>
  <td>LIBJACK_INCLUDE_DIR-NOTFOUND</td>
</tr>
<tr>
  <td>CMAKE_OSX_DEPLOYMENT_TARGET</td>
  <td>10.13</td>
</tr>
<tr style=" background: #dddddd;">
  <td>CMAKE_MAKE_PROGRAM</td>
  <td>C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\IDE\CommonExtensions/Microsoft/CMake/Ninja/ninja.exe</td>
</tr>
<tr>
  <td>CMAKE_INSTALL_PREFIX</td>
  <td>C:\(任意)\VST_SDK\vst3sdk\out\install\x64-Debug</td>
</tr>
<tr style=" background: #dddddd;">
  <td>CMAKE_EXPORT_COMPILE_COMMANDS</td>
  <td>ON</td>
</tr>
<tr>
  <td>SMTG_CUSTOM_BINARY_LOCATION</td>
  <td>None</td>
</tr>
<tr style=" background: #dddddd;">
  <td>VSTGUI_ENABLE_XMLPARSER</td>
  <td>[レ]</td>
</tr>
</table>
:*詳細設定
::*CMakeジェネレータ
:::Ninja
::*IntelliSenseモード
:::選択されていません
::*インストールディレクトリ
:::${projectDir}\out\install\${name}
::*CMake実行可能ファイル
:::None


 WindowsStartMenu→設定→システム→詳細設定→開発者モードをOnにしよう。OnにしたときにメッセージでるけどOKでいいよ。VST3のシンボリックリンクが使えるようになる。




 次にC:¥Users\(UserID)\source\repos\(PluginName)\CMakeList.txtを書き換えよう。太字部分を追記


 


== '''動作確認用アプリ''' ==
cmake_minimum_required(VERSION 3.14.0)
 VSTの動作確認用のアプリが同梱されています。
*VST3PluginTestHost 64bit
option(SMTG_ENABLE_VST3_PLUGIN_EXAMPLES "Enable VST 3 Plug-in Examples" OFF)
:C:\(任意)\VST_SDK\vst3sdk\bin\Windows 64 bit\VST3PluginTestHost_x64_Installer_3.4.0.zip
option(SMTG_ENABLE_VST3_HOSTING_EXAMPLES "Enable VST 3 Hosting Examples" OFF)
*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
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((PluginName)
    # 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()
<span style="font-weight: bold;">
# =============================================================================
# (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
# =============================================================================
</span>
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)
<span style="font-weight: bold;">
# =============================================================================
# (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
)
</span>




== '''基礎''' ==
 そしてsourceファイルを追加しよう
 導入が終わった時点ではまだ準備はできていません。プロジェクトでSDKを使うという設定をしなければならないし、Visual Studio 2022で作成を始めると必ず通る道である基礎というものがあります。そこを見てみましょう。その先はそれぞれが歩みだせることでしょう。ほんとか?


 


=== '''自動生成手順(かなり無駄が多く肥大化するのでオススメ出来ない。)'''===
C:¥Users\(UserID)\source\repos\(PluginName)\source\core\SamplerEngine.h
 おすすめ出来ないとは書きましたが、入門のときは最小構成で全てを理解していった方が良いというのと何度もトライするのに巨大なファイルサイズになるのはどうなのかなと思っただけの事です。本格的にプロジェクトを進めるときには、便利だと思います。


*gitツールをダウンロードしてインストールする。インストールの仕方の説明書・一つの例は以下にあります。
#pragma once
:[https://git-scm.com/download/win https://git-scm.com/download/win]からダウンロードする。
:[[MathJaxをデバッグしてJavaScriptの理解を深める#デバッグ環境を整える]]に手順が説明されています。
namespace <span style="font-weight: bold;">(VenderID)</span>
{
    class SamplerEngine
    {
    public:
        SamplerEngine();
        void setSampleRate(double sampleRate);
        double getSampleRate() const;
        void noteOn(int noteNumber, float velocity);
        void noteOff(int noteNumber);
        void process(float* left, float* right, int numSamples);
    private:
        double m_sampleRate = 44100.0;
        int m_currentNote = -1;
        float m_velocity = 0.0f;
    };
}




*CMakeツールをインストールする。
C:¥Users\(UserID)\source\repos\(PluginName)\source\core\SamplerEngine.cpp
:[https://cmake.org/download/ https://cmake.org/download/]からダウンロードしてインストールします。


#include "SamplerEngine.h"
namespace <span style="font-weight: bold;">(VenderID)</span>
{
    SamplerEngine::SamplerEngine()
    {
    }
    void SamplerEngine::setSampleRate(double sampleRate)
    {
        m_sampleRate = sampleRate;
    }
    double SamplerEngine::getSampleRate() const
    {
        return m_sampleRate;
    }
    void SamplerEngine::noteOn(int noteNumber, float velocity)
    {
        m_currentNote = noteNumber;
        m_velocity = velocity;
    }
    void SamplerEngine::noteOff(int noteNumber)
    {
        if (m_currentNote == noteNumber)
        {
            m_currentNote = -1;
            m_velocity = 0.0f;
        }
    }
    void SamplerEngine::process(
        float* left,
        float* right,
        int numSamples)
    {
        for (int i = 0; i < numSamples; ++i)
        {
            left[i] = 0.0f;
            right[i] = 0.0f;
        }
    }
}


*Git CMDを起動して、以下のコマンドを実行する。
git clone https://github.com/steinbergmedia/vst3projectgenerator.git
mkdir build
cd build
cmake -G "Visual Studio 17 2022" ../vst3projectgenerator
cmake --build .


C:¥Users\(UserID)\source\repos\(PluginName)\source\standalone\StandaloneMain.cpp


*-Gオプションには以下のものが使えます。
#include <Windows.h>
:Visual Studio 16 2019
#include <cwchar>
:Visual Studio 15 2017 [arch] "Win64" or "ARM"
:Visual Studio 14 2015 [arch] "Win64" or "ARM"
#include "SamplerEngine.h"
:Visual Studio 12 2013 [arch] "Win64" or "ARM"
:Visual Studio 11 2012 [arch] "Win64" or "ARM"
int WINAPI wWinMain(
:Visual Studio 9 2008 [arch] "Win64" or "ARM"
    HINSTANCE hInstance,
    HINSTANCE,
    PWSTR,
    int)
{
    <span style="font-weight: bold;">(VenderID)</span>::SamplerEngine engine;
    engine.setSampleRate(48000.0);
    wchar_t message[256];
    swprintf_s(
        message,
        L"<span style="font-weight: bold;">(Plug-in Name)</span> Standalone\r\n\r\n"
        L"SamplerEngine SampleRate = %.0f Hz",
        engine.getSampleRate());
    MessageBoxW(
        nullptr,
        message,
        L"<span style="font-weight: bold;">(Plug-in Name)</span>",
        MB_OK);
    return 0;
  }




*VST3ProjectGenerator\build\Debug\VST3_Project_GeneratorにVST3_Project_Generator.exeというジェネレータ実行ファイルができるので、これを使います。
として、CMakeを動かす。Visual Studioの起動アイコンを右クリックして管理者として実行を選択して起動。コード無しで続行して、メニューの[ツール]-[コマンドライン]-[開発者コマンド プロンプト]を起動して以下のコマンドを実行




*gitとCMakeを使わない場合は
C:\Users\(UserID)&gt;<span style="font-weight: bold;">cd C:\Users\(UserID)\source\repos\(Plug-in Name)\build</span>
C:\Users\(UserID)\source\repos\(Plug-in Name)\build&gt;<span style="font-weight: bold;">"C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\bin\cmake.exe" -S .. -B . -G "Visual Studio 17 2022" -A x64 -DSMTG_PLUGIN_TARGET_USER_PROGRAM_FILES_COMMON=0</span>




:*[https://github.com/steinbergmedia/vst3projectgenerator https://github.com/steinbergmedia/vst3projectgenerator]へアクセスする。ダウンロードする。
 これで、C:\Users\(UserID)\source\repos\(Plug-in Name)\buileの(Plug-in Name).slnソリューションを開いてビルドしてみよう。ビルドが成功するとVst3がC:\Program Files\Common Files\VST3が配置されます。




:*解凍する。
 これでFL Studioのプラグイン管理からVST3が検出されれば、デバッグもできるようになります。




:*解凍したフォルダのvst3projectgenerator-masterフォルダをVisual Studio 2022 Communityで開く。
デバッグするときはFL Studioをデバッグのときに起動して、VST3を実行すればいいです。もしくはスタンドアローンアプリの方でデバッグしてもいいです。プロジェクトを二つつくって、Coreを共有するというソリューションになっていますので、共通処理はCoreの中に書いていけばよいことになります。
::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いりますね。ダウンロードしてインストールして下さい。VST3_Project_Generator.exeを作成済みの場合、つまり2回目以降のVSTプロジェクト自動生成はここからの作業になります。
 
 
*起動したら最初にPreferencesの項目をうめうめします。
:上側領域がCompany Informationです。Vendor名。E-Mail。URL。入力します。なんでもいいでしょう。
:下側領域がPath Preferencesです。
:VST3_SDKにはVST_SDKのインストール先のパスを入力します。
::C:\(任意)\VST_SDK\vst3sdk
:CMake Executable 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ボタンを押します。
 
 
*出来上がったプロジェクトが起動します。ためしにビルドしてみました。ところがエラー発生。
14>EXEC : CMake error : failed to create symbolic link 'C:/Users/(ユーザ名)/AppData/Local/Programs/Common/VST3/CodeVSTiTest.vst3': ・スN・ス・ス・スC・スA・ス・ス・スg・スヘ要・ス・ス・ス・ス・ス黷ス・ス・ス・ス・ス・ス・スロ有・ス・ス・ストゑソス・スワゑソス・ス・スB
 
 
 文字化けしたエラーメッセージですね。シンボリックリンクが作成出来ませんでしたと言っているようです。なんだそれ。
 
 
 オススメ出来ないばかりかエラーまであるとは、こりゃ大変だ。何が原因かわかるまで、しばらくかかりそうだな。
 
 
 あー。管理者として実行しないと作れないだけなんだな。同じようなエラーが出るようでしたら、一度、Visual Studioを終了させて、起動アイコンを右クリックして表示されるメニューから、[その他]-[管理者として実行]を選択してアプリケーションを起動して、もう一度ビルドしてみて下さい。VSTのプログラムが作れる状態になっていると思います。
 
 
 手動で準備するのは割かし大変なので、楽かもね。余計なコードが沢山あるけど、本気だして作るときは便利かもね。お試しで使ってみるときは少しづつ構築するとわかりやすいので、手動も覚えてみるのもいいかもしれない。
 
 
*メニューの[プロジェクト]-[プロジェクト名(CodeTester)のプロパティ]を選択します。
 
 
: 表示されたダイアログで以下のように編集します。
: ▽構成プロパティ
:  ▽リンカー
:   入力 - [モジュール定義ファイル]=「./任意.def」を追記


 
 


=== '''こつこつ手作業でやっていく手順'''===
== '''VSTeプログラミング初歩'''==
 
*[[VST 過去の初歩]]
 
*[[VST サンプルファイルのビルド方法]]
*Visual Studio 2022 Communityを起動します。
*[[VSTe 何も音響処理をしない入力をそのまま出力する処理]]
 
*[[VSTe VST3PluginHostTestで動作確認]]
 
*[[VSTe FL STUDIOで動作確認]]
*ファーストステップダイアログで[新しいプロジェクトの作成]を選択します。
*[[VSTe VSTGUI inline UI Editor *.uidescファイル作成配置方法]]
 
*[[VSTe 操作するパラメータを管理するコードを覚える]]
 
*[[VSTe VSTGUI inline UI Editor 基本的な使用方法]]
*[Windowsデスクトップウィザード]を選択します。dllを作成するプロジェクトにしたいからです。
*[[VSTe VSTGUI inline UI Editor を使わないで、Viewに出力音声波形を描画する方法]]
 
 
*プロジェクト名を何かしら決めます。管理人は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」を追記
:   入力 - [追加の依存ファイル]=「sdk.lib」を追記
:   入力 - [追加の依存ファイル]=「sdk_common.lib」を追記
:   入力 - [追加の依存ファイル]=「pluginterfaces.lib」を追記
:   入力 - [追加の依存ファイル]=「vstgui.lib」を追記
:   入力 - [追加の依存ファイル]=「vstgui_support.lib」を追記
:   入力 - [追加の依存ファイル]=「vstgui_uidescription.lib」を追記
:   入力 - [モジュール定義ファイル]=「./任意.def」を追記
 
 
: VSTGUI_LIVE_EDITINGとDEVELOPMENTの定義はDEBUG版のプロジェクトに対して設定するように、自動生成版のVSTプロジェクトでも実施されるのを確認しています。、何に使われているかは今のところ不明です。わかり次第、詳細をお知らせしたいと思います。ひとつ言えるのはVSTGUIのインラインUIエディターというのを使うときに必要になってくる宣言であるとWeb界隈では説明がありました。さらなる続報はあるかどうかわかりません。頑張って調べてはみます。


 
 


=== '''ここからは、こつこつ手順と自動手順のその後の共通の作業です'''===
== '''VSTライブラリ'''==
 
■リファレンス熟読
*古いバージョンの場合 *.defファイルを作ります。いや、新しいのでもいるな。いらなくなったかもって呟いてる人いたけど、自分はそうは思いません。いりますね。だって書いてあるもん。自動生成したときにできるファイルのsource¥$(Prefix)entry.cppの20行目21行目に
 
<syntaxhighlight lang="cpp">
// Windows: do not forget to include a .def file in your project to export
// GetPluginFactory function!
</syntaxhighlight>
 
 ね。書いてるでしょだから作るんです。でも、ちゃんと設定したら、DEFファイルは必要ないのだけどね。
 
 
: ファイル名はなんでも良いです。プロジェクトのプロパティからリンカーの入力のモジュール定義に設定したファイル名に合わせて、 *.vcprojのあるフォルダに配置します。定義した時にパスも任意に設定出来るので、合わせていれば任意のフォルダに配置する事も出来ます。ファイルの中身は以下のようにします。
 
EXPORTS
GetPluginFactory
 
: GetPluginFactoryは外部に見せたい関数の名前になります。外部に見せたいGetPluginFactory関数のプログラム自体はSDKの中のライブラリに生成されてある関数となっています。


 
*[[VSTプラグイン開発 CBitmap|CBitmap]]
*[[VSTプラグイン開発 PlatformBitmapPtr|PlatformBitmapPtr]]


== '''VSTeプログラミング初歩'''==
*[[VSTe 何も音響処理をしない入力をそのまま出力する処理]]
*[[VSTe VST3PluginHostTestで動作確認]]
*[[VSTe FL STUDIOで動作確認]]


 
 


[[メインページ#言語と開発環境|言語と開発環境]]へ戻る。
[[メインページ#言語と開発環境|言語と開発環境]]へ戻る。

2026年9月18日 (金) 13:35時点における最新版

言語と開発環境へ戻る。

プラグイン開発 概要

 VST開発の初歩の記事を書いていましたが、AIが台頭してきた今、もっとわかりやすい実践的なVSTの初歩について書き直すことにしました。VST 過去の初歩がそのときの記事になります。過去の記事では、VSTは作れるものの、スタンドアローン版についても通常は作成しなければならないところが反映されていないので、二重で開発をしなければならない効率の悪い方法を示していました。ChatGPTのチカラも借りて、より正しいVST開発の初歩について、わかった手順を示したいと思います。あとSteinbergから提供されるVST_SDKもだいぶカタチが変わったので、Steinbergが提唱するやり方に沿う形にもなっていると思います。Mac版の開発については触れませんので、Mac版も並行して開発する場合の手順については、別のサイトの記事を参考にして下さい。それでも、ここで開発するWindows版のStandaloneアプリとVSTの並行開発は少なくともやらないといけなくて、macOSとの並行開発のコツは全く別のノウハウになりますので、無駄ではありません。macOSの開発環境も必ず必要ですし、winPCだけでは無理です。macOSだけでも無理なのです。両方が必要です。macOSのコンピューターにwin環境を立ち上げることは可能なのでコンピュータは1台あれば済むということはあるかもしれません。クロスプラットフォーム開発はそれはそれで別のノウハウが必要になります。


 クロスプラットフォーム開発はおいておいたとして、Standaloneアプリと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のシンボリックリンクが使えるようになる。


 次にC:¥Users\(UserID)\source\repos\(PluginName)\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((PluginName)
    # 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
)


 そしてsourceファイルを追加しよう


C:¥Users\(UserID)\source\repos\(PluginName)\source\core\SamplerEngine.h

#pragma once

namespace (VenderID)
{
    class SamplerEngine
    {
    public:
        SamplerEngine();

        void setSampleRate(double sampleRate);
        double getSampleRate() const;

        void noteOn(int noteNumber, float velocity);
        void noteOff(int noteNumber);

        void process(float* left, float* right, int numSamples);

    private:
        double m_sampleRate = 44100.0;
        int m_currentNote = -1;
        float m_velocity = 0.0f;
    };
}


C:¥Users\(UserID)\source\repos\(PluginName)\source\core\SamplerEngine.cpp

#include "SamplerEngine.h"

namespace (VenderID)
{
    SamplerEngine::SamplerEngine()
    {
    }

    void SamplerEngine::setSampleRate(double sampleRate)
    {
        m_sampleRate = sampleRate;
    }

    double SamplerEngine::getSampleRate() const
    {
        return m_sampleRate;
    }

    void SamplerEngine::noteOn(int noteNumber, float velocity)
    {
        m_currentNote = noteNumber;
        m_velocity = velocity;
    }

    void SamplerEngine::noteOff(int noteNumber)
    {
        if (m_currentNote == noteNumber)
        {
            m_currentNote = -1;
            m_velocity = 0.0f;
        }
    }

    void SamplerEngine::process(
        float* left,
        float* right,
        int numSamples)
    {
        for (int i = 0; i < numSamples; ++i)
        {
            left[i] = 0.0f;
            right[i] = 0.0f;
        }
    }
}


C:¥Users\(UserID)\source\repos\(PluginName)\source\standalone\StandaloneMain.cpp

#include <Windows.h>
#include <cwchar>

#include "SamplerEngine.h"

int WINAPI wWinMain(
    HINSTANCE hInstance,
    HINSTANCE,
    PWSTR,
    int)
{
    (VenderID)::SamplerEngine engine;

    engine.setSampleRate(48000.0);

    wchar_t message[256];

    swprintf_s(
        message,
        L"(Plug-in Name) Standalone\r\n\r\n"
        L"SamplerEngine SampleRate = %.0f Hz",
        engine.getSampleRate());

    MessageBoxW(
        nullptr,
        message,
        L"(Plug-in Name)",
        MB_OK);

    return 0;
}


として、CMakeを動かす。Visual Studioの起動アイコンを右クリックして管理者として実行を選択して起動。コード無しで続行して、メニューの[ツール]-[コマンドライン]-[開発者コマンド プロンプト]を起動して以下のコマンドを実行


C:\Users\(UserID)>cd C:\Users\(UserID)\source\repos\(Plug-in Name)\build
C:\Users\(UserID)\source\repos\(Plug-in Name)\build>"C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\bin\cmake.exe" -S .. -B . -G "Visual Studio 17 2022" -A x64 -DSMTG_PLUGIN_TARGET_USER_PROGRAM_FILES_COMMON=0


 これで、C:\Users\(UserID)\source\repos\(Plug-in Name)\buileの(Plug-in Name).slnソリューションを開いてビルドしてみよう。ビルドが成功するとVst3がC:\Program Files\Common Files\VST3が配置されます。


 これでFL Studioのプラグイン管理からVST3が検出されれば、デバッグもできるようになります。


デバッグするときはFL Studioをデバッグのときに起動して、VST3を実行すればいいです。もしくはスタンドアローンアプリの方でデバッグしてもいいです。プロジェクトを二つつくって、Coreを共有するというソリューションになっていますので、共通処理はCoreの中に書いていけばよいことになります。

 

VSTeプログラミング初歩

 

VSTライブラリ

■リファレンス熟読


 

言語と開発環境へ戻る。