板情報 | コンピュータ ]

1  dllmain.cppの役割  (書き込み数 : 4)

1minty   :2024/01/14(日) 22:06:49  
うつぼかずら様
いつもサイトを大変参考にさせていただいております。vst開発の勉強を初めてしばらく経ち、疑問点が出てきたので質問させていただきます。
スレッドのタイトルにもあります通り、dllmain.cppの役割がいまいち分かりません。ファイルの中身を覗くとdll関係のことが書かれているようですが、これが一体何に作用しているのかさっぱりです。実際、配布されていらっしゃるポリフォニックシンセサイザーのサンプルコード等はこのファイルが無くても特段問題なく動きます。
sdkのドキュメントにもこのファイルに関して特に記載はなく手詰まりの状況となりましたので、ご教授いただけますと幸いです。
2管理人★   :2024/01/14(日) 23:02:55  
mintyさん

dllmain.cppはあまり気にしなくていいと思います。
dllmain.cppには主に下記の関数がありますが、VSTプラグインでは追加の処理を記載しなくても問題なく動くものがほとんどだと思います。

・DLL用のメイン関数(DllMain関数)
 →DLLにおけるエントリポイント。DLLが読み込まれた際に最初に呼び出されるmain関数のようなもの。
  (デフォルトではほぼ何もしていない。)

・DLL全体の初期化関数(InitDll関数)と終了処理関数(ExitDll関数)
 →DLL全体の初期化と終了処理関数。VSTの各クラスの初期化や終了処理よりも前や後に呼び出される。
  (例えば、各クラスの全インスタンス共通で使う波形の初期化・終了処理や物理デバイスの初期化・終了処理などに使用します。)
 →具体的な処理はmoduleinit.hやmoduleinit.cppに記載。(デフォルトでは何もしていない。)

なお、dllmain.cppについてはおそらく「https://www.utsbox.com/?p=1319」の「必要なソースファイルの追加」の項目で追加しているかと思います。
3minty   :2024/01/15(月) 09:30:17  
うつぼかずら様

返信ありがとうございます。つまり、DLLを用いないプログラム構成の場合は特に必要のない関数群というわけですね。なんとなく理解できました。

年始の忙しい時期であると思いますが、迅速な回答ありがとうございました!
4管理人★   :2024/01/16(火) 00:00:24  
mintyさん

DllMain関数や初期化関数・終了処理関数を利用しないなら特に必要はありません。
VSTプラグイン自体はDLLファイルなのでdllmain.cppはプロジェクトに追加しておく必要があります。
(拡張子は.dllから.vst3に変更していますが。)
名前
E-mail(省略OK)
内容

2  波形描画ビューのその後  (書き込み数 : 30)

1sagamat   :2023/08/15(火) 21:00:03  
うつぼかずら様

こんばんは。お世話になっております。
波形描画ビューのページにコメントを書き込もうとしましたがうまく反映されないようですので、こちらに失礼いたします。
波形描画ビューの記事、大変参考になりました。ありがとうございます。
記事の最後に触れられている「音声処理クラスから音声波形を取得する方法」が気になります。
音声処理クラスからパラメータ操作クラスへの配列の受け渡し、ならびに、その逆ができるようになれば、いろいろとできることが増えるのではと想像しております。
是非とも続きの記事を拝見したく、今か今かと更新を期待しております。
お忙しいところ恐縮ですが、上記方法のご教示をいただければ幸いです。
今後とも何卒よろしくお願い申し上げます。
24sagamat   :2023/12/27(水) 20:22:49  
うつぼかずら様

初歩的なミスで大変恐縮です。ご指摘の修正で保存・読込ができるようになりました。ありがとうございます!

あとはGUIクラスなんですが、テキストの保存に関して、サイズの指定の仕方がわかっておりません。strのサイズ数はどのようにして取得できますでしょうか?また、GUIクラスの配列についても音声処理クラスと同様に保存・読込しようとしてみましたが、うまくいかないようです。GUIクラスでの保存・読込について何か注意すべき点などございますでしょうか?
25管理人★   :2023/12/27(水) 21:47:37  
sagamatさん

GUIクラスの状態の保存は、パラメータ操作クラスのgetState()で保存するしかありません。
ですので、文字列や波形データの配列などはGUIクラスで保持するのではなく、パラメータ操作クラスに保持するようにします。

GUIクラスのデータをパラメーター操作クラスに設定・保持する方法は >>18 や >> 21 の方法の応用でほとんど対応できると思います。

そのうえで、”パラメーター操作クラス”のgetState()で保存・setState()で読込します。
(音声処理クラスではなくパラメーター操作クラスにもsetState()・getState()があります。)

【参考】
https://steinbergmedia.github.io/vst3_dev_portal/pages/FAQ/Persistence.html
https://www.utsbox.com/?p=1060

なお、文字列ですが、UTF8StringPtr型であれば、const char*の再定義なので、strlen()あたりで文字列の長さを取得できると思います。
26sagamat   :2023/12/29(金) 22:03:03  
うつぼかずら様

ありがとうございます!おかげ様でGUIクラスのデータ(の一部)は保存・読込できるようになりました。ただ、文字列の保存・読込に苦戦しております。

controller.hで
std::string dataText = "test";
int dataTextLen = dataText.length();
と宣言し、パラメータ操作クラスのgetstate()で
state->write(&dataTextLen, sizeof(int));
state->write(&dataText, dataTextLen);
と記載、setstate()で、
res = state->read(&dataTextLen, sizeof(int));
res = state->read(&dataText, dataTextLen);
と記載するとクラッシュします(正確には、state->read(&dataText, dataTextLen)でクラッシュします)。

(省略されました・・全てを読むにはここを押してください)
27管理人★   :2023/12/30(土) 13:21:21  
sagamatさん

書き込みがstringクラスのポインタなので、最初に文字列のバッファがあるとは限らないと思います。
シンプルに文字列そのものを保存した方がわかりやすいかもしれません。

state->write(dataText.c_str(), dataTextLen);

読み込みも、上記で文字列を保存したのであれば、一度文字列で読み込んでstring型に設定する形でよいかと思います。

char *tmpText = new char[dataTextLen];
res = state->read(tmpText, dataTextlen);
dataText = tmpText;
delete[] tmpText;

(stringクラスの文字列バッファのポインタを直接取得できるのであれば、上記のtmpTextは使う必要がありません。)
28sagamat   :2023/12/30(土) 14:10:35  
うつぼかずら様

年末の慌ただしい時期にも関わらず迅速にご対応いただき、ありがとうございます。
的確なご指導のおかげで、無事に目的のプラグインを作成することができました!
大変勉強になりました。重ねて感謝申し上げます。

もしお許しいただけるのであれば、少しでも何かお礼をしたく、メールででもご連絡いただけますと幸いです。
29管理人★   :2023/12/30(土) 15:08:46  
sagamatさん

無事解決してよかったです。
調べればいずれわかることだと思うので、特にお礼などは不要です。
30sagamat   :2023/12/30(土) 19:54:50  
うつぼかずら様

調べに調べればいずれわかることかもなのかもしれませんが、ご教示いただいたことで多大な時間と労力を削減できました。ありがとうございます。
ちなみにこのスレッドで質問させていただいて作成したのはチューナーとコンボルバーです。
特にコンボルバーですでに出回っているものはいろんな機能が追加されており、根本の部分がブラックボックス化しているものが多く、ネイティブに作成できたことで安心して使用することができます。
もしかすると今後もまたご質問させていただくことがあるかもしれませんが、できる限り自分で解決できるよう引き続きC++、ならびに、VSTのことを勉強するようにいたします。
取り急ぎ、深く御礼を申し上げます。良いお年をお迎えください。
名前
E-mail(省略OK)
内容

3  Utsbox SF2 PlayerのReadme内のURLが旧サイトのままになっています  (書き込み数 : 4)

1森の子リスのミーコの大冒険   :2022/09/07(水) 19:57:44  
初めまして。
タイトルの通り、現在最新のUtsbox SF2 Player v1.4につきまして、そのReadme内のURLが旧サイトのままになっているようです。
現在は新サイトへのリダイレクトも行われていないようですし、URL表記の更新が必要かと思います。
2管理人★   :2022/09/09(金) 21:32:07  
森の子リスのミーコの大冒険さん

すぐにお返事できずすいません。
修正するようにします。ご指摘ありがとうございます。
3SynthTAROU   :2023/03/11(土) 06:55:33  
VST3のホストを作成していますが、シグナル処理など参考にさせていただいて、動くようになってきました。
音色一覧の取得と、音色の切り替えを、ホストから行う方法が、全然わからないです。
なにかアドバイスをお願いできませんでしょうか。

ちなみに、ひとつまえの話題に、ひとこと、、
CMakeは、GUI版だと、チェックのオンオフでオプション一覧でてくるので楽ですよ。
4SynthTAROU   :2023/03/11(土) 06:56:53  
なにか場所まちがえてしまいましたかね、WEBから投稿したのですが。。。ごめんなさい。
名前
E-mail(省略OK)
内容

4  環境構築時、ビルドをしてもx64-Releaseが生成されません  (書き込み数 : 3)

1にゃんこそば   :2022/09/07(水) 12:55:30  
こんにちは、サイトを通してVSTを作ってみようとしています。

いきなりですがタイトルの通りの問題が生じました。
新規構成の追加をはじめその他書かれていることは行いましたが、
ビルドを行ってもx64-Releaseのファイル群が生成されませんでした。
x64-Debugについては正常に生成されていると思います。

環境については、Visual Studio 2019、vst-sdk 3.7.6になります。

お時間があるときで構いませんのでご教授のほうよろしくお願いします。
2にゃんこそば   :2022/09/07(水) 13:08:52  
お騒がせいたしました。一旦自己解決はしました。x64-DebugのCMake設定を削除して
x64-Releaseだけにすることで生成することができました。そして再びx64-DebugのCMake設定えお追加しました。
もしかしたらこれが仇になり今後エラーで出るなどがありましたらご教授いただけると幸いです。
3管理人★   :2022/09/09(金) 21:31:35  
にゃんこそばさん

すぐにお返事できずすいません。
とりあえず解決してよかったです。
名前
E-mail(省略OK)
内容

5  C++でVST作りの指摘・質問  (書き込み数 : 219)

1管理人   :2010/12/10(金) 18:06:52  
「C++でVST作り」内の誤記やサンプルコードのバグ、指摘・質問等がございましたらこちらへお願いいたします。

C++でVST作り→http://www39.atwiki.jp/vst_prog/
213管理人★   :2021/02/19(金) 00:40:18  
てつさん

無事解決してよかったです。
開発環境やプロジェクトの準備はつまずきやすい難所なので仕方がないです。
214rerohm   :2021/05/11(火) 15:48:56  
こんにちは
最近VSTの開発を始めようとしているプログラム初心者です。
サイトに掲載されている手順で基本ライブラリのビルドを行ったのですが、

ninja: build stopped: subcommand failed.

すべてビルド が失敗しました。

と表示されて途中で終わってしまいます。Debug版Release版いずれもです。
一応https://vstcpp.wpblog.jp/?p=1287 に記載されている.libファイルは生成
されてはいたのでそのままプラグインの作成を進めてみたのですが、こちらでは

ビルドを開始しました...
1>------ ビルド開始: プロジェクト: MyVSTProject, 構成: Debug x64 ------
1>factory.cpp
(省略されました・・全てを読むにはここを押してください)
215管理人★   :2021/05/12(水) 10:08:15  
rerohmさん

書き込みありがとうございます。
おそらくポリフォニックシンセサイザー(https://vstcpp.wpblog.jp/?p=1361)のサンプルだと思いますが、
factory.cppの2行目にある「pluginfactoryvst3.h」を「pluginfactory.h」に修正して試してみてください。
216tk   :2021/08/06(金) 00:27:18  
管理人様 はじめまして.

現在,VST基本プラグインのビルド(https://vstcpp.wpblog.jp/?p=1287)
をしているのですが,debug,release共に以下のようなエラーがでました.

>------ すべてビルド 開始済み: プロジェクト: VST3_SDK、構成: x64-Debug ------
.
.
.

[299/452] Linking CXX shared module VST3\Debug\helloworld.vst3\Contents\x86_64-win\helloworld.vst3
FAILED: VST3/Debug/helloworld.vst3/Contents/x86_64-win/helloworld.vst3
cmd.exe /C "cd . && "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\bin\cmake.exe" -E vs_link_dll --intdir=C:\VST_SDK\my_plugins\build\helloworld\CMakeFiles\helloworld.dir --rc=C:\PROGRA~2\WI3CF2~1\10\bin\100190~1.0\x86\rc.exe --mt=C:\PROGRA~2\WI3CF2~1\10\bin\100190~1.0\x86\mt.exe --manifests -- C:\PROGRA~2\MICROS~4\2019\COMMUN~1\VC\Tools\MSVC\1429~1.300\bin\Hostx86\x64\link.exe /nologo C:\VST_SDK\my_plugins\build\helloworld\CMakeFiles\helloworld.dir\source\plugfactory.cpp.obj C:\VST_SDK\my_plugins\build\helloworld\CMakeFiles\helloworld.dir\source\plugcontroller.cpp.obj C:\VST_SDK\my_plugins\build\helloworld\CMakeFiles\helloworld.dir\source\plugprocessor.cpp.obj C:\VST_SDK\my_plugins\build\helloworld\CMakeFiles\helloworld.dir\C_\VST_SDK\VST3_SDK\public.sdk\source\main\dllmain.cpp.obj C:\VST_SDK\my_plugins\build\helloworld\CMakeFiles\helloworld.dir\resource\plug.rc.res /out:VST3\Debug\helloworld.vst3\Contents\x86_64-win\helloworld.vst3 /implib:lib\helloworld.lib /pdb:WIN_PDB64\helloworld.pdb /dll /version:0.0 /machine:x64 /debug /INCREMENTAL /SAFESEH:NO lib\sdk.lib lib\sdk_common.lib lib\base.lib lib\pluginterfaces.lib kernel32.lib user32.lib gdi32.lib winspool.lib shell32.lib ole32.lib oleaut32.lib uuid.lib comdlg32.lib advapi32.lib && cmd.exe /C "cd /D C:\VST_SDK\my_plugins\build\helloworld && "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\bin\cmake.exe" -E copy C:/VST_SDK/VST3_SDK/vst3_doc/artwork/VST_Logo_Steinberg.ico C:/VST_SDK/VST3_SDK/out/build/x64-Debug/VST3/Debug/helloworld.vst3/PlugIn.ico && "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\bin\cmake.exe" -E copy C:/VST_SDK/VST3_SDK/cmake/modules/../templates/desktop.ini.in C:/VST_SDK/VST3_SDK/out/build/x64-Debug/VST3/Debug/helloworld.vst3/desktop.ini && attrib +s C:/VST_SDK/VST3_SDK/out/build/x64-Debug/VST3/Debug/helloworld.vst3/desktop.ini && attrib +s C:/VST_SDK/VST3_SDK/out/build/x64-Debug/VST3/Debug/helloworld.vst3/PlugIn.ico && attrib +s C:/VST_SDK/VST3_SDK/out/build/x64-Debug/VST3/Debug/helloworld.vst3 && cd /D C:\VST_SDK\VST3_SDK\out\build\x64-Debug\bin && echo [SMTG] Validator started... && C:\VST_SDK\VST3_SDK\out\build\x64-Debug\bin\validator.exe C:/VST_SDK/VST3_SDK/out/build/x64-Debug/VST3/Debug/helloworld.vst3/Contents/x86_64-win/helloworld.vst3 && echo [SMTG] Validator finished. && cd /D C:\VST_SDK\my_plugins\build\helloworld && echo [SMTG] Delete previous link... && rmdir "C:\Program Files\Common Files\VST3\helloworld.vst3" & del "C:\Program Files\Common Files\VST3\helloworld.vst3" && echo [SMTG] Creation of the new link... && mklink /D "C:\Program Files\Common Files\VST3\helloworld.vst3" C:\VST_SDK\VST3_SDK\out\build\x64-Debug\VST3\Debug\helloworld.vst3 && echo [SMTG] Finished.""
[SMTG] Validator started...
.
(省略されました・・全てを読むにはここを押してください)
217管理人★   :2021/08/07(土) 11:54:17  
tkさん
確認しますので少々お時間ください。
218管理人★   :2021/08/08(日) 12:16:20  
確かにビルドの出力では「すべてビルド が失敗しました。」と出ますね…。
(あまり見てなかったです…。)

「エラー一覧」のウィンドウにエラーは出ていますでしょうか?
(警告はたくさん出ていると思いますがこれは問題ありません。)
エラーが出ていなければ、失敗しているのはサンプルのようなのでおそらく問題はありません。

「VST_SDK\VST3_SDK/out/build/x64-Debug/lib」配下にVST基本ライブラリ(下記)が作成されていれば
VST開発はできますのでそのまま続けていただければと思います。

【作成される主なライブラリファイル】
base.lib
sdk.lib
sdk_common.lib
pluginterface.lib
(省略されました・・全てを読むにはここを押してください)
219<削除>   :<削除>  
<削除>
名前
E-mail(省略OK)
内容

6  ビルドに関するエラー  (書き込み数 : 25)

1NBF   :2020/10/10(土) 00:09:39  
サイトの方のサンプルソースファイルのビルド方法の所にコメントしていたものです。
返信を投稿しても表示されず、こちらから失礼します。

返答ありがとうございました。vst3.defをソースファイルに含めることでエラーメッセージが出なくなりました。
しかし今度は「include ファイルを開けません。'public.sdk/source/main/pluginfactoryvst3.h':No such file or directory」というメッセージが出るようになってしまいました。
フォルダを確認したところ確かにpluginfactoryvst3.hは存在せず、pluginfactory.hがあったのでそれをインクルードしてみましたがダメでした。
最新版のSDKをダウンロードしたはずなのですが...。
最初のところでつまづいてしまい、度々で申し訳ありません。
うつぼかずらさんの本を注文して、今日届きました!これから読み込み励もうと思います!
19管理人★   :2022/07/08(金) 17:57:52  
書き込みありがとうございます。

VST SDK 3.7.5はまだ試せておらず、バージョン違いによる不具合があるかもしれません。

すでにVST SDK 3.7.3で試していただいているようですので、VST SDK 3.7.3でも問題がある場合は、
下記を試していただけますでしょうか?

1.「vstgui.lib」が作成されているか確認してください。

2.Visual Studioのソリューション構成を「Debug」「x64」にしているか
 確認してください。手順は下記「VST3のプロジェクト作成」にあります。

 https://www.utsbox.com/?p=1319

3.「プロジェクト設定の変更」で「VC++ディレクトリ」→「ライブラリ ディレクトリ」の
(省略されました・・全てを読むにはここを押してください)
20L   :2022/07/11(月) 19:52:46  
ご回答ありがとうございます。そしてお返事遅くなってしまい申し訳ありません。

3.73で試した結果、エラー1104は解決することができました。
しかし今度は別のところでたくさんエラーが出てしまって、よくわからなくなってしまったので新しいプロジェクトを作ることにしました。開発環境を書籍の方(Visual Studio2019、SDK3.614)に合わせて、書籍のとおりに進めてみたところ、
3章-7のビルドの実行(サンプルプログラムの実行)で、以下のようなエラーが出てしまいました。

エラーの説明が理解できなくて、基本ライブラリ作成などのところで何か漏れがあったりするのかと思って確認してみたのですが、書籍どうりにライブラリ作成はできています。エラー1120は上のエラー2019を解決できれば直りそうです。
つまづいてばかりなのですが、対処法を教えていただきたいです。


重大度レベル コード 説明 プロジェクト ファイル 行 抑制状態
エラー LNK2019 未解決の外部シンボル WinMain が関数 "int __cdecl invoke_main(void)" (?invoke_main@@YAHXZ) で参照されました MyVstProject_sdk3.614 C:\Users\ramor\source\repos\MyVstProject_sdk3.614\MyVstProject_sdk3.614\MSVCRTD.lib(exe_winmain.obj) 1

重大度レベル コード 説明 プロジェクト ファイル 行 抑制状態
エラー LNK1120 1 件の未解決の外部参照 MyVstProject_sdk3.614 C:\Users\ramor\source\repos\MyVstProject_sdk3.614\x64\Debug\MyVstProject_sdk3.614.vst3 1
21管理人★   :2022/07/11(月) 21:42:58  
Lさん

書籍の環境・手順で「未解決の外部シンボル WinMain が関数~~」のエラーが出るのであれば、
おそらくP.28 図3-1-3の「アプリケーションの種類」が「ダイナミックリンクライブラリ(dll)」に
なっていない可能性があります。

「3-1 Visual Studio プロジェクトの作成と設定」をもう一度試していただけますでしょうか。
22L   :2022/07/15(金) 01:26:51  
ご回答の通りアプリケーションの種類をダイナミックリンクライブラリに開けて再度実行したらビルドが通り、音を鳴らすことができました。
本当にありがとうございます。引き続き書籍の方で進めてみます。
23L   :2022/07/21(木) 17:39:51  
こんにちは。あれから書籍の方で第6章トレモロプラグインの改良まで進めてみて、今は7章のモノフォニックシンセサイザをつくろうとしています。
これまで同じプロジェクトにコードを変えたり追加して.vst3ファイルを上書きしてプラグインを読み込ませていたのですが、
第6章でつくったトレモロプラグインの.vst3ファイルを残しておきたいです。そのため、新しいプロジェクトを作ってそこに新たなコードを書こうとしたのですが、
プロジェクト構成などを設定し直す必要があるので少し面倒に感じました。

毎回VSTプラグインを作る場合には、それぞれ新しいプロジェクトを作ってそこにコードを書いていくやり方でいいのでしょうか?
VSTプラグイン開発以前の問題で初歩的なところがわかっていなくてすみません。教えていただけると嬉しいです。
24管理人★   :2022/07/22(金) 22:17:46  
Lさん

.vst3ファイルを残すだけであればファイル名を変更すれば残せます。

修正を加えたVSTはFUID(書籍 P.40)を変更すると別VSTとして認識してくれます。
出力するファイル名を変えたいのであれば、Visual Studioの出力ファイル設定で
変更することができたと思います。

まったく別のVSTを1から作るときのVisual Studioのプロジェクト作成が面倒な場合、
Visual Studioにはプロジェクトテンプレートという機能があったと思います。

新規でプロジェクト作成と設定を行ったあとすぐにエクスポートして、
プロジェクトテンプレートにすればよいと思います。
(詳細なやり方は検索などして、調べていただければと思います。)

(省略されました・・全てを読むにはここを押してください)
25<削除>   :<削除>  
<削除>
名前
E-mail(省略OK)
内容

7  環境構築でビルドするときのエラーについて  (書き込み数 : 4)

1Rewa   :2022/04/09(土) 04:16:58  
こんにちは。先日うつぼかずらさんの本を購入しまして、vstプラグイン作りに挑戦しようと思っている初心者です。
VSTの作成の準備の段階なのですが、Visual Studio 2022 Communityをインストール、VST SDKのダウンロード、cmakeでキャッシュの生成までは上手くいったようなのですが、ビルドをするときに「警告 D9025 '/Zi' より '/ZI' が優先されます。」というエラーと警告が出て上手くいきません。libファイルの中を確認しても、
base.lib
vstgui_standalone.lib
しか生成されていない状況です。
最初VST_SDKを外付けのDドライブに置いていたのでそれが悪さしたのかと思い、VST_SDKフォルダをCドライブの直下に置いてもう一度試してみましたが変わりませんでした。解決策はありますでしょうか。忙しい中申し訳ないですがよろしくお願いします。以下がエラーが出る時の出力です。
>------ すべてビルド 開始済み: プロジェクト: vst3sdk、構成: x64-Debug ------
[1/302] Building CXX object VSTGUI.build\lib\CMakeFiles\vstgui.dir\vstguiinit.cpp.obj
C:\VST_SDK\vst3sdk\out\build\x64-Debug\cl : コマンド ライン warning D9025: '/Zi' より '/ZI' が優先されます。
[2/302] Building CXX object pluginterfaces\CMakeFiles\pluginterfaces.dir\base\funknown.cpp.obj
FAILED: pluginterfaces/CMakeFiles/pluginterfaces.dir/base/funknown.cpp.obj
C:\PROGRA~1\MICROS~4\2022\COMMUN~1\VC\Tools\MSVC\1431~1.311\bin\Hostx64\x64\cl.exe /nologo /TP -DSMTG_USE_STDATOMIC_H=1 -D_UNICODE -IC:\VST_SDK\vst3sdk -IC:\VST_SDK\vst3sdk\pluginterfaces\.. /DWIN32 /D_WINDOWS /W3 /GR /EHsc /MDd /Zi /Ob0 /Od /RTC1 -DSMTG_RENAME_ASSERT=1 /fp:fast /MP /wd6031 /wd6308 /wd6330 /wd6385 /wd6386 /wd28125 /wd28251 /ZI /MDd /showIncludes /Fopluginterfaces\CMakeFiles\pluginterfaces.dir\base\funknown.cpp.obj /Fdpluginterfaces\CMakeFiles\pluginterfaces.dir\pluginterfaces.pdb /FS -c C:\VST_SDK\vst3sdk\pluginterfaces\base\funknown.cpp
C:\VST_SDK\vst3sdk\out\build\x64-Debug\cl : コマンド ライン warning D9025: '/Zi' より '/ZI' が優先されます。
The contents of <stdatomic.h> are available only with C++23 or later.
C:\VST_SDK\vst3sdk\pluginterfaces\base\funknown.cpp(91): error C2061: 構文エラー: 識別子 'atomic_int_least32_t'
[3/302] Building CXX object VSTGUI.build\lib\CMakeFiles\vstgui.dir\platform\win32\win32resourcestream.cpp.obj
C:\VST_SDK\vst3sdk\out\build\x64-Debug\cl : コマンド ライン warning D9025: '/Zi' より '/ZI' が優先されます。
[4/302] Building CXX object VSTGUI.build\lib\CMakeFiles\vstgui.dir\vstguidebug.cpp.obj
C:\VST_SDK\vst3sdk\out\build\x64-Debug\cl : コマンド ライン warning D9025: '/Zi' より '/ZI' が優先されます。
[5/302] Building CXX object VSTGUI.build\lib\CMakeFiles\vstgui.dir\platform\win32\win32openglview.cpp.obj
C:\VST_SDK\vst3sdk\out\build\x64-Debug\cl : コマンド ライン warning D9025: '/Zi' より '/ZI' が優先されます。
[6/302] Building CXX object VSTGUI.build\lib\CMakeFiles\vstgui.dir\platform\win32\win32optionmenu.cpp.obj
C:\VST_SDK\vst3sdk\out\build\x64-Debug\cl : コマンド ライン warning D9025: '/Zi' より '/ZI' が優先されます。
[7/302] Building CXX object VSTGUI.build\lib\CMakeFiles\vstgui.dir\platform\win32\win32support.cpp.obj
C:\VST_SDK\vst3sdk\out\build\x64-Debug\cl : コマンド ライン warning D9025: '/Zi' より '/ZI' が優先されます。
[8/302] Building CXX object VSTGUI.build\lib\CMakeFiles\vstgui.dir\platform\win32\win32factory.cpp.obj
C:\VST_SDK\vst3sdk\out\build\x64-Debug\cl : コマンド ライン warning D9025: '/Zi' より '/ZI' が優先されます。
[9/302] Building CXX object VSTGUI.build\lib\CMakeFiles\vstgui.dir\platform\win32\direct2d\d2dbitmap.cpp.obj
C:\VST_SDK\vst3sdk\out\build\x64-Debug\cl : コマンド ライン warning D9025: '/Zi' より '/ZI' が優先されます。
[10/302] Building CXX object VSTGUI.build\lib\CMakeFiles\vstgui.dir\platform\win32\win32frame.cpp.obj
C:\VST_SDK\vst3sdk\out\build\x64-Debug\cl : コマンド ライン warning D9025: '/Zi' より '/ZI' が優先されます。
[11/302] Building CXX object VSTGUI.build\lib\CMakeFiles\vstgui.dir\platform\win32\direct2d\d2dfont.cpp.obj
C:\VST_SDK\vst3sdk\out\build\x64-Debug\cl : コマンド ライン warning D9025: '/Zi' より '/ZI' が優先されます。
ninja: build stopped: subcommand failed.

すべてビルド が失敗しました。
2管理人★   :2022/04/12(火) 16:46:58  
お返事が遅くなり申し訳ございません。

「警告 D9025 '/Zi' より '/ZI' が優先されます。」とでるのは問題ないと考えています。
(.libファイルが作成できていれば問題ありません。)

VST SDKのバージョンは3.6.14でしょうか?
もし、最新版などを使っている場合は、工学社様のサポートページにVST SDK 3.6.14のダウンロードリンクがありますので
試していただけますでしょうか。
https://www.kohgakusha.co.jp/support/vst/index.html
3ちんや   :2022/06/14(火) 07:28:44  
横はいりですみません。
私も同様のエラーで困ってました。(SDK 3.7.5)
SDK3.6.14にしたらビルドできました。
ありがとうございます。
4管理人★   :2022/06/14(火) 23:08:08  
ちんやさん

時間がたつとSDKもバージョンアップするので書籍と同じ手順でできるとは限らなくなっています…。
この掲示板やサポートページを見ていただいてありがとうございます。
名前
E-mail(省略OK)
内容

8  サンプルプログラムのビルド  (書き込み数 : 4)

1error man   :2021/11/22(月) 22:00:11  
こんにちは、うつぼかずらさんの本を購入しVST作りに挑戦しようとしているところです。
最初のサンプルプログラムのビルドでつまづいてしまいました、以下のエラーが出てしまい進めません。
パスの設定など見直したのですが...原因は何が考えられるでしょうか?
エラー LNK2001 外部シンボル "public: static class Steinberg::FUID const Steinberg::IPlugView::iid" (?iid@IPlugView@Steinberg@@2VFUID@2@B) は未解決です VST sdk.lib(vsteditcontroller.cpp.obj) 1
エラー LNK2001 外部シンボル "public: static class Steinberg::FUID const Steinberg::IPlugView::iid" (?iid@IPlugView@Steinberg@@2VFUID@2@B) は未解決です VST sdk.lib(pluginview.cpp.obj) 1
2管理人★   :2021/11/23(火) 21:16:13  

error manさん

ご購入ありがとうございます。返事が遅くなりました。

外部シンボルエラーなので、
・VST SDKのバージョンが書籍のものと異なる。
・何かの設定が漏れている
のいずれかだと思われます。

もし最新のVST SDKのバージョン(3.7.3)を使用しているのであれば、
書籍で使用しているバージョンをご利用いただけますでしょうか?

下記よりダウンロードできると思います。

(省略されました・・全てを読むにはここを押してください)
3error man   :2021/11/24(水) 12:36:17  
v3.7.3でしたのでバージョンを変更し試してみたところビルドできました!
v3.6.14とv3.7.3を比べて作成できたライブラリの数が明らかに3.7.3の方が少ないのでそのあたりのミスもあったのでしょうか..。
とにかくこれで前に進めそうです、ご親切にありがとうございました!
4管理人★   :2021/11/26(金) 09:13:24  
error manさん
無事解決してよかったです。
名前
E-mail(省略OK)
内容

9  パネル起動時の初期値表示と定期更新について  (書き込み数 : 4)

1らく   :2020/09/07(月) 20:41:18  
以前にも一度ご質問させて頂いたらくと申します。
その後も何度もくじけそうになりつつ、牛歩のように進んでおります。

早速ですが、質問させて頂きます。
「VST3.6開発13 - VST GUIコードでのつまみ(ノブ)等の実装方法」
を参考に、現在ノブ操作しながらレベル調整ができる状態になっています。

「VST GUIのコントロール値を数字で表示する」
を参考に、パラメータ値をノブの下に表示させようとしているのですが、ウインドウを開いたときに初期値を表示させるにはどうすれば良いでしょうか?
ノブを操作すると数字が表れます。

(1) void MyVSTGUIEditor::valueChanged(CControl* pControl)
を利用しようと思いましたが、これはVST3のAPIから直接呼ばれているため、使いにくそうです。

(2) CMessageResult MyVSTGUIEditor::notify(CBaseObject *sender, const char *message)
により定期更新すれば、ウインドウを開くときには表示されなくとも、0.1秒後には表示されるのではないかと期待しましたが、上手くいきません。

良い方法があればご教授頂きたいと思います。
2らく   :2020/09/07(月) 20:50:08  
早速訂正させて頂きます。

初期値というより、パネルを開いた時の設定(パラメータ)値とした方が良いですね。
設定値を読み出して表示したいということです。

宜しくお願い致します。
3らく   :2020/09/08(火) 12:59:19  
度々申し訳ございません。

質問させて頂いた後になって、過去の他の方とのやり取りを読ませて頂いたところ、そこにヒントがあり、今やりたいことができています。
とりあえず、これで少し先に進めてみたいと思います。
自己解決で申し訳ありません。

また、分からないことが出てきましたらご質問させて頂きます。
失礼致しました。
4管理人★   :2020/09/10(木) 22:37:24  
らくさん

書き込みありがとうございます。
すぐにお答えできずにすいません。
名前
E-mail(省略OK)
内容

10  はじめまして。  (書き込み数 : 35)

1shun   :2011/05/01(日) 15:46:24  
はじめまして。
個人的にVSTプラグインの開発に挑戦しています、shunと申します。

VST開発の情報を探していたところ、このページを見つけました。
とても有益な情報をありがとうございます。

今後こちらの掲示板の方に質問などを書き込ませていただくことがあるかもしれません。
もし、お時間がありましたらお答えいただけたらと思います。

作成中のコンテンツの完成を楽しみにしています!
29名無しさん   :2019/05/05(日) 17:41:05  
サンプルソースをビルドする時OBJが開けなくて失敗します。何が悪いのでしょう?
30管理人★   :2019/05/06(月) 18:16:35  
書き込みありがとうございます。

VST SDKのバージョンは3.6.13でしょうか?
そうであれば、追加の基本ライブラリが必要となります。

基本ライブラリの作成の際に「pluginterface.lib」ができていると思いますので、プロジェクトのプロパティから「リンカー」→「入力」→「追加の依存ファイル」で「pluginterface.lib」を追加してみてください。

同じ内容をTwitterにも投稿しておりますのでご参照ください。
https://twitter.com/vstcpp/status/1125001924875440129
31管理人★   :2019/05/06(月) 20:11:11  
もう一点。追加でfactory.cppのインクルードファイルの名前を「pluginfactoryvst3.cpp」から「pluginfactory.cpp」に変更する必要もあります。
32<削除>   :<削除>  
<削除>
33oec   :2020/07/25(土) 17:51:30  
初めまして。昨年末から、管理人さんのサイトを参考にちまちまVST3プラグイン開発を進めています。

bundleのResourcesからWAVファイルを読み出すのもダメじゃないけどやっぱりリソースがひとつのバイナリに
収まってる方がいいな!と思ってWin32のリソースアクセスを使う方法を見つけたり、
ノブがアニメ表示してるんならLEDとかアニメ表示で表現できるはずだ、クラス作らないといかんのか?と
ライブラリ探しまくってCMovieBitmapクラスを発見したりと、苦労しながらも少しずつ形が出来上がりつつあります。

今回はCKickButtonクラスの話です。
サイトの説明だと、ボタンを押していると1が、離すと0がイベントの値として得られるとのことでしたが、
試してみるとボタンを離した時にしかイベントが発生しません。標準のGUI画面だと、ノブを動かせば
どちらの動作でもイベントは発生するようですが期待した動作ではありません。

そこで、CKickButtonクラスを継承した独自クラスを作り、そこにonMouseMovedだけをオーバーライドして、
元のonMouseMovedメソッドのソースをコピーした後、値が変わったことを示す関数(valueChanged())を
実行するように追記しました。
(省略されました・・全てを読むにはここを押してください)
34oec   :2020/07/25(土) 17:53:48  
ふっ…隣の板と間違えて書き込んじまったぜ…。
35管理人★   :2020/07/26(日) 17:02:26  
oecさん

情報ありがとうございます。
確かにマウスを離したときだけvalueChanged()が呼ばれますね…

おそらく、
> キックボタンなのでキックされたらイベント発生という意味
の想定で作成されたボタンだと思います。

いただいた内容だとonMouseMovedの修正だけでできるようなので
使いどころは多そうですね。

VST作成頑張ってください!
名前
E-mail(省略OK)
内容