TouchDesigner Operaotr＆Python Scriptまとめ

※随時追加予定（2017/6/13現在）
TouchDesignerで日々作ったパッチから得られた知見をまとめています。
個人用のチートシートなのでかなり不完全なまとめなのはご了承ください。


## [OPERATORまとめ]
### **[SOP：Surface Operator]**
#### **Particle**：パーティクルに使用 
[Parameter]
Ramp Tab
- Type：方向
- aa


### **[TOP：Texture Operator]**
#### **Movie File In(TOP)**： 
ファイルからの入力／動画／静止画を読み込む／解像度最大1280
※日本語ファイル／フォルダはトラブルの可能性あるので使用しない
[Parameter]
Play Tab
- Play：

#### **Video Device In(TOP)**： 内臓カメラやキャプチャカードからの入力
[Parameter]
xxx Tab
- xxx：

#### **Text(TOP)**： テキスト入力して生成した画像
[Parameter]
xxx Tab
- xxx：

#### **Constant(TOP)**： 指定した値の色
[Parameter]
xxx Tab
- xxx：

#### **Level(TOP)**： コントラストやガンマ値などのレベルの変更
[Parameter]
xxx Tab
- xxx：

#### **Cross(TOP)**： 2つの入力を重ねてクロスフェード
[Parameter]
xxx Tab
- xxx：

#### **Tile(TOP)**： タイル状に並べる
[Parameter]
xxx Tab
- xxx：

#### **RGB to HSV(TOP)**： HSVカラースペースに変換
[Parameter]
xxx Tab
- xxx：

#### **Switch(TOP)**： 入力された値の切り替え
[Parameter]
xxx Tab
- xxx：



### **[CHOP：Channel Operator]**
#### **Math(CHOP)**： 四則演算など
[Parameter]
xxx Tab
- xxx：

#### **Audio Device Out(CHOP)**： 音声ファイルからの入力
[Parameter]
Audio Device Out Tab
- Play：

#### **Select(CHOP)**： 特定のデータを抽出
[Parameter]
xxx Tab
- xxx：

#### **Cache(CHOP)**： 
[Parameter]
xxx Tab
- xxx：

#### **Cache Select(CHOP)**： 
[Parameter]
xxx Tab
- xxx：

#### **Constant(CHOP)**： 一定の値。いくつも指定できる
[Parameter]
xxx Tab
- xxx：

#### **MIDI In(CHOP)**： MIDIデバイスからの入力データを受け取る
[Parameter]
xxx Tab
- xxx：




### **[COMP：Component Operator]**
#### **Slider(COMP)**： SLIDER UIで値をコントロール
[Parameter]
xxx Tab
- xxx：





#### **Ramp**：グラデーションを作るときに使用 
[Parameter]
Ramp Tab
- Type：方向
- aa

#### **Transform**： 
[Parameter]
Transform Tab
- Rotate：回転

#### **Composite**： 
[Parameter]
Composite Tab
- Operation：
Common Tab
- Output Resolution：
- OutPut Aspect
Tab共通
- Input OP：

#### **Replicator**： 
[Parameter]
Replicator Tab
- Template DAT Table：
- Operator Prefix：
- Master Operator
- Destination

#### **Audio File In(TOP)**： 音声ファイルからの入力
[Parameter]
Audio File In Tab
- Play：

#### **Audio Play(CHOP)**： 音声ファイルからの入力
[Parameter]
AudioPlay Tab
- Play：

#### **Audio Movie(CHOP)**： 音声ファイルからの入力
[Parameter]
Movie Audio Tab
- Play：

#### **Filter(CHOP)**： 
[Parameter]
Filter Tab
- Type：

#### **Leap Motion(TOP/CHOP)**
Leap Motionからの入力



## [Python Script]
#### [Basic]

- op('xxx')：xxxオペレーターの参照取得
- op('xxx').par.xxxxxx：xxxオペレーターのパラメータの参照
- ops('xxx*')：ワイルドカードで複数の参照  
→ あとは変数用意してfor variable in variablesとかで適当にループ回す  
- str(me.digits)：
- absTime.seconds：総経過時間
- absTime.frame：総フレーム数
- me.time.seconds：タイムライン一周分の時間
- me.time.frame：タイムライン一周分のフレーム数
- me：OP自身
- me.parent()：OPの親
- me.parent().var('xxx' , xxx)：local Variable xxx設定
- me.digits：
- me.op('xxx')：
- print(''' xxx ''')：シングルクォート3つで改行ありで出力できる
- parent()：親を参照
- parent(x)：親の祖先を参照。xは数値
- parent().digits：
- parent().name：
- op('xxx')['chan1']：xxxオペレーターのchan1の値を参照
- op('xxx')[0]：xxxオペレーターの配列0番目の値を参照（一つ上と同じ値）、OPにある値の分だけ配列数指定可能  
→ こっちの記述のほうが変更に強い
- op('xxx')chan(0)：xxxオペレーターのchan1配列0番目の値を参照
- op('xxx')chan(0).vals：xxxオペレーターのchannel全値をリストとして取得
- math.sin()：sin関数
- math.cos()：cos関数
- op('table')[row(横), column(縦)]：row、columnで指定した条件でTableの値を参照  
→ row, columnにはテーブルの指定の行＆列番号もしくは値の文字列でも指定可能
- app.samplesFolder + '/Map'：現在開いているファイルのフォルダの中身？
- 配列.len()：配列の数を返す
- 配列.append('')：配列に要素を追加
- 配列.extend(['', ''])：配列に配列要素を追加
- op('xxx').findChildren( $type, )：子要素を全取得, 引数で絞込める
- Dictionaryデータ.keys()：Keyを全て取得
- Dictionaryデータ.values()：Valuleを全て取得
- me.inputCell：テーブルのセルに演算できる
- int(val)：valをint型にする
- float(val)：valをfloat型にする
- str(val)：valを文字列に  
※Pythonでは数値と文字列を連結するとエラーになる。暗黙的に型変換をしてくれない

#### [Logic＆各演算子]
- if ~ else文  

``` Python
if condition:
  statement
else:
  pass
```
pass：breakと同じく論理構造から抜ける

- if ~ elif ~ else文  

``` Python
if condition 1:
  statement 1
elif condition 2:
  statement 2
else:
```
- A **and** B：AかつB。**and**で論理積  
- A **or** B：AもしくはB **or**で論理和  


#### [Channel Class]
- op.chan(x).index：channe(x)のインデックス
- op.chan(0).name：channel名
- op.chan(0).owner.name：channelの属すオペレーター名

#### [CHOP Class]
- op('xxx').samples：xxxオペレーターの値の配列数取得