2006年02月10日

vstxsynth.cppファイルの解読その10

次のgetOutputProperties()では、出力のプロパティを登録していると思われるが、いまいち意味が解らない。
たぶん、出力1と出力2でステレオを構成していることを登録していると思われる。
posted by Bumpyうるし at 22:14| Comment(0) | TrackBack(0) | ■ VST用C++入門

vstxsynth.cppファイルの解読その9

次のsetParameter()では、パラメータが変更された時、その値を再登録する。

また、その次のgetParameter()ではパラメータの値を呼び出す。
posted by Bumpyうるし at 22:01| Comment(0) | TrackBack(0) | ■ VST用C++入門

vstxsynth.cppファイルの解読その8

次のgetParameterName()では、パラメータで表示される名前を登録する。
 オシレータ1
  波形 Wave 1
  周波数 Freq 1
  ボリューム Levl 1
 オシレータ2
  波形 Wave 2
  周波数 Freq 2
  ボリューム Levl 2
 全体ボリューム Volume
posted by Bumpyうるし at 21:39| Comment(0) | TrackBack(0) | ■ VST用C++入門

vstxsynth.cppファイルの解読その7

次のgetParameterDisplay()では、パラメータで表示される値を登録する。
 波形 Sawtooth(0.5未満)、Pulse(0.5以上)
 周波数 float型にフォーマット
 ボリューム dB型にフォーマット
posted by Bumpyうるし at 21:33| Comment(0) | TrackBack(0) | ■ VST用C++入門

vstxsynth.cppファイルの解読その6

次のgetParameterLabel()では、パラメータで表示される単位名を登録する。
 波形 Shape
 周波数 Hz
 ボリューム dB
posted by Bumpyうるし at 21:26| Comment(0) | TrackBack(0) | ■ VST用C++入門

vstxsynth.cppファイルの解読その5

次のsetProgramName()は、カレントプログラムにプログラム名を登録している。
 プログラム名 name(中身はBasic

また、その次のgetProgramName()ではカレントプログラムのプログラム名をnameに登録している。

どちらも似ていてややこしい。
posted by Bumpyうるし at 20:15| Comment(0) | TrackBack(0) | ■ VST用C++入門

vstxsynth.cppファイルの解読その4

次のsetProgramName()は、プログラムについて記されている。
カレントプログラムを現在のプログラムにし、プログラムに登録されているパラメータ値を呼び出していると思われる。
posted by Bumpyうるし at 20:04| Comment(0) | TrackBack(0) | ■ VST用C++入門

vstxsynth.cppファイルの解読その3

次の~VstXSynth()は、VstXSynthクラスの消滅時に行うことが記されている。
フリーストア領域に登録されたprogramsを削除する。
posted by Bumpyうるし at 19:53| Comment(0) | TrackBack(0) | ■ VST用C++入門

vstxsynth.cppファイルの解読その2

次にVstXSynthの段落。
これがメインとなるわけだが、さらに細かく段落分けされている。

まず、AudioEffectXでプログラム数とパラメータ数を登録している。
 プログラム数 128
 パラメータ数 7(その1で解説したパラメータ)
上の値は、vstxsynth.hファイルで定義されている。

また、カレントプログラムなども登録している。
 カレントプログラム 0
 入力数 0(入力なし)
 出力数 2(ステレオ)
 processReplacingの使用 使用(省略はtrueらしい)
 プラグインタイプ シンセ(省略はtrue
 固有ID VxS2(Steinbergに登録されているID)

initProcessでシンセの基本波形を作成しているが、詳しくはvstxsynthproc.cppファイルの解読時にする。
要は使用するノコギリ波とパルス波の作成をしてるってこと。
posted by Bumpyうるし at 19:45| Comment(0) | TrackBack(0) | ■ VST用C++入門

vstxsynth.cppファイルの解読その1

vstxsynth.cppファイルの解読を自分なりにしてみる。
段落ごとに解読していく。

まずはVstXSynthProgramの段落から始める。

ここでは、デフォルトのパラメータ値を登録しているようだ。
2つのオシレータの設定などを行っている。
ここで、初期設定は以下の通り。
 オシレータ1
  波形 0(ノコギリ波)
  周波数 0(基本周波数からずらす値)
  ボリューム 0.33
 オシレータ2
  波形 1(パルス波)
  周波数 0.05(基本周波数からずらす値)
  ボリューム 0.33
 全体ボリューム 0.9
 プログラム名 Basic

ここで、パラメータは全て0〜1のfloat型であることが重要。
posted by Bumpyうるし at 19:10| Comment(0) | TrackBack(0) | ■ VST用C++入門

2006年02月06日

vstxsynth.cppファイル

ホストとのやり取りを行うシンセのメインとなるプログラムが組んである。
これを解読していくと、vstxsynthというシンセはノコギリ波とパルス波の2種類を使って音色を作り出していることが解る。

使用されている主な変数は、
fWaveform1 Wave1の波形(値)
fFreq1 Wave1の周波数(値)
fVolume1 Wave1のボリューム(値)
fWaveform2 Wave2の波形(値)
fFreq2 Wave2の周波数(値)
fVolume2 Wave2のボリューム(値)
fVolume メインボリューム(値)

kWaveform1 Wave1の波形(表示用)
kFreq1 Wave1の周波数(表示用)
kVolume1 Wave1のボリューム(表示用)
kWaveform2 Wave2の波形(表示用)
kFreq2 Wave2の周波数(表示用)
kVolume2 Wave2のボリューム(表示用)
kVolume メインボリューム(表示用)

kNumPrograms プログラム数
kNumOutputs 出力数
kNumParams パラメータ数
posted by Bumpyうるし at 01:25| Comment(0) | TrackBack(0) | ■ VST用C++入門

VSTのSDK 2.4付属のサンプル

VSTのSDK 2.4をダウンロードすると(「VSTを作るには」参照)、いくつかのサンプルが付属している。
その中で、簡単なシンセのサンプルvstxsynthってのを研究してみることにする。
このシンセに関わるファイルは多数あるが(1つのシンセを作るのに1つのファイルだけとは限らない)、C++入門を勉強してくると(「C++入門」参照)、なんとなく中身が解ってくる。

シンセを構成している主なファイルは、
vstxsynth.cpp ホストとやり取りを行うシンセの中心
vstxsynth.h シンセの初期化などを行う
vstxsynthproc.cpp シンセのDSP処理を行う
gmnames.h GM音源のプログラム名リスト
vstxsynth.rc vstxsynth.vstxmlファイルを読み込んでいる
vstxsynth.vstxml VSTの表示部分に使用されると思われるXML形式ファイル
当然、SDKのソースファイルも使用している。

Visual Studio 2005などのVisual C++開発ソフト用のプロジェクトファイルも付属しているので、それを開くと必要なファイルが一目瞭然である(「Visual Studio 2005 Standard Edition」参照)。
posted by Bumpyうるし at 00:02| Comment(0) | TrackBack(0) | ■ VST用C++入門