あれどうやるんやっけTouchDesigner 逆引き
TouchDesigner使う時にすぐ忘れてしまうOPsをメモしています
なんかあったら投稿お願いします。
複数のchから1chだけ取り出すCHOP
Select CHOP
DMX In CHOPやMIDI In CHOPなどで1レーンだけ取り出したい時
Clock CHOPをSelect CHOPに繋ぎます
"Channel Names" パラメータからnameを選択できます。
複数選択も可能です。
CHOPの値のキャストする(Float → Intみたいなこと)
Math CHOP
定期的にど忘れして探し回ります。たとえば**-1.0から+1.0**まで変化する数値があったとして、それを8ビット(=256段階)に収めたいな〜ってことありますよね??(DMXとか)Range > From Range / To Rangeに数値を入れます
変換する前が From で変換した後が To です
見た目じゃわかりませんけどゲージが変わってます。
ちなみに、From Rangeの上限より大きい値が入ってきてもクリップしません。上限を超えてもそのままの倍率で計算されていきます。クリップさせたい時はLimit CHOPを使いましょう。
値の上限と下限を決めるCHOP
Limit CHOP
入ってくる値の上限と下限を決めて、その値を振り切った時の動作を決めることができます。外部センサーやカメラのアンビエント入力などで使えますね。
左のNoise CHOPの振幅は-10〜+10です。右のLimit CHOPは-1から+1で設定し、タイプはClampです。
上限と下限を振り切った時の振る舞いは3タイプあります。
Clamp はみ出した部分をバッサリ切り落とします。いわゆるクリップです。
Loop はみ出した値を1周させます。いわゆるオーバーフローですね。
Zigzag はみ出した部分を折り返します。使い所はわかりませんが面白いです。
バラバラのchをまとめるCHOP
Merge CHOP
2つのLFO CHOPをMerge CHOPで1つのCHOPにまとめました。
CHOPの値を波形で見たい
Trail CHOP
Maxの"scope ~"みたいな感じでエディター上にて波形の確認をしたいときに使います。オシロスコープです。ゲインのオートレンジは効きますが、位相を合わせるのが下手くそです。可聴範囲とかはまず無理です。
LFO CHOPのノコギリ波をTrail CHOPで確認します。
JSONを定期的に更新する
LFO CHOP + Web Client DAT
LFO CHOPの波形をパルスにして、JSONをgetするWeb Client DATの"Request"を叩きましょう。この時LFO CHOPの"Frequency"が更新頻度になります。freq = 1 / T [sec] で求められます。サイバー攻撃になるので高頻度でリクエスト送信しないように注意してください
JSON DATを使わず取得したJSONをCHOP/DATに展開する
Web Client DAT (Python)
そもそもWeb Client DATはRequestからget完了までnullを返すのでオペレータ同士で繋いでしまうと空白時間ができてしまいます。Web Client DATのコールバックである onResponse()内で値を他のオペレータに渡してあげましょう。受け取ったJSONはdataに格納されるので、[]を使って配列参照をしましょう。
Web Client DATの右下のピンク矢印を押すとコールバックが出てきます。
Open Notify からISSのリアルタイム座標を取得してConstant CHOPに渡してみました。
def onResponse(webClientDAT, statusCode, headerDict, data, id):
op('iss_longitude').par.value0 = json.loads(data)['iss_position'][longitude]
op('iss_latitude').par.value0 = json.loads(data)['iss_position'][latitude]
return
PythonでどうにかしてしまえというDerivative社の雑な姿勢が見え透いてしまっています。