
概要 📖 – UDP通信でデータを受信
UDP In DATは、指定したポートで待ち受け、ネットワーク経由で届く UDP メッセージを受信してテーブルに表示する DATです。受信したメッセージはコールバック処理にも渡せるため、外部機器やアプリとの連携で広く使われます。
主な用途 🎯
- 外部アプリからのリアルタイムメッセージ受信
- センサー機器やマイコンからのデータ取り込み
- 別 PC やネットワーク機器との双方向連携の受信側
- マルチキャスト配信の同時受信
- 受信メッセージを起点としたコールバックによるイベント処理
データフロー 🔄
入力: ネットワーク上の UDP メッセージ
↓
受信・解析処理(Row/Callback Format に応じた行分割)
↓
出力: テーブル形式の受信データ
初心者の方は、以下日本語書籍も手元にあると安心です。

実際の案件事例まで踏み込んで紹介されていて、効率よくスキルアップするなら必携の二冊です!
パラメータ解説 ⚙️
Connect Page 📋
Protocol .protocol 🎛️
Protocol (通信方式) — どの種類の UDP 通信で待ち受けるかを選びます。
| 項目 | 内部名 | 説明 |
|---|---|---|
| Messaging (UDP) | .msging |
通常の UDP メッセージ通信で待ち受け |
| Multi-Cast Messaging (UDP) | .multicastmsging |
マルチキャスト配信のメッセージを待ち受け |
接続設定 🔌
Network Address .address 🌐Network Address (受信アドレス) — 待ち受けるマルチキャストの IP アドレスを指定します。
Port .port 🔢Port (ポート番号) — 待ち受けるネットワークポートを指定します。
Shared Connection .shared 🔗Shared Connection (接続の共有) — 同じネットワーク方式を使う他のネットワーク系 DAT と同一の接続を共有します。
Active .active ✅Active (有効化) — このチェックボックスで接続の有効・無効を切り替えます。
Row/Callback Format .format 📐
Row/Callback Format (行の分割方法) — 受信データをどの単位でテーブルの行に分けるかを決めます。
| 項目 | 内部名 | 説明 |
|---|---|---|
| One Per Byte | .perbyte |
受信した 1 バイトごとに 1 行を追加 |
| One Per Line | .perline |
受信した 1 行ごとに 1 行を追加 (行末は \n / \r / ヌル文字で区切り) |
| One Per Message | .permessage |
受信した 1 メッセージごとに 1 行を追加 |
Received Data Page 📥
コールバック設定 ⚙️
Callbacks DAT .callbacks 📜Callbacks DAT (コールバック DAT) — 受信メッセージ 1 件ごとに 1 回実行されるスクリプトを持つ DAT を指定します。
Execute from .executeloc 📍Execute from (実行元) — スクリプトをどの場所から実行するかを決めます。
From Operator .fromop 🎯From Operator (起点オペレータ) — Execute from を Specified Operator にしたとき、状態変化でスクリプト実行を引き起こすオペレータ兼スクリプトの実行基点となるパスを指定します。
出力制御 📊
Clamp Output .clamp 🧮Clamp Output (出力数の制限) — デフォルトでは 100 メッセージに制限されますが、この設定で無制限を含む任意の数に変更します。
Maximum Lines .maxlines 📏Maximum Lines (最大行数) — 保持するメッセージ数の上限を指定します。古いメッセージから先に削除されます。
Clear Output .clear 🧹Clear Output (出力のクリア) — 見出し行を除く全行を削除します。スクリプトでクリアするには op( "opname" ).par.clear.pulse() を使います。
Bytes Column .bytes 🔣Bytes Column (バイト列の列) — メッセージの生のバイト列を別の列に出力します。
実践アイデア 💡
Example 1: スマホアプリから操作 📱
スマホ OSC アプリ → UDP In DAT → DAT to CHOP → パラメータ制御
スマートフォンのコントローラアプリから送られてくる UDP メッセージを UDP In DAT で受信し、テーブルの値を抽出してビジュアルのパラメータをリアルタイムに動かす基本フローです。
- UDP In DAT の Port にアプリの送信先ポートを設定
- Active をオンにして受信を開始
- 受信したテーブルの値を後段で数値として抽出
- 抽出値をビジュアルのパラメータに反映
Example 2: 別PCから映像同期 🖥️
送信側 PC (UDP Out) → ネットワーク → UDP In DAT → 同期トリガー
複数台での上映で、マスター PC が送る同期信号を各 PC の UDP In DAT で受け取り、再生タイミングを揃える用途です。低遅延な UDP の特性を活かします。
- 送信側 PC で同期信号を UDP で配信
- 受信側の UDP In DAT で同一ポートを待ち受け
- 受信メッセージをトリガーに再生位置を補正
Example 3: コールバックで処理 📜
外部機器 → UDP In DAT (Callbacks DAT) → Python スクリプト実行
受信メッセージごとに Callbacks DAT のスクリプトを実行し、メッセージ内容に応じて分岐処理を行う応用例です。テーブル監視ではなくイベント駆動で扱いたい場合に向きます。
- Callbacks DAT にメッセージ処理スクリプトを記述
- UDP In DAT の Callbacks DAT 欄にそのパスを指定
- 受信のたびにスクリプトが自動実行されて分岐処理
関連オペレータ 🔗
類似機能OP 🔍
- OSC In DAT — OSC 形式のメッセージを受信する DAT
- TCP/IP DAT — TCP / IP 接続でデータを送受信する DAT
- UDT In DAT — 信頼性のある UDT プロトコルで受信する DAT
- WebSocket DAT — WebSocket 接続でメッセージを送受信する DAT
組み合わせ推奨OP 🔄
- UDP Out DAT — 受信に対応する送信側として双方向通信を構成
- Convert DAT — 受信したテーブルの区切りや形式を変換
- Select DAT — 受信テーブルから必要な行・列だけ抽出
- Execute DAT — 受信内容の変化を起点にスクリプトを実行
前処理・後処理DAT 🎯
- 前処理: In DAT
- 後処理: Convert DAT、Select DAT、Substitute DAT、Out DAT
Info情報 📊
UDP In DAT は Info DAT による状態情報の取得に対応しています。
DAT 固有情報 📋
num_rows: DAT の行数num_cols: DAT の列数type: DAT の型 (table / text)is_table: テーブル形式の場合 1、テキスト形式の場合 0
汎用オペレータ情報 🔄
total_cooks: プロセス開始からのクック回数cook_time: 最後のクック時間 (ミリ秒)cook_frame: 最後にクックされたフレーム番号warnings: 警告数errors: エラー数
受信状態の情報 📡
num_rows: 現在テーブルに保持されている受信行の数num_cols: 出力テーブルの列数
トラブルシューティング ⚠️
よくある問題と解決策 🔧
❌ Problem: メッセージが受信できない
✅ Solution:
Activeがオンになっているか確認Portが送信側と一致しているか確認- ファイアウォールが該当ポートの UDP 通信を遮断していないか確認
❌ Problem: 受信データが正しく行に分かれない
✅ Solution:
Row/ Callback Formatを送信側のデータ構造に合わせて選択- 改行区切りなら One Per Line、メッセージ単位なら One Per Message を選択
- 生のバイト列を確認したい場合は
Bytes Columnをオンにする
❌ Problem: 古いメッセージが消えてしまう
✅ Solution:
Maximum Linesの上限を増やすClamp Outputで出力数を無制限に設定- 後段で Convert DAT 等を使い必要なデータを別 DAT に退避
参考資料 📚
その他 🔗
- TouchDesigner Wiki — DAT 概要
- TouchDesigner Wiki — Category:DATs
- TouchDesigner Wiki ホーム
- TouchDesigner 公式 Forum
- Facebook — TouchDesigner Help Group

