板情報 | コンピュータ ]

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

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

C++でVST作り→http://www39.atwiki.jp/vst_prog/
119管理人★   :2016/05/25(水) 07:28:37  
symさん
書き込みありがとうございます

詳しくはわからないのですが、
setChunk()、getChunk()関数あたりを使えばうまくできるかもしれません。
(VST SDK 2.4の場合です。)

setChunk()、getChunk()関数はVSTプラグイン独自のパラメータ形式で
保存したい場合に使用する関数です。

setChunk()、getChunk()関数をオーバーライドし、
「自作VSTのパラメーター + バージョン情報」を保存しておけば、
自作VSTのバージョンに合わせて前バージョンから値を引き継ぐパラメータと
初期化するパラメーターで分けれるのではないかと思います。

(省略されました・・全てを読むにはここを押してください)
120管理人★   :2016/05/28(土) 10:18:44  
symさん

setChunk()、getChunk関数の使用方法がわかりましたので
サンプルソースコードを下記にアップロードしました。

・サンプルコード ダウンロードページ
 http://vstcpp.wpblog.jp/?page_id=776

 ■ファイル名
   20160528_MyChunkTestVST.zip

setChunk()、getChunk関数をオーバーライドするとともに
コンストラクタでprogramsAreChunks()を呼び出す必要があります。

>>119で書いたように「自作VSTのパラメーター + バージョン情報」を
(省略されました・・全てを読むにはここを押してください)
121sym   :2016/05/30(月) 22:19:21  
>>120
管理人さん

まさかサンプルまで作っていただけるとは、非常に助かります!
今から試してみて、また書き込ませていただきます。ありがとうございます。
122sym   :2016/05/31(火) 11:15:38  
管理人さん

作っていただいたサンプルをもとに試したところ、
希望通りの挙動をしてくれるようになりました。
丁寧にコメントを付けてくださっていたので助かりました。

programsAreChunks関数を呼んでいない状態のVSTで作られたfxpファイルやDAWのプロジェクトファイルを
programsAreChunksでtrueとした状態のVSTで読み込む際は、どうやらsetChunk関数が呼び出されないようだったので、
今回のバージョンに限ってこれをもとにChunkを使っていない旧バージョンであるかどうかを判定することにしました。
ご教示いただいたとおり見えないパラメータとしてバージョン情報を書き込むようにしたので、次回バージョンからそちらでバージョン判定をしようと思います。

サンプラーでのファイル名であったり、Glitchなど可変長のデータを扱うようなVSTをいくつか見てきてこれまで疑問に思っていたので、そういった点でも非常に参考になりました。
今回はありがとうございました。
123管理人★   :2016/05/31(火) 20:34:54  
symさん

無事解決してよかったです。
また何かありましたら可能な範囲で調べてみます。
124名無しさん   :2017/03/17(金) 23:39:29  
https://www39.atwiki.jp/vst_prog/pages/79.html

こちらの CMidiMsgの addMidiMsg と getMidiMsg の処理中での キュー処理 問題があるのでは?
add add get get add get の順に呼び出すと、未格納なバッファにアクセスすることになるかと思います。
125管理人★   :2017/03/20(月) 02:13:38  
>>124さん
ご指摘ありがとうございます。

たしかにaddMidiMsg()の途中でgetMidiMsg()を呼び出すと
何が格納されているか分からない領域にアクセスしますね…
(buf[]領域内なのでVSTが落ちるようなことはないと思いますが…)

VST2.4だと「processEvents()→processReplacing()」の順に呼び出され、
基本的には「clearMidiMsg()→addMidiMsg()×n回→getMidiMsg()×n回」
の順になるのであまり問題はないと考えています。

本来なら修正すべきですが、少し手間なのでそのままにしたいと思います。
他のアプリでCMidiMsgクラスを流用する場合は修正する必要があります。
名前
E-mail(省略OK)
内容

2  こんにしょわ  (書き込み数 : 3)

1めるり   :2014/09/25(木) 06:43:08  
どうも
某所で過労死しかけてたのを病気だと思ってさらに死にかけてた者です><
時々お邪魔しますー
というかあれもう落としてます><
レジストリのいじりすぎとシステムドライブの中身がカオスになったので環境入れるところからですけどねー

ではではー
2管理人★   :2014/09/25(木) 22:33:33  
めるりさん

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

某所がもっと活発になればと思い作ってみました。
不明点などがございましたら質問いただければと思います。

これからもよろしくお願いします。
無理をなさらないようお体にお気を付けください。
3名無しさん   :2016/07/27(水) 01:43:04  
こんにょしょわ。今更やろうと思ってます
素敵な掲示板とwikiですね。今からじっくり見てみようと思います
名前
E-mail(省略OK)
内容

3  はじめまして。  (書き込み数 : 25)

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

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

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

作成中のコンテンツの完成を楽しみにしています!
19管理人   :2012/01/26(木) 11:29:53  
willさん
返信が遅れました

resource.rcは作成しておりますでしょうか?
作成している場合、プロジェクトへ追加しておりますでしょうか?
20sam   :2012/05/22(火) 16:06:26  
こんにちは
今、自力で VST Plug-in 作成にチャレンジしています。
プロジェクトの作成方法などだいたい同じやり方でやっております。
もっと早くココを知っていれば、もっと楽に早くできたのに。。。。。

一つだけ質問です。

VC++ プロジェクトの準備
No.4 VSTを作成するに当たって必要なコンパイラ、リンカ設定を追加する
http://www39.atwiki.jp/vst_prog/pages/61.html
において、
プロジェクトプロパティ→「構成プロパティ」→「C/C++」→「コード生成」
→「ランタイムライブラリ」を「マルチスレッド(/MT)」に設定されておりますが、
その理由というか必然性を教えていただきたいと思います。

(省略されました・・全てを読むにはここを押してください)
21管理人   :2012/05/23(水) 00:14:18  
samさん書き込みありがとうございます。

プロジェクトの設定を/MTにしないとエラーがでてビルドできなかった気がします。

現在パソコン修理中ですぐに確認することができませんが、
わかり次第連絡させていただきます。(今週末あたりになりそうです。)
22管理人   :2012/05/29(火) 21:41:28  
samさん

「ランタイムライブラリ」の設定ですが、
「マルチスレッド(/MT)」でなくてもビルドはできます。
ただし、自分のパソコン以外で実行するとエラーとなり、
実行できない可能性があります。

なお、確認の際に、「ランタイムライブラリ」を
空白にしようとしましたができませんでした。
プロジェクトのプロパティダイアログで左上の「構成」が
「すべての構成」になっていないでしょうか?
23SKY   :2013/02/02(土) 20:51:53  
VSTの仕様が知りたかったので
わかりやすく書いてあってとても参考になりました。
ありがとうございました。
24管理人   :2013/02/03(日) 15:22:28  
SKYさん

訪問いただきありがとうございます。

わかりにくい部分や作成中の部分がありますが、
わかる範囲でお答えさせていただきますので
これからもよろしくお願いいたします。
25<削除>   :<削除>  
<削除>
名前
E-mail(省略OK)
内容