Top

あちゃぴーの自転車通勤
u-he UHM言語 学習 14 Waveform Blend Modes

ブレンドの種類が9種あるので、それぞれを確認。 1フレームだけのサイン波に対してコサイン波をブレンド(演算)する。 この手の波形の演算は数式処理ソフトMaximaを使うと視覚的に表現できるので、そのグラフも載せておく。

replace

単純な置き換えなので、サイン波がコサイン波に置き換わる。

NumFrames = 1
Wave target=aux1 "sin(2 * pi * phase )"
Wave "cos(2 * pi * phase )"
Move target=aux1 start=0 end=0  to=0 blend=replace
Wave "aux1"
u-he uhm

add

足し算。

NumFrames = 1
Wave target=aux1 "sin(2 * pi * phase )"
Wave "cos(2 * pi * phase )"
Move target=aux1 start=0 end=0  to=0 blend=add
Wave "aux1"
u-he uhm u-he uhm

sub

引き算。

NumFrames = 1
Wave target=aux1 "sin(2 * pi * phase )"
Wave "cos(2 * pi * phase )"
Move target=aux1 start=0 end=0  to=0 blend=sub
Wave "aux1"

u-he uhm

u-he uhm

multiply

掛け算。

NumFrames = 1
Wave target=aux1 "sin(2 * pi * phase )"
Wave "cos(2 * pi * phase )"
Move target=aux1 start=0 end=0  to=0 blend=multiply
Wave "aux1"

u-he uhm

u-he uhm

multiplyAbs

かける側(cos)を絶対値にして掛け算。

NumFrames = 1
Wave target=aux1 "sin(2 * pi * phase )"
Wave "cos(2 * pi * phase )"
Move target=aux1 start=0 end=0  to=0 blend=multiplyAbs
Wave "aux1"

u-he uhm

u-he uhm

divide

本来の割り算であれば、sin/cos=tan、下のmaximaのグラフのようにタンジェントカーブになって無限大が出てしまう。 そこで何かをやっている。無限大の位置は0となっている。プラスマイナスは絶対値に変換されているので、こんな感じになっているようだ。

NumFrames = 1
Wave target=aux1 "sin(2 * pi * phase )"
Wave "cos(2 * pi * phase )"
Move target=aux1 start=0 end=0  to=0 blend=divide
Wave "aux1"

u-he uhm

u-he uhm

無理やりmaximaで書くと下のようになる。マイナス無限大になっているけど、これを最大値1にして、最小値を0にした感じだろうか。

u-he uhm

divideAbs

こちらも同じく謎計算。ほぼ矩形波になった。

NumFrames = 1
Wave target=aux1 "sin(2 * pi * phase )"
Wave "cos(2 * pi * phase )"
Move target=aux1 start=0 end=0  to=0 blend=divideAbs
Wave "aux1"
u-he uhm

min

サイン波とコサイン波の両方の値を見て、絶対値で小さい方の値を取っている。ただし符号は変化させない。

NumFrames = 1
Wave target=aux1 "sin(2 * pi * phase )"
Wave "cos(2 * pi * phase )"
Move target=aux1 start=0 end=0  to=0 blend=min
Wave "aux1"

u-he uhm

u-he uhm

max

サイン波とコサイン波の両方の値を見て、絶対値で大きい方の値を取っている。ただし符号は変化させない。

NumFrames = 1
Wave target=aux1 "sin(2 * pi * phase )"
Wave "cos(2 * pi * phase )"
Move target=aux1 start=0 end=0  to=0 blend=max
Wave "aux1"

u-he uhm

u-he uhm
uhm言語