Top

あちゃぴーの自転車通勤
u-he UHM言語 学習12 Interpolate

ウェーブテーブル内のフレーム間を補間するコマンド。現状6タイプが用意されているが、ドキュメントに説明がない・・・

switch
crossfade
spectrum
zerophase
morph1
morph2

とりあえず、101個のフレームを用意し、フレーム0にFMのフィードバックノコギリ波、フレーム100に矩形波を入れる。この状態ではフレーム1~99は無音状態になっている。 そしてInterpolateコマンドを使って間の波形を作る。Typeの違いをチェックするために順次試してみた。 同時にsin~-sinも同じようにして試してみた。

NumFrames = 101
Wave start=0 end=0 "sin( 2*pi*phase + 2.2 * lowpass(y,0.95,0) )"
Spectrum start=100 end=100 lowest=1 highest=60 
"select((index % 2 != 0), 1 / index, 0)"
Interpolate  Start=0 End=100 Type=switch 

switch

u-he uhm

フレーム間の補完がないモードだが、ウェーブテーブルの場合、基本フレーム間のデータはないので、どうしたものか? 現状ではcrossfadeと同じ結果となっている。 sin~-sinをswitchでモーフィングした場合、crossfadeと同じになった。イメージとしてはzerophaseが近いのだが・・

u-he uhm

crossfade(デフォルト)

u-he uhm

フレーム間をなめらかに補完。 各x座標のサンプルは垂直に遷移していく。 Interpolateを使わないモーフィングの場合、これと同じ変化となった。 下はsin~-sinをcrossfadeでモーフィングした場合。最もベーシックな遷移。

u-he uhm

spectrum

u-he uhm

各パーシャルの位相を補間する。CPUの使用量が約2倍という。 途中かなり混沌としている。 下はsin~-sinをspectrumでモーフィングした場合。位相がずれながら遷移していく。

u-he uhm

zerophase

u-he uhm

各部の位相がゼロになる。 一番素直そうな変化だが、波形が悪かったのかスタート地点のフレームから数フレームが怪しい動き。

sin~-sinをzerophaseでモーフィングした場合、sinが続き、最後の100フレーム目でいきなり-sinになる。この挙動は、どちらかというとswitchなんだが・・

u-he uhm

morph1

u-he uhm

割と癖のある変化をする。このmorphの場合どの波形でも割と面白い動きを見せる。 sin~-sinをmorph1でモーフィングした場合、spectrumと同じ。

u-he uhm

morph2

u-he uhm

morph1との差が常に微妙という感じ。差が分からない。 sin~-sinをmorph2でモーフィングした場合、spectrumと同じ。

u-he uhm

その他コマンドオプション

さらに以下のオプションがあるが、明らかに変化するものもあれば、分かりにくいものもある。挙動について説明があまりされていないので、自分で探るしかないようだ。とりあえず保留。

uhm言語