
概要 📖 – TouchDesigner 間のチャンネルデータ ネットワーク送信
Touch Out CHOPは、入力されたチャンネルデータをネットワーク経由で別の TouchDesigner プロセス(Touch In CHOP)へ送信する CHOPです。TCP/IP ストリーミング・UDP メッセージング・Multi-Cast UDP の 3 種類のプロトコルに対応し、複数マシン間でのリアルタイム チャンネル同期を実現します。
主な用途 🎯
- TouchDesigner 間でのチャンネルデータのネットワーク送信(TCP/IP / UDP / Multi-Cast UDP)
- Touch In CHOP と組合せた 2 マシン間のリアルタイム チャンネル同期
- 複数受信先への Multi-Cast UDP ブロードキャスト配信
- Max Queue Size / Cook Every Frame による送信レート・遅延制御
- Synced Ports モードによる複数ストリームのフレーム同期送信
データフロー 🔄
入力: チャンネルデータ
↓
Protocol 選択(TCP/IP / UDP / Multi-Cast UDP)
↓
Address / Port 指定
↓
Max Queue Size でキュー制御
↓
ネットワーク送信
初心者の方は、以下日本語書籍も手元にあると安心です。

実際の案件事例まで踏み込んで紹介されていて、効率よくスキルアップするなら必携の二冊です!
パラメータ解説 ⚙️
Touch Out Page 📋
Protocol .protocol 🌐
データ転送に使用するネットワーク プロトコルを選択。プロトコル毎に接続方法と Address パラメータの扱いが異なる
| 項目 | 内部名 | 説明 |
|---|---|---|
| Streaming (TCP/IP) | .streaming |
TCP/IP ストリーミング接続(信頼性重視、コネクション指向) |
| Messaging (UDP) | .msging |
標準 UDP ユニキャスト メッセージング(低遅延、コネクションレス) |
| Multi-Cast Messaging (UDP) | .multicastmsging |
UDP マルチキャスト メッセージング(複数受信先への同時配信) |
Address .address 📡
送信先ネットワーク アドレス:
- Address: 送信先のアドレス。すべてのプロトコルが送信側でのアドレス指定を必要とするわけではない(プロトコルに応じて要否が変わる)
Network Port .port 🔌
ネットワーク ポート番号:
- Network Port: 使用するネットワーク ポート番号。受信側の Touch In CHOP と同じポート番号を指定する
Active .active 🟢
データ送信のオン / オフ:
- Active: オフにするとデータは送信されない
Max Queue Size .maxsize 📦
送信待ちキューサイズの上限:
- Max Queue Size: 送信待機状態のイベント数の上限。接続が遅すぎてオーバーフローが発生するのを防ぐ
Max Queue Size Unit .maxsizeunit 📐
Max Queue Size パラメータの単位を選択
| 項目 | 内部名 | 説明 |
|---|---|---|
| Samples | .samples |
サンプル単位でキューサイズを指定 |
| Frames | .frames |
フレーム単位でキューサイズを指定 |
| Seconds | .seconds |
秒単位でキューサイズを指定 |
Cook Every Frame .cookalways 🔄
毎フレーム クック強制設定:
- Cook Every Frame: オンにすると下流の CHOP がクックしているかどうかに関わらず、この CHOP を毎フレーム クックする
Resend Names .resendnames 🏷️
チャンネル名再送信:
- Resend Names: 全チャンネル名を再送信する。通常は使用する必要はないが、念のため提供されている
Use Synced Ports .syncports 🔗
複数の Touch Out CHOP を単一のグローバル パイプで送信し、フレーム同期を担保するかどうか
| 項目 | 内部名 | 説明 |
|---|---|---|
| Off | .off |
ポート番号毎に個別のポートを使用 |
| On | .on |
同じ Transfer Port Type を使う全 Touch Out CHOP を単一のグローバル パイプ(内部的にポート 10500)で送信し、複数データストリームを一括フレーム同期する。Network Port は受信側 Touch In CHOP の振り分けに引き続き使用される。グローバル ポート(10500)は 1 プロセスのみ使用可能 |
Common Page 🔧
Time Slice .timeslice ⏱️
Time Slice モードの強制設定:
- オン: チャンネルを「タイムスライス」モードに強制
- タイムスライス: 前回のクックフレームから現在のクックフレームまでの時間
Scope .scope 🎯
影響を受けるチャンネルの絞り込み:
- Scope 文字列: 影響を受けるチャンネルを指定する文字列
- パターンマッチング:
*や[1-10]等のパターンが使用可能
Sample Rate Match .srselect ⚡
複数の入力 CHOP のサンプルレートが異なる場合の処理方法
| 項目 | 内部名 | 説明 |
|---|---|---|
| Resample At First Input’s Rate | .first |
最初の入力のレートで他をリサンプル |
| Resample At Maximum Rate | .max |
最高サンプルレートでリサンプル |
| Resample At Minimum Rate | .min |
最低サンプルレートでリサンプル |
| Error If Rates Differ | .err |
レート不一致でエラー |
Export Method .exportmethod 📤
CHOP チャンネルをパラメータに接続する方法
| 項目 | 内部名 | 説明 |
|---|---|---|
| DAT Table by Index | .datindex |
DAT テーブルのインデックスでチャンネルとパラメータを対応付け |
| DAT Table by Name | .datname |
DAT テーブルの行名でチャンネルとパラメータを対応付け |
| Channel Name is Path:Parameter | .autoname |
チャンネル名を `path:parameter` 形式で記述し直接対応付け |
Export Root .autoexportroot 🌳
Channel Name is Path:Parameter モード時のパス基点:
- Export Root パス:
autonameモードでチャンネル名のパス部分を相対化する基点 OP のパス
Export Table .exporttable 📋
DAT Table エクスポート方式での参照 DAT:
- Export Table DAT:
datindex/datnameモード時に参照する DAT のパス
Rename from .commonrenamefrom 🔤
リネーム対象チャンネルのパターン:
- Rename from パターン: リネーム対象とするチャンネル名のパターンマッチング文字列
Rename to .commonrenameto 🔁
リネーム後の置換パターン:
- Rename to パターン: Rename from にマッチしたチャンネルの新しい名前パターン (デフォルトはリネームなし)
実践アイデア 💡
Example 1: 2 マシン間の TCP/IP チャンネル同期 🖥️
Sender side: 入力 CHOP → Touch Out CHOP (TCP/IP) → ネットワーク → Receiver side: Touch In CHOP → Downstream
- 送信側で Touch Out CHOP の Protocol を「Streaming (TCP/IP)」に設定
- Address に受信側マシンの IP(例:
192.168.1.50)、Network Port(例:10000)を設定 - 受信側 TouchDesigner で Touch In CHOP を作成し、同じ Protocol / Port を指定
- Active をオンにすると入力チャンネルが受信側にリアルタイム反映される
Example 2: Multi-Cast UDP での複数受信先配信 📡
入力 CHOP → Touch Out CHOP (Multi-Cast UDP) → 複数の受信ノード (Touch In CHOP × N)
- Touch Out CHOP の Protocol を「Multi-Cast Messaging (UDP)」に切り替え
- Address にマルチキャスト アドレス(例:
239.255.0.1)を指定 - 受信側の各ノードを同じマルチキャスト グループに参加させる
- 1 つの送信から全ノードへ同時にチャンネルデータが届く
Example 3: Synced Ports でフレーム同期した複数ストリーム送信 🔄
Multiple 入力 CHOPs → Multiple Touch Out CHOPs (Use Synced Ports: On) → ネットワーク → Multiple Touch In CHOPs
- 送信したい複数の CHOP それぞれに Touch Out CHOP を接続
- 全 Touch Out CHOP で Use Synced Ports を「On」に設定
- Network Port は CHOP 毎に異なる値を指定(受信側で振り分けに使用)
- 内部ポート 10500 経由で全データが 1 フレーム内に同時送信され、受信側でフレーム整合が保たれる
関連オペレータ 🔗
類似機能OP 🔍
- OSC Out CHOP — 汎用 OSC プロトコル送信、TouchDesigner 以外の OSC 対応ソフト宛にも送信可能
- Pipe Out CHOP — 同一マシン内プロセス間通信向け、ネットワーク越しの送信には非対応
組み合わせ推奨OP 🔄
- Touch In CHOP — Touch Out が送信したパケットを受信側で展開する対になる CHOP
- Null CHOP — Touch Out の前段に挟んで送信内容を可視化・モニタリング
- Select CHOP — 送信したいチャンネルだけを抽出してから Touch Out に渡す
- Merge CHOP — 複数 CHOP を 1 つに統合してから Touch Out で一括送信
前処理・後処理CHOP 🎯
Info CHOP情報 📊
Touch Out CHOPは Info CHOP による詳細情報取得に対応しています。
CHOP固有情報 🎚️
start: CHOPインターバルの開始(サンプル単位)length: CHOPのサンプル数sample_rate: フレーム毎秒のサンプルレートnum_channels: CHOPのチャンネル数time_slice: タイムスライス有効時は1、無効時は0export_sernum: Export接続の更新回数
汎用オペレータ情報 🔄
total_cooks: プロセス開始からのクック回数cook_time: 最後のクック時間(ミリ秒)cook_frame: 最後にクックされたフレーム番号warnings: 警告数errors: エラー数
トラブルシューティング ⚠️
よくある問題と解決策 🔧
❌ Problem: 受信側にチャンネルデータが届かない
✅ Solution:
- Active パラメータがオンになっているか確認(オフでは送信停止)
- 送信側と受信側で Protocol と Network Port が一致しているか確認
- TCP/IP モードでは Address に受信側マシンの正しい IP / ホスト名が入っているか確認
- ファイアウォール / NAT 設定で該当ポートが許可されているか確認
❌ Problem: 送信遅延・パケット詰まりが発生する
✅ Solution:
- Max Queue Size を見直してオーバーフロー閾値を調整
- Max Queue Size Unit を Samples / Frames / Seconds から用途に合うものに変更
- TCP/IP は信頼性は高いが遅延しやすいので、低遅延が必要なら UDP に切り替え
- 前段に Select CHOP を入れて送信チャンネル数を絞り込む
❌ Problem: マルチキャストが特定ノードに届かない
✅ Solution:
- Protocol を「Multi-Cast Messaging (UDP)」に設定しているか確認
- Address がマルチキャスト範囲(
224.0.0.0〜239.255.255.255)内か確認 - 受信側ネットワーク スイッチで IGMP Snooping の設定を確認
- ルータ越えの場合は TTL とマルチキャスト ルーティング設定を確認
❌ Problem: 受信側でチャンネル名が古いまま更新されない
✅ Solution:
- Resend Names ボタンを 1 度押して全チャンネル名を再送信
- 送信側で入力 CHOP のチャンネル名が変わったときは自動的に再送信される設計だが、不整合があれば手動でトリガー
- Cook Every Frame をオンにして毎フレーム クックを強制し、名前更新の取りこぼしを防ぐ
❌ Problem: Synced Ports モードで複数ストリームのフレームがずれる
✅ Solution:
- 全 Touch Out CHOP で Use Synced Ports を「On」に統一しているか確認
- グローバル ポート 10500 を別プロセスが使用していないか確認(1 プロセスのみ使用可能)
- 受信側の Touch In CHOP も同じ Synced Ports 設定にしているか確認
参考資料 📚
その他 🔗
- TouchDesigner Wiki — CHOP 概要
- TouchDesigner Wiki — Category:CHOPs
- TouchDesigner Wiki ホーム
- TouchDesigner 公式 Forum
- Facebook — TouchDesigner Help Group
公式リソース 📖
- TouchDesigner公式ドキュメント – Touch Out CHOP
- Network Protocols(ネットワーク プロトコル解説)
- Touch In CHOP(対になる受信側 CHOP)
- Touch In/Out Synced Ports

