したらばTOP ■掲示板に戻る■ 全部 1-100 最新50 | |

C++でVST作りの指摘・質問

207管理人★:2020/07/10(金) 00:02:18
ankさん

書籍のResourcesフォルダの配置位置に誤記がありました。申し訳ありません。
MyVstProject.vst3フォルダの配下ではなく、Contentsフォルダの配下にResourcesフォルダを移動させていただけますでしょうか?

208ank:2020/07/14(火) 21:31:39
返事が遅れまして申し訳ございません。
無事にリリース版までVSTの作成が進めることができました。
とても丁寧に書かれた本でC++に慣れていない人間にとって大変ありがたい存在です。続編の予定はあるのでしょうか。
VST作成の第一歩が踏み出せてとても感謝しております。

209管理人★:2020/07/15(水) 22:55:40
ankさん

無事進めることができてよかったです。

続編の予定ですが、今のところありません。
より高度なVSTを作成する際は、SDKのマニュアルか私のサイトなどを
ご確認いただければと思います。

210てつ:2021/02/18(木) 21:07:40
管理人さん、はじめまして。
著書VSTプラグインならびにホームページからこちらの掲示板にたどり着いた初心者です。

プロジェクトの設定を行い、その後、ビルドの実行を行ったのですが、下記のエラーが出ます。
リビルドを開始しました...
1>------ すべてのリビルド開始: プロジェクト:MyVstProject, 構成: Debug x64 ------
1>dllmain.cpp
1>myvst3.cpp
1>コードを生成中...
1> ライブラリ C:\Users\***\source\repos\MyVstProject\x64\Debug\MyVstProject.lib とオブジェクト C:\Users\***\source\repos\MyVstProject\x64\Debug\MyVstProject.exp を作成中
1>MSVCRTD.lib(exe_main.obj) : error LNK2019: 未解決の外部シンボル main が関数 "int __cdecl invoke_main(void)" (?invoke_main@@YAHXZ) で参照されました
1>C:\Users\***\source\repos\MyVstProject\x64\Debug\MyVstProject.vst3 : fatal error LNK1120: 1 件の未解決の外部参照
1>プロジェクト "MyVstProject.vcxproj" のビルドが終了しました -- 失敗。
========== すべてリビルド: 0 正常終了、1 失敗、0 スキップ ==========

ネットで自分なりに探したところ、プロパティのリンカー - システム ー サブシステムを
コンソールからWINDOWSに変えると解決したというサイトがあったので
試してみましたが、上記エラーの「未解決の外部シンボル main」が「未解決の外部シンボル WinMain」に変わるだけで同じエラーが出ます。

dllmain.cppは記載通りに追加したつもりです。

環境はWIN10, VisualStudio2019, VST-SDK3.6.14です。

解決方法をご教授いただけると幸いです。

長文で失礼いたしました。

211管理人★:2021/02/18(木) 21:26:06
てつさん

書き込みありがとうございます。

WinMainがないというエラーですので、おそらくVisual Studioのプロジェクト作成時に
「ダイナミックリンクライブラリ(.dll)」を選んでいない気がします。

「VST3のプロジェクトの作成」(https://vstcpp.wpblog.jp/?p=1319)にある
下記の画像の部分になります。
https://vstcpp.wpblog.jp/wp-content/uploads/2020/12/20201230_04.png

お手数だと思いますが、ご確認いただけますでしょうか。

212てつ:2021/02/19(金) 00:33:16
管理人様
迅速なご回答をありがとうございました。

ご指摘の部分からやり直してみたところ、ビルドが成功し、VST HOSTでの音の確認まで
無事に出来ました。
自分ではちゃんとやっているつもりではありましたが、このような些細なミスで
お手を煩わせてしまい、申し訳ありません。

今後ともよろしくお願いします。

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
1>C:\Users\shoyasaito\source\repos\MyVSTProject\MyVSTProject\factory.cpp(2,10): fatal error C1083: include ファイルを開けません。'public.sdk/source/main/pluginfactoryvst3.h':No such file or directory
1>プロジェクト "MyVSTProject.vcxproj" のビルドが終了しました -- 失敗。
========== ビルド: 0 正常終了、1 失敗、0 更新不要、0 スキップ ==========

と表示されてビルドが失敗します。
VSTSDKのバージョンは3.7.2、Visual StudioはCommunity 2019 Version 16.9.4です。
よろしくお願いします。

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...
.
.
.

ninja: build stopped: subcommand failed.

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

対策法等ご存じでしたらお教えいただきたいです.
vst_sdk 3.7.2,visual studio 16.10です.

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
vstgui.lib
vstgui_support.lib
vstgui_uidescription.lib

219<削除>:<削除>
<削除>

220minty:2024/03/05(火) 08:40:26
うつぼかずら様

以前はdllmainの件でお世話になりました、ありがとうございました。
新たに問題が発生しましたので質問させていただきます。パラメーター実装方法1にて紹介されているボリュームパラメーターですが、こちらで実装したところシンセ等が音声処理中にこのボリュームパラメータを弄るとノイズが乗ってしまいます。これは当方の環境の問題なのか、それとも仕様なのかご教授いただければ幸いです。

221管理人★:2024/03/06(水) 09:48:57
mintyさん

「パラメーター実装方法1」のサンプルでノイズが乗るようなことはないと思います。

222minty:2024/03/08(金) 12:38:09
うつぼかずら様

返信ありがとうございます。生成された波形を詳しく見たところ、どうやら音量(=振幅)変化で波形が不連続になることによってクリッピングノイズが発生しているようでした。こういった場合、フェードイン/フェードアウト処理を行って解決するのがやはり一般的でしょうか。
また、今回の件に関係あるか分かりませんが、DAW(ableton live 11)でparam1のオートメーションを書いた際、何故かオートメーション記述よりも3-8ms程度先に処理が行われてしまうようです。例えば、1:00:000の時点でparam1 = 0となるようなオートメーションを書くと、0:59:995時点でparam1=0となる、といった具合です。他のボリュームコントロールプラグインにて同様の処理を行うと正しい時刻で処理が行われる為、DAWの設定の問題ではなさそうです。
DAW側の設定も含めかなりいろいろ調べましたが正直なぜこのような事になっているのかさっぱり分からなかったので、もし何か知見がございましたらご教授いただければと思います。

223管理人★:2024/03/08(金) 19:27:36
mintyさん

急激な音量変化であれば確かにノイズが発生する可能性はありますね。
フェードイン/フェードアウトのような処理にすれば解決すると思います。

タイミングのずれはVST3プラグインのパラメーター実装方法1(https://www.utsbox.com/?p=737)に記載がある下記の通りです。
サンプルプログラムのタイミングについては、厳密なものとなっておりません。

厳密なタイミングにするには、getPoint()関数の引数sampleOffsetを参照する必要があるかと思います。

>パラメーターの操作(変更)は処理するサンプル(numSamples)内で複数回 操作されていることがあるため
>キュー(queue)という形式をとっています。
>例えば、「タグ(ID) 100のパラメーター」が処理するサンプル(numSamples)内で「10サンプル目に値が0.1」
>「20サンプル目に1.0」「30サンプル目に0.5」と操作された場合、下記のような形でIParamValueQueueクラスに変更情報が格納されます。


>前述の通り、パラメーターの操作(変更)は処理するサンプル内で複数回 操作されていることがあるのですが、
>今回のサンプルプログラムでは、最後に変更された値のみを反映しています。
>これは、一般的に処理するサンプルの長さが2〜5ミリ秒程度(※)のため、キュー(queue)の内容に合わせて1つ1つを処理(反映)しても、
>最後に変更された値のみを処理(反映)しても、聴覚的な差がほとんどないためです。
>(※一般的にnumSamplesは100〜200程度の値になる。サンプリングレートを44100Hzで換算すると2〜5ミリ秒程度)

224名無しさん:2024/03/15(金) 11:15:32
こんにちは、初めまして
コンプレッサーの記事のほうにコメントをいれてみたのですが、うまく書き込めないようで、こちらにも書いてみます。
重複していましたら、申し訳ありません。

ゲインの計算ですが、間違っていないでしょうか。

gainL = threshold + (tmpL - threshold) / ratio;
ここは、
gainL = (threshold + (tmpL - threshold) / ratio)/ tmpL;
ではないかと思いますが、私の理解が間違っていますでしょうか?

225管理人★:2024/03/15(金) 12:20:21
ご指摘ありがとうございます。
確かに計算式がおかしいですね。
この計算式だとthresholdを超えると一気に音量が下がって、そのあとまた上がってしまいますね…。

ご指摘の通り、いただいた計算式
 gainL = (threshold + (tmpL - threshold) / ratio)/ tmpL;
もしくは、
 gainL = 1.0f - (tmpL - threshold) / ratio;
のような計算式にすべきですね。

(どのような計算式が良いのかはわかりませんのでご了承ください。)


新着レスの表示


名前: E-mail(省略可)

※書き込む際の注意事項はこちら

※画像アップローダーはこちら

(画像を表示できるのは「画像リンクのサムネイル表示」がオンの掲示板に限ります)

掲示板管理者へ連絡 無料レンタル掲示板