※上記の広告は60日以上更新のないWIKIに表示されています。更新することで広告が下部へ移動します。

VST Tips(準備中)


自作VSTクラスの初期化ルール

ここでは前項で定義したMyMinimumVSTの以下2つの関数のうち、コンストラクタについて詳細を記載する。

  • コンストラクタ
  • void processReplacing()

コンストラクタ

AudioEffectXクラスを継承して作った自作クラスは必ずコンストラクタを持たなくてはならない。

自作したVSTクラスのコンストラクタでは最初に継承元(AudioEffectX)クラスのコンストラクタを呼び出す。

継承元コンストラクタは以下のとおり。
AudioEffectX(audioMasterCallback audioMaster, VstInt32 numPrograms, VstInt32 numParams)

継承元コンストラクタを呼び出した後はさらに以下の関数を呼び出さなければならない。

関数 概要
setNumInputs() VSTの入力数(ステレオ、モノラル等)を設定する関数。
setNumOutputs() VSTの出力数(ステレオ、モノラル等)を設定する関数。
setUniqueID() 全世界のVSTに一意に割り当てられたID設定する関数。自作したVSTを公開する場合は、
http://ygrabit.steinberg.de/~ygrabit/public_html/index.htmlよりIDを取得しなければならない。
isSynth() 自作するVSTがシンセなのかエフェクタなのかを設定する関数。
canProcessReplacing() 自作するVSTが音声処理可能であることを設定する関数。


サンプルコード

サンプルコードは以下のとおり。
  1. #define MY_VST_INPUT_NUM 2 //入力数。モノラル入力=1、ステレオ入力=2
  2. #define MY_VST_OUTPUT_NUM 2 //出力数。モノラル出力=1、ステレオ出力=2
  3.  
  4. #define MY_VST_UNIQUE_ID 'SMPL' //ユニークID
  5. //公開する場合は以下URLで発行されたユニークIDを入力する。
  6. //http://ygrabit.steinberg.de/~ygrabit/public_html/index.html
  7.  
  8. #define MY_VST_PRESET_NUM 1 //プリセットプログラムの数
  9. #define MY_VST_PARAMETER_NUM 0 //パラメータの数
  10.  
  11. MyMinimumVST::MyMinimumVST (audioMasterCallback audioMaster)
  12. : AudioEffectX (audioMaster, MY_VST_PRESET_NUM, MY_VST_PARAMETER_NUM)
  13. {
  14. //VSTの初期化を行う。
  15.  
  16. //以下の関数を呼び出して入力数、出力数等の情報を設定する。
  17. //必ず呼び出さなければならない。
  18. setNumInputs (MY_VST_INPUT_NUM); //入力数の設定
  19. setNumOutputs (MY_VST_OUTPUT_NUM); //出力数の設定
  20. setUniqueID (MY_VST_UNIQUE_ID); //ユニークIDの設定
  21.  
  22. isSynth (false); //このVSTがSynthかどうかのフラグを設定。
  23. //Synthの場合…true、Effectorの場合…false
  24.  
  25. canProcessReplacing (); //このVSTが音声処理可能かどうかのフラグを設定。
  26. //音声処理を行わないVSTはないので必ずこの関数を呼び出す。
  27.  
  28. //上記の関数を呼び出した後に初期化を行う
  29.  
  30. }

サンプルコードの解説

まず、1~9行目で必要なパラメータの定義を行っている。

次に12行目で継承元であるAudioEffectXのコンストラクタを呼び出し、audioMasterCallbackとプリセット数とパラメーター数を設定している。
MyMinimumVST::MyMinimumVST (audioMasterCallback audioMaster)
: AudioEffectX (audioMaster, MY_VST_PRESET_NUM, MY_VST_PARAMETER_NUM)
{
 

audioMasterCallbackは作成するVSTの引数をそのまま渡せばよい。プリセット数とパラメーター数は作成するVSTにあわせて値を設定する。
引数 概要
audioMasterCallback audioMaster audioMasterをそのまま渡す。
VstInt32 numPrograms プリセットプログラムの数。1以上の必要がある。
VstInt32 numParams パラメータの数。0以上の必要がある。

次に自作VSTに関する音声の入力数や出力数、ユニークID等の情報を関数を呼び出すことで設定している。(18~26行目)
なお、設定した情報はプログラムが終了するまで変更してはならない。

//以下の関数を呼び出して入力数、出力数等の情報を設定する。
	//必ず呼び出さなければならない。
	setNumInputs (MY_VST_INPUT_NUM);    //入力数の設定
	setNumOutputs (MY_VST_OUTPUT_NUM);  //出力数の設定
	setUniqueID (MY_VST_UNIQUE_ID);     //ユニークIDの設定
 
	isSynth (true);          //このVSTがSynthかどうかのフラグを設定。
	                         //Synthの場合…true、Effectorの場合…false
 
	canProcessReplacing ();  //このVSTが音声処理可能かどうかのフラグを設定。
	                         //音声処理を行わないVSTはないので必ずこの関数を呼び出す。
 

関数名 戻り値 引数 概要
setNumInputs なし VstInt32 inputs エフェクターの入力数の情報を設定する。
ステレオの場合…2、モノラルの場合…1となる。
setNumOutputs なし VstInt32 outputs エフェクターの出力数の情報を設定する。
ステレオの場合…2、モノラルの場合…1となる。
setUniqueID なし VstInt32 iD エフェクターのユニークIDを設定する。
自作VSTを公開しない場合はどんな値でもよい。
isSynth なし bool state 作成するVSTがシンセかどうかを設定する。シンセの場合…True、エフェクタの場合…falseとする。
canProcessReplacing なし bool state 32ビット浮動小数点で音声処理できるか設定する。どんなVSTでも無条件で呼び出さなければならない。

自作したVST固有の変数初期化やバッファの確保等は上記関数を呼び出した後に行う。
サンプルでは以下のコメントの後に記載するとよい。
//上記の関数を呼び出した後に初期化を行う
		:
		:
}
 





同一カテゴリのTips


項目 No. 概要
最小構成のVST No.1 最小構成の自作VSTに必要な関数等の説明。
No.2 最小構成の自作VSTの必須初期化項目について
No.3 最小構成の自作VSTの音声処理関数について
No.4 最小構成の自作VSTのサンプルソースコード全体


javascript plugin Error : このプラグインで利用できない命令または文字列が入っています。