
概要 📖 – 入力を番号で切り替え
Switch DATは、複数つないだ入力 DAT のうち番号で指定した 1 つだけを出力に通す DATです。選ぶ番号は最初の入力が0から始まり、Indexに数値や式を入れて切り替えます。負の番号を使うと末尾から数えた入力を選べ、番号が範囲外になったときの折り返し方も選べます。
主な用途 🎯
- 複数つないだ入力 DAT のうち1 つだけを番号で選んで下流に流す
- 数値や式で番号を切り替え、表示するテーブルを動的に変える
- 状態やモードに応じて参照するデータを切り替える分岐の起点にする
- 番号が範囲外になったときの振る舞いを選んで安全に折り返す
- 負の番号を使って末尾から数えた入力を選ぶ
データフロー 🔄
入力: 複数の DAT (input0,input1, …)
↓
番号の決定 (Indexに数値や式を入力)
↓
範囲外の処理 (Extend:Clamp/Loop/ZigZag)
↓
出力: 選ばれた 1 つの入力テーブル
初心者の方は、以下日本語書籍も手元にあると安心です。

実際の案件事例まで踏み込んで紹介されていて、効率よくスキルアップするなら必携の二冊です!
パラメータ解説 ⚙️
Switch Page 📋
入力の選択番号 .index 🔢
通す入力を番号で指定するパラメータ
Index .index 🔢
– Index (選択番号) — どの入力を出力に通すかを番号で指定します。最初の入力が0、次が1と続きます。
– 数値だけでなく式も書けるため、ほかのオペレータの値と連動させて切り替える番号を動的に変えられます。
範囲外の処理 .extend 🔄
Extend (範囲外の処理) — 選択番号が入力の数を超えたときの折り返し方を決めるメニューパラメータ。負の番号も使えます。
| 項目 | 内部名 | 説明 |
|---|---|---|
| Clamp | .clamp |
範囲外の番号を最小・最大の有効な番号に丸める (端で止める) |
| Loop | .loop |
範囲を超えたら先頭に戻って繰り返す (循環) |
| ZigZag | .zigzag |
端まで来たら向きを反転して折り返す (往復) |
Common Page 🔧
Language .language 📝
DAT が動作するスクリプト言語の決定方法
| 項目 | 内部名 | 説明 |
|---|---|---|
| Input | .input |
入力 DAT のスクリプト言語を使用 |
| Node | .node |
この DAT 自身のスクリプト言語を使用 |
Edit/View Extension .extension 📄
外部エディタに公開するファイル拡張子の選択
| 項目 | 内部名 | 説明 |
|---|---|---|
| dat | .dat |
汎用的なファイル拡張子 dat を使用 |
| From Language | .language |
DAT のスクリプト言語に応じた拡張子を自動選択 |
| Custom Extension | .custom |
Custom Extension で指定したカスタム拡張子を使用 |
Custom Extension .customext 🔤
Edit/View Extension が Custom Extension のときに適用される拡張子:
- Custom Extension 文字列:
Edit/View Extensionがcustomのときに使用される任意のファイル拡張子
Word Wrap .wordwrap 🔁
ノード表示でのワードラップ (折り返し) の有効化
| 項目 | 内部名 | 説明 |
|---|---|---|
| Input | .input |
入力 DAT の Word Wrap 設定を継承 |
| On | .on |
Word Wrap を有効化 (ノード上の長い行を折り返し表示) |
| Off | .off |
Word Wrap を無効化 (折り返さずそのまま表示) |
実践アイデア 💡
Example 1: 番号でテーブルを切り替え 🔀
Table DAT (×3) → Switch DAT (Index で選択) → DAT to CHOP
内容の異なる複数の Table DAT を Switch DAT に並べてつなぎ、Index の数値を変えるだけで下流に流すテーブルを切り替える基本フロー。表示中のデータをワンタッチで差し替えたいときに使う。
- Table DAT を 3 つ用意し、それぞれ別の内容を入れる
- Switch DAT を後段に配置し、3 つの Table DAT を入力につなぐ
Indexを0/1/2と変えて出力が切り替わることを確認- 後段の DAT to CHOP 等に渡して数値として利用
Example 2: 式で参照データを分岐 🧮
Select DAT (×2) → Switch DAT (Index に式) → Web Server DAT
Switch DAT の Index に式を書いて、ほかのオペレータの状態に応じて参照するデータを自動で切り替える用途。モードや状態フラグの値を式で参照すれば、配線を変えずに分岐の出力先を動的に決められる。
- 切り替えたいデータ源 (例: Select DAT など) を複数 Switch DAT につなぐ
Indexに状態を表す値を返す式を記述 (例:op('state')['mode',1])- 状態が変わると自動で出力テーブルが切り替わることを確認
- 後段の Web Server DAT 等で配信
Example 3: 番号を循環させて巡回 🔄
Table DAT (×4) → Switch DAT (Extend=Loop) → Out DAT
Count CHOP などで増え続けるカウンタ値を Switch DAT の Index に渡し、Extend を Loop にしておくことで、入力数を超えても先頭に戻りながら順番にテーブルを巡回表示する用途。スライドショー的な切り替えに向く。
- 巡回させたい Table DAT を複数 Switch DAT につなぐ
ExtendをLoopに設定し、範囲外でも先頭へ戻るようにする- 増え続けるカウンタ値を
Indexに式で渡す - 入力数を超えても先頭から繰り返し巡回することを確認
Example 4: 末尾から数えて選択 🎯
DAT (×3) → Switch DAT (Index=-1, Extend=Clamp) → Null DAT
Switch DAT の Index に負の番号を入れて、末尾から数えた入力を選ぶ用途。最後につないだ入力を常に出したいときに Index を -1 にしておくと、入力の本数が変わっても末尾を選び続けられる。
- 複数の DAT を Switch DAT につなぐ
Indexに-1を入力して末尾の入力を選択ExtendをClampにして範囲外を端で止める- 後段の Null DAT で出力を固定して下流へ渡す
関連オペレータ 🔗
類似機能OP 🔍
- Select DAT — 入力線をつながず DAT パラメータでパス参照して 1 つの DAT を取り込む。番号ではなくパスで選ぶ対の用途
組み合わせ推奨OP 🔄
- Table DAT — Switch DAT の代表的な入力源。複数並べて番号で切り替える
- Merge DAT — 複数テーブルを 1 つに結合する。切り替えではなく合成したいときの対比
- Null DAT — 切り替え後の出力を固定点として下流に渡し、参照先を安定させる
- Out DAT — 選ばれたテーブルをコンポーネントの出力として外へ出す
前処理・後処理DAT 🎯
Info CHOP情報 📊
Switch DAT は Info CHOP による詳細情報取得に対応しています。num_rows / num_cols で現在出力中テーブルのサイズを、total_cooks / cook_time / cpu_time で実行統計を参照でき、選択中の入力が切り替わったタイミングの検知や、出力テーブルのサイズ監視に役立ちます。
DAT 固有情報 📋
num_rows: DAT の行数num_cols: DAT の列数type: DAT の型 (table / text)is_table: テーブル形式の場合 1、テキスト形式の場合 0
汎用オペレータ情報 🔄
total_cooks: プロセス開始からのクック回数cook_time: 最後のクック時間 (ミリ秒)cook_frame: 最後にクックされたフレーム番号warnings: 警告数errors: エラー数
トラブルシューティング ⚠️
よくある問題と解決策 🔧
❌ Problem: Index を変えても出力が切り替わらない
✅ Solution:
- 選びたい入力が Switch DAT の入力線に正しくつながっているか確認 (つないでいない番号は選べません)
Indexが最初の入力0から数える点を確認 (1 番目の入力は0)Indexに式を入れている場合は、式が想定した整数を返しているかIndex欄の表示値で確認
❌ Problem: 範囲外の番号を入れたとき意図しない入力が出る
✅ Solution:
ExtendがClamp/Loop/ZigZagのどれになっているか確認- 端で止めたいだけなら
Clamp、巡回したいならLoop、往復したいならZigZagを選ぶ - 想定外の折り返しが起きる場合は
Indexの値が入力数の範囲に収まっているか見直す
❌ Problem: 負の番号 (-1 など) を入れても末尾が選ばれない
✅ Solution:
- Switch DAT は負の番号で末尾から数えられるので、
Indexに-1を入れて末尾を選ぶ - 入力の本数が想定どおりか確認 (入力が 1 つだけだと負の番号でも同じ入力が出ます)
ExtendをClampにして、極端に小さい負の値でも端で止まるようにする
参考資料 📚
その他 🔗
- TouchDesigner Wiki — DAT 概要
- TouchDesigner Wiki — Category:DATs
- TouchDesigner Wiki ホーム
- TouchDesigner 公式 Forum
- Facebook — TouchDesigner Help Group

