【TouchDesigner】音の周波数を分割して取り出す

すぐ忘れるからメモ。
こちらの動画を参考にしました。

www.youtube.com

1. リサンプルする

Audio File In chopで音を読み込んだらAudoio Spectram chop につないで低周波〜高周波をマッピングする。
Audoio Spectram chopOutput LengthSet Length Manuallyにして、予めサンプル数を減らしておく。
またここで極端に減らすと不具合が起こるらしく、resampleでやるのが無難らしい。

で、情報をみるとSpectramで設定されているものと同じ2048の点で表している。

ここまで利用することはないので、Resample chopに繋いでサンプルの数を減らす。 commonタブのTime SliceをOffにする。
さらにResampleタブのMethodをNew Rate, New Intervalに。Unit ValuesをAbsoluteに。
StartとEndの設定をsecondsからsampleにしたら、好きな量のサンプルを設定する(今回は600にしたかったので0~599)。

ちなみにMethodについてはリファレンスを見ると下記のように書いてある。
正直よくわからない。

New Rate, New Interval / newint サンプルレートとCHOPの伸縮の両方を変更します。

リサンプル後の頂点を取り出す

Resample chopInfo chopに食わせ、Select chopでlengthだけを取り出す。
これを次のTrim chopで利用する。

Trimで音域ごとに分ける

Resample chopから3つTrim chopを繋いだら、先ほどのSelect chopのlengthをから切り出す部分を指定する。
Unit ValuesをAbsoluteにし、各StartとEndを次のように設定。

# High
op('select1')['length'] * 2/3 # start
op('select1')['length'] # end

# Mid
op('select1')['length'] / 3 # start
op('select1')['length'] * 2/3 # end

# Low
0 # start
op('select1')['length'] / 3 # end

最後にNull chopにそれぞれつないで完了。

あとがき

前述の動画のResample部分は比嘉 了さんのブログを参考にしたとのこと。

twitter.com

satoruhiga.com

動画もブログも大変参考になりました。