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
フレーム間の補完がないモードだが、ウェーブテーブルの場合、基本フレーム間のデータはないので、どうしたものか? 現状ではcrossfadeと同じ結果となっている。 sin~-sinをswitchでモーフィングした場合、crossfadeと同じになった。イメージとしてはzerophaseが近いのだが・・
crossfade(デフォルト)
フレーム間をなめらかに補完。 各x座標のサンプルは垂直に遷移していく。 Interpolateを使わないモーフィングの場合、これと同じ変化となった。 下はsin~-sinをcrossfadeでモーフィングした場合。最もベーシックな遷移。
spectrum
各パーシャルの位相を補間する。CPUの使用量が約2倍という。 途中かなり混沌としている。 下はsin~-sinをspectrumでモーフィングした場合。位相がずれながら遷移していく。
zerophase
各部の位相がゼロになる。 一番素直そうな変化だが、波形が悪かったのかスタート地点のフレームから数フレームが怪しい動き。
sin~-sinをzerophaseでモーフィングした場合、sinが続き、最後の100フレーム目でいきなり-sinになる。この挙動は、どちらかというとswitchなんだが・・
morph1
割と癖のある変化をする。このmorphの場合どの波形でも割と面白い動きを見せる。 sin~-sinをmorph1でモーフィングした場合、spectrumと同じ。
morph2
morph1との差が常に微妙という感じ。差が分からない。 sin~-sinをmorph2でモーフィングした場合、spectrumと同じ。
その他コマンドオプション
さらに以下のオプションがあるが、明らかに変化するものもあれば、分かりにくいものもある。挙動について説明があまりされていないので、自分で探るしかないようだ。とりあえず保留。
- Snippets=X (1-500) (Morph1/2 only)
- Threshold=X (-120 - 0) (Morph1/2 only)
- Weighting=X:distance、level、both (Morph1/2 only)