
概要 📖 – パラメータの変化で Python を実行
Parameter Execute DATは、監視対象パラメータの変化を契機に Python コールバックを実行する DATです。パラメータが変化するたびに対応するコールバック関数が呼ばれるため、UI 操作や外部入力に応じたイベント駆動の処理を素直に書けます。複数値をグループ単位でまとめて受け取りたい場合は ParGroup Execute DAT が適しています。
主な用途 🎯
- パラメータの値変化を Python コールバック (
onValueChange) で受け取って処理を起動 - 1 フレーム分の変化をまとめた一覧を
onValuesChangedでフレーム末尾に一括ハンドリング - パルス型パラメータのクリックを
onPulseで検出してアクションを実行 - 式・エクスポート・モードの切替を契機に別 OP やシステムの状態を更新
- カスタムパラメータの編集を起点に UI ロジックや state machine の遷移を駆動
データフロー 🔄
入力: 監視対象 OP とパラメータ (OPs/Parametersで指定)
↓
値・式・エクスポート・モードの変化検出
↓
Python コールバック (onValueChange(par)等) 実行
初心者の方は、以下日本語書籍も手元にあると安心です。

実際の案件事例まで踏み込んで紹介されていて、効率よくスキルアップするなら必携の二冊です!
パラメータ解説 ⚙️
Parameter Execute Page 📋
監視対象と起動位置 🎯
Active .active ✅
– Active (有効) — On 時、参照しているパラメータの変化に反応してコールバックを起動
– Off 時は監視を停止 (パラメータが変わってもコールバックは呼ばれない)
From Operator .fromop 📍
– From Operator (起動元 OP) — Execute From を Specified Operator にしたとき、スクリプトを実行する基点となる OP のパス
OPs .op 🔗
– OPs (監視対象 OP) — トリガーとなるパラメータが属する OP を指定
– パターン指定で複数 OP をまとめて監視可能
Parameters .pars 🎚️
– Parameters (監視対象パラメータ) — どのパラメータを監視してスクリプトを起動するか指定
– t* のようなパターンで複数パラメータをまとめて対象にできる
Edit.. .edit ✏️
– Edit.. (編集) — クリックでテキストエディタを開き、DAT 内の Python コールバック本体を編集
– 各コールバック関数 (onValueChange 等) の中身はこの DAT のテキストに直接記述する
起動位置の選択 .executeloc 🧭
Execute from (起動位置) — スクリプトをどの位置から実行するかを決めるメニュー (Tscript 専用)
| 項目 | 内部名 | 説明 |
|---|---|---|
| Specified Operator | .op |
From Operator (起動元 OP) で指定した OP の位置からスクリプトを実行 |
| Current Node | .self |
この Parameter Execute DAT 自身の位置からスクリプトを実行 |
監視するイベント種別 🔔
Value Change .valuechange 🔄
– Value Change (値変化) — 指定パラメータの値が何らかの形で変化したとき onValueChange() を実行
– 各フレームに 1 回呼び出される
Values Changed .valueschanged 📑
– Values Changed (値一覧変化) — フレーム末尾に onValuesChanged() を実行し、変化したパラメータの一覧をまとめて受け取る
– 各変化は (Par, 変化前の値) の名前付きタプルのリストとして渡される
On Pulse .onpulse ⚡
– On Pulse (パルス時) — パルス型パラメータがクリックまたは Par.pulse() で発火したとき onPulse() を実行
Expression Change .expressionchange 🧮
– Expression Change (式変化) — 指定パラメータの式が変化したとき onExpressionChange() を実行
– 例: 式を me.time.frame から me.time.seconds に変えると発火
Export Change .exportchange 📤
– Export Change (エクスポート変化) — 指定パラメータへのエクスポート経路が変わったとき onExportChange() を実行
– 例: エクスポート元が /chopname/chan1 から /chopname2/chan2 に変わると発火
Enable Change .enablechange 🔌
– Enable Change (有効/無効変化) — 指定パラメータが無効から有効に切り替わったとき onEnableChange() を実行
Mode Change .modechange 🔧
– Mode Change (モード変化) — 指定パラメータのモードが定数 / 式 / エクスポート / バインドの間で切り替わったとき onModeChange() を実行
監視するパラメータの種類 🗂️
Custom .custom 🏷️
– Custom (カスタム) — On 時、カスタムパラメータ (ユーザ定義パラメータ) を監視対象に含める
Built-In .builtin 🧱
– Built-In (組み込み) — On 時、組み込みパラメータ (標準パラメータ) を監視対象に含める
File Page 📁
ファイル入出力 💾
File .file 📂
– File (ファイル) — ロードするファイルのパスとファイル名 (.txt / .dat 対応)
Sync to File .syncfile 🔁
– Sync to File (ファイル同期) — On 時、プロジェクト起動時にファイルを読み込み、以降はファイルと双方向同期
– DAT 側の編集はファイルに書き戻され、ファイル変更も DAT に反映される
Load on Start .loadonstart 🔄
– Load on Start (起動時ロード) — On 時、プロジェクト起動時に 1 回だけファイルから読み込む
Load File .loadonstartpulse ⏬
– Load File (ファイル読込) — パルスでファイルを即時再ロード
Write on Toe Save .write 💾
– Write on Toe Save (保存時書込) — On 時、.toe プロジェクト保存時に DAT の内容をファイルに書き出す
Write File .writepulse ⏫
– Write File (ファイル書込) — パルスで即時ファイルへ書き出し
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: スライダーで明るさ反映 🎚️
Slider COMP (custom par) → Parameter Execute DAT (onValueChange) → Movie File In TOP
UI スライダーのカスタムパラメータを監視し、ユーザがスライダーを動かした瞬間に Python コールバックで TOP の明るさパラメータを書き換える、最もシンプルなイベント駆動フロー。
- 監視したい Slider COMP を用意し、Parameter Execute DAT の
OPsにそのパスを指定 Parametersに対象のカスタムパラメータ名を指定し、Customを On にするValue Changeを On にしてonValueChange(par)内で新しい値を読み出す- コールバック内で
op('moviefilein1').par.brightness = par.eval()のように反映する
Example 2: ボタンで保存実行 ⚡
Button COMP (pulse par) → Parameter Execute DAT (onPulse) → Script実行
カスタムのパルス型パラメータ (ボタン) を監視し、クリックされた瞬間に保存やリセットなどの一括処理を起動する用途。パルス専用のコールバックで明示的に「押された瞬間」だけを拾える。
- Button COMP にパルス型のカスタムパラメータ (ボタン) を作成
- Parameter Execute DAT の
OPsとParametersでそのパルスを指定 On Pulseを On にしてonPulse(par)にアクション処理を記述- ボタンクリックまたは
Par.pulse()でコールバックが起動し処理が走る
Example 3: 変化分をまとめて反映 📑
Control Panel COMP (custom pars) → Parameter Execute DAT (onValuesChanged) → Table DAT
コントロールパネルの複数パラメータを監視し、1 フレーム内で起きた変化をフレーム末尾に onValuesChanged でまとめて受け取り、設定値をテーブルに一括で書き戻す用途。
- Control Panel COMP の複数カスタムパラメータを
OPs/Parametersでまとめて指定 Values Changedを On にしてonValuesChanged(changes)でフレーム末尾に一覧を取得- 渡された (Par, 変化前の値) のリストを反復処理し、変化のあった項目だけ抽出
- Table DAT に
cell.valで設定値を一括反映して状態を永続化
関連オペレータ 🔗
類似機能OP 🔍
- ParGroup Execute DAT — パラメータをグループ単位でまとめて監視する版 (個別ではなく群)
- CHOP Execute DAT — CHOP チャンネル値の変化を監視する版
- DAT Execute DAT — DAT (テーブル) の内容変化を監視する版
- Panel Execute DAT — UI パネルの状態変化を監視する版
- OP Execute DAT — OP の状態 (フラグ・接続・削除等) の変化を監視する版
- Execute DAT — プロジェクトのライフサイクル (start / exit / pre-frame 等) を監視する版
組み合わせ推奨OP 🔄
- Parameter DAT — 監視対象 OP のパラメータ一覧をテーブルとして取得して併用
- Script DAT — コールバック内で別の DAT を加工して結果を生成
- Text DAT — 共通の処理関数を外部 module としてまとめて import
前処理・後処理DAT 🎯
- 前処理: Parameter DAT、Text DAT
- 後処理: Script DAT、Null DAT
Info DAT情報 📊
Parameter Execute DAT は Info DAT による詳細情報取得に対応しています (num_rows / num_cols / total_cooks / cook_time 等の共通 DAT Info チャンネルを参照可能)。
DAT 固有情報 📋
num_rows: DAT の行数num_cols: DAT の列数type: DAT の型 (table / text)is_table: テーブル形式の場合 1、テキスト形式の場合 0
汎用オペレータ情報 🔄
total_cooks: プロセス開始からのクック回数cook_time: 最後のクック時間 (ミリ秒)cook_frame: 最後にクックされたフレーム番号warnings: 警告数errors: エラー数
トラブルシューティング ⚠️
よくある問題と解決策 🔧
❌ Problem: パラメータを変えてもコールバックが呼ばれない
✅ Solution:
Activeパラメータが On になっているか確認OPsとParametersに監視対象が正しく指定されているか確認- 監視したいイベント種別 (
Value Change/On Pulse等) が On になっているか確認 - カスタムパラメータを監視する場合は
Customが、標準パラメータの場合はBuilt-Inが On か確認
❌ Problem: 毎フレーム呼ばれて処理が重い
✅ Solution:
- 値が確定したときだけ処理したい場合は
Value ChangeではなくValues Changedを使いフレーム末尾に一括処理 onValueChange内で前回値と比較し、必要なときだけ重い処理を実行- 監視対象を
Parametersパターンで本当に必要なものだけに絞る
❌ Problem: Python 例外で他のコールバックも止まる
✅ Solution:
- コールバック内を
try / except Exception as e:で囲んで例外を吸収 - Textport / Console でスタックトレースを確認し例外箇所を特定
- 重い処理 (ファイル I/O など) はコールバック外に逃がし、UI スレッドをブロックしない設計に変更
❌ Problem: 想定と違うタイミングで発火する
✅ Solution:
- 値変化のたびに呼びたいなら
Value Change、フレーム末尾の確定値でよいならValues Changedを使い分ける - 式やエクスポートの変更で発火している場合は
Expression Change/Export Changeを Off にして切り分け Built-Inを On にしていると内部パラメータの変化でも発火するため、不要なら Off にする
参考資料 📚
その他 🔗
- TouchDesigner Wiki — DAT 概要
- TouchDesigner Wiki — Category:DATs
- TouchDesigner Wiki ホーム
- TouchDesigner 公式 Forum
- Facebook — TouchDesigner Help Group
公式リソース 📖
- TouchDesigner公式ドキュメント – Parameter Execute DAT
- ParameterexecuteDAT Class (Python API 一覧)
- Category:Python (TouchDesigner の Python 一覧)

