また結構間をあけてしまった。復習しながらやってる始末、、、

今回は前回説明したノコギリ波しか出さないLFOの出力の加工について。
増幅とオフセット
まず簡単なところでは0から1の出力を例えば0から2にしたい場合。これはものすごく簡単でLFOの出力に単純に2を乗算(掛け算)するだけ、0から5の間なら5を乗算しておけばOK。

じゃ、簡単なところをもう一つ、-5から5の間にしたい時どうするか、LFOの出力に10を乗算して更にその出力から-5する。実に簡単。高校の時に習わなかったっけ、

y=ax+b

ってやつ、これに似てるね。



WaveShaperによる加工
次はちょっとレベルアップ。今ノコギリ状に変化する値を滑らかな波型にしたい場合。
この場合は新しくWaveShaper(Value)ノードを用意する。使い方はLFOの出力をWaveShaperノードのInputPin Input:へコネクトし、右上にあるInputPin Shape:をマウス右クリックで選択する。例えばSineにすればLFO出力をサイン波(正弦波)に加工してくれる。他に選択できるものはLinear,Inverse,Triangle,RectangleでLinearは変化なし、Inverseは逆転、Triangleはノコギリ形状に似てはいるけどちょっと違う。Rectangleは入力が0と1の間でへんかしてるなら、その最小と最大、つまり0と1しか出力しないパルスのようなデジタルな波に仕立て上げることが出来る。

とりあえずは説明するよりも実際に使ってみたほうが分かりやすい。図では結果をIOBoxへ出力しているけど、Pointのx:とかCircleの半径とかにコネクトしてGDIへ描画するともっとよく分かると思う。

また、図でWaveShaperのShape:へコネクトしている左端に逆三角のついたノードはIOBox(Enumerations)ってヤツで列挙型といわれるIOBox。説明してる本人も良く分かっていないが、右クリックでプルダウンするタイプのInputPinにこれをコネクトするとそれに応じたメニューを作ってくれるらしい。あくまでインターフェース的な使い方しか現状は出来ないッポイ。

話はそれたが、工夫次第でなんでもできるようになった。サイン波同士を加算なんてのも出来るしあらゆる波を作成できるじゃないか。
サイン波があってコサインは何故無いんだって単純な疑問も思いつくけどコサインはサインの90度位相がずれた状態なので、入力元のLFOのInputPin Phase:に0.5または-0.5を入力してやればよい。

値のリマッピング
後もう一つMap(Value)ノードって便利なヤツがある。
説明にぴったりな用語を知らないので言いにくいけど、Source Min:Source Max:上にある入力値を改めてDistination Min: Distination Max:上の値へリマッピングするノード? んー説明しづらいな。図で書けばわかりやすいかな。冒頭で説明した5を乗算したり、10掛けて5引くなんて操作にも代用できる。ケースバイケースだけど最小値、最大値が決定している場合に使うには便利なノードだ。

最後に簡単なサンプル、秒をサークルの大きさでカウントするカウンター(count.zip)

GDIはつまらなくなって来たなぁ。DX9も使ってみるか

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です