2007年11月30日

CKickButton()メンバ関数

Define a button with 2 states using 2 subpixmaps. One click on it, then the second subpixmap is displayed. When the mouse button is relaxed, the first subpixmap is framed.

2つの補助pixmapを使っている2つの値でボタンを定める。それをクリックすると、第2の補助pixmapは表示される。マウスボタンが放されると、最初の補助pixmapに戻る。

CKickButtonクラスのメンバ関数。

CKickButton(const CRect &size, CControlListener *listener, long tag, CBitmap *background, CPoint &offset)
CKickButton(const CRect &size, CControlListener *listener, long tag, CCoord heightOfOneImage, CBitmap *background, CPoint &offset)


Steinberg Media Technologies」参照
posted by Bumpyうるし at 00:56| Comment(0) | TrackBack(0) | ■ VST用GUI用語辞典

COnOffButton()メンバ関数

a button control with 2 states.
Define a button with 2 positions. The pixmap includes the 2 subpixmaps (i.e the rectangle used for the display of this button is half-height of the pixmap). When its value changes, the listener is called.

2つの値によるボタン制御。
2つの位置でボタンを定める。pixmapは、2つの補助pixmap(すなわち、長方形がこのボタンの表示のために使うのはpixmapの半分の高さ)を含む。その値が変わるとき、リスナーは呼ばれる。

COnOffButtonクラスのメンバ関数。

COnOffButton(const CRect &size, CControlListener *listener, long tag, CBitmap *background, long style=kPreListenerUpdate)

Steinberg Media Technologies」参照
posted by Bumpyうるし at 00:51| Comment(0) | TrackBack(0) | ■ VST用GUI用語辞典

CMovieBitmap()メンバ関数

a bitmap control that displays different bitmaps according to its current value.
A movie pixmap allows to display different subpixmaps according to its current value.

その現在の値によって異なるビットマップを示すビットマップのコントロール。
pixmapがその現在の値によって異なる補助pixmapを示させる。

CMovieBitmapクラスのメンバ関数。

CMovieBitmap(const CRect &size, CControlListener *listener, long tag, CBitmap *background, CPoint &offset)

Steinberg Media Technologies」参照
posted by Bumpyうるし at 00:45| Comment(0) | TrackBack(0) | ■ VST用GUI用語辞典

2007年11月27日

久々のVSTi作り〜

と言っても、ほとんどVSTi用のC++を忘れてしまいました。。。弱
こんな時に自分用にVSTi辞書を残しておいて良かった、良かった〜

未だにVSTiのSDKはバージョンアップしてなさそうなので、そのまま使用できてこれまた良かった、良かった〜


今回作ろうかと思っているのは、原点に戻り「8つの倍音正弦波を合成して1つのオシレータ波形を形成するシンセ」を作ろうかと考えています。
今まで作ったVSTiは倍音だけでなくピッチをずらした音も合成できたけど、これはノイズになってしまう欠点もある為、今回は「倍音のみ」としました。
オシレータは3基を予定しているので、合成する正弦波数は24になります。
これに、ノイズ専用オシレータ(?)を加えて減算処理(フィルタなど)をしようかと。。。

いろいろと実験をした結果、8つの正弦波で作れる波形は以下のとおりです。

■ 正弦波 Sine
sine.gif

y=sin(2πx/T)
1倍の正弦波のみで作成。
形は全く問題なし。

■ 鋸歯状波 SawTooth
sawtooth.gif

y=sin(2kπx/T)/k (k=1, 2, 3, 4, 5, 6, 7, 8)
1〜8倍の正弦波のみで作成。
本来は無限倍まで合成させるので、形はやや問題あり。。。

■ 矩形波 Square
square.gif

y=sin(2kπx/T)/k (k=1, 3, 5, 7, 9, 11, 13, 15)
奇数倍の正弦波、1〜15倍のみで作成。
こちらも無限倍まで合成させるので、形はやや問題あり。。。
でも、意外とこの波形は気に入っているのだ〜

■ 三角波 Triangle
triangle.gif

y=sin(2kπx/T)/(k*k) (k=1, 5, 9, 13)
y=-sin(2kπx/T)/(k*k) (k=3, 7, 11, 15)

奇数倍の正弦波だが、その値により正負が逆転する。
実は、これに気付くのにものすごく時間がかかった。。。
まさか正負が逆転するなんて思わないよなぁ。。。

フリーの優秀なFFTアナライザーのおかげで、やっと導き出すことが出来ました。。。ありがたや、ありがたや〜

efu's page

これも1〜15倍の奇数倍正弦波のみで作成しましたが、その割に美しい形をしていますね!


以上より、8種類の倍音正弦波を使用して様々な波形を作成できることが解ります。
今までは、Waveテーブル(出来上がった波形)を使用していましたが、今回は全てリアルタイムに波形を形成させる予定です。
これにより、Waveテーブルの問題である低域と高域でのノイズが生じない利点と、上記4種類の基本波形以外の複雑な波形を基波形として作り出すことができるわけです。
で、作成された3つの基波形を更に合成させます。

考えただけでもどんな音がするのかワクワクしますが、これでショボかったらショックですなぁ。。。


でも、更にオリジナル(?)アイデアも考えてあります。
それは、「波形を歪ませる」というアイデアなんですが、たった1つの正弦波を歪ませるだけで、自動的に倍音が増えてしまうというわけなんです。
何十個も倍音を合成しなくても良い利点はありますが、当然歪ませた為のノイズも含まれてしまいます。

Sine2.gifノーマルの正弦波

Sine3.gif少し歪ませた正弦波

以上より、周波数成分のグラフでケバケバが増えたのが解ります。
ケバケバの部分が倍音です。


これらの波形を使ったVSTiを作っていこうと思っているのですが、果たして無事完成するかどうか。。。謎
posted by Bumpyうるし at 23:46| Comment(0) | TrackBack(0) | ■ 開発中VST集