
概要 📖 – CHOP データを TCP/IP で送信するネットワーク出力
Pipe Out CHOPは、TCP/IP 経由で CHOP チャンネルデータを別 TouchDesigner プロセスへ送信する CHOPです。サーバー / クライアントモードを切り替えてマルチマシン構成での信号配信を実現し、対となる Pipe In CHOP で受信します。
主な用途 🎯
- 別 TouchDesigner プロセスへの CHOP チャンネルのTCP/IP 送信
- マルチマシン構成でのセンサー値・制御信号のリアルタイム配信
- サーバー / クライアントモードでの双方向接続管理
- タイムスライス送信によるフレーム間サンプルの全データ転送
- テキストポートコマンドのリモート実行(スクリプト送出)
データフロー 🔄
入力: CHOP チャンネル
↓
Active 判定(送信有効性)
↓
Send Input / Send Current Sample 判定
↓
TCP/IP ソケット (Server Address : Port)
↓
受信側 Pipe In CHOP
初心者の方は、以下日本語書籍も手元にあると安心です。

実際の案件事例まで踏み込んで紹介されていて、効率よくスキルアップするなら必携の二冊です!
パラメータ解説 ⚙️
PipeOut Page 📋
Connection Mode .mode 🔌
この Pipe Out CHOP をサーバーとして動作させるか、クライアントとして動作させるかを切り替えるメニュー
| 項目 | 内部名 | 説明 |
|---|---|---|
| This Operator is Client | .client |
クライアントとして動作し、指定したサーバーへ接続する |
| This Operator is Server | .server |
サーバーとして動作し、クライアントからの接続を待ち受ける |
接続先パラメータ 🌐
Server Address .address 📡
– 接続先サーバーのコンピュータ名または IP アドレス
– foo / foo.bar.com / 100.123.45.78 等の形式が使用可能
– 同一マシン内で接続する場合は localhost を指定
Server Port .port 🔢
– 通信に使用するネットワークポート番号
– 送信側と受信側で同じポート番号を設定する必要あり
送信制御 🎚️
Active .active 🔘
– オン: データ送信を有効化
– オフ: データは送信されない(接続自体は維持される場合あり)
Send Input .sendinput 📨
– Pipe Out CHOP の入力に接続された CHOP データを送信するか否かのトグル
– オフ時は入力 CHOP は送信されない(Send All Data / Script のみ送信可)
Send Current Sample Only .sendsingle 🎯
– Pipe Out CHOP がタイムスライスでない場合のみ有効
– オン: 現在フレームのサンプルのみを送信
– オフ: 前回クック以降から現在クックまでの全サンプルを送信(フレームスキップ時に複数サンプル送信)
Single Sample .sample 📍
シングルサンプルモードで、どのフレームのサンプルを送信するかを決定するメニュー
| 項目 | 内部名 | 説明 |
|---|---|---|
| Frame 1 | .sstart |
フレーム 1(先頭フレーム)のサンプルを送信 |
一括送信・スクリプト 📤
Send All Data .upload 📦
– ボタン押下時に、全チャンネル名とそのデータを 1 回のバーストで送信
– 初期化時のフルデータ同期に使用
Script .script 📝
– パイプ経由で送信する 1 回限りの textport コマンド文字列を指定
Send Script .sendscript ▶️
– Script パラメータに設定した textport コマンドを 1 回送信するボタン
Cook Every Frame .cookalways 🔄
Cook Every Frame .cookalways ⏰
– オン: この CHOP を毎フレーム強制クックする
– 表示ジオメトリと直接関係しない CHOP は通常毎フレームクックされないため、送信を確実にしたい場合はオンにする
接続監視・デバッグ 🩺
Send Monitor Pulses .pulse 💓
– フレームごとに単一 null 文字のパルスを送信し、接続を監視する
– 接続をアクティブに保ち、受信側 Pipe In CHOP が接続状態を正しく報告できるようにする
Echo Messages to Console .echo 📟
– 送出する全データを Dialogs メニューから開ける Console に出力
– 詳細は Pipe In CHOP の同オプションを参照
Callbacks DAT .callbacks 🧩
– 各送信イベント用のコールバックメソッドを含む DAT のパス
– 使い方は pipeoutCHOP_Class を参照
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: マルチマシン構成でのセンサー値配信 📡
Serial CHOP → Math CHOP (正規化) → Pipe Out CHOP (Server) → [ネットワーク] → Pipe In CHOP (Client) → 受信側プロジェクト
- 送信側マシンで Pipe Out CHOP の Connection Mode を Server に設定
- Server Address を
localhostまたはバインドする IP、Server Port を任意(例: 7000)に設定 - 受信側マシンの Pipe In CHOP を Client モードにし、送信側マシンの IP とポートを指定
- Active をオンにして接続を確立、受信側で正規化済みセンサー値が取得できることを確認
Example 2: タイムスライス送信で全フレームのオーディオ波形を転送 🎵
Audio Device In CHOP → Pipe Out CHOP (Time Slice On, Send Current Sample Only Off) → Pipe In CHOP → 解析側
- Audio Device In CHOP でマイク入力を取得(サンプルレート 44100Hz 等)
- Pipe Out CHOP の Common Page で Time Slice をオンに設定
- Send Current Sample Only をオフにし、前回クック以降の全サンプルを送信対象にする
- 受信側で 1 フレーム間の全オーディオサンプルが連続的に届くため、欠落なく波形解析が可能
Example 3: リモート textport コマンドの実行 📜
Pipe Out CHOP (Script パラメータ) → Send Script ボタン押下 → Pipe In CHOP (受信側) → textport で実行
- Pipe Out CHOP の Script パラメータに送信したいコマンド(例:
op('container1').par.display = 0)を記述 - 受信側プロジェクトで Pipe In CHOP を接続し、コールバック DAT で script 受信時の処理を定義
- Send Script ボタンを押すと 1 回だけ textport コマンドが送信される
- リモートマシンの表示切替やプリセット呼出しを 1 ボタンでトリガー可能
関連オペレータ 🔗
類似機能OP 🔍
- OSC Out CHOP — OSC プロトコルでチャンネル値を UDP 送信、Pipe Out よりも汎用的なネットワーク連携向け
- TCP/IP DAT — 汎用 TCP/IP 通信、テキストデータの双方向送受信に対応
組み合わせ推奨OP 🔄
- Pipe In CHOP — 受信側で対となる OP、ペアで使用するのが前提
- Audio Device In CHOP — オーディオ入力を取得して送信する組み合わせ
- OSC In CHOP — OSC 受信値を別マシンへ中継
- Math CHOP — 送信前に値域変換やスケーリングを適用
- Filter CHOP — ノイズ除去後の安定信号を送出
前処理・後処理CHOP 🎯
Info CHOP情報 📊
Pipe 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:
- Server Address と Server Port が送信側・受信側で一致しているか確認
- Connection Mode が送信側 Server / 受信側 Client(またはその逆)で正しくペアになっているか確認
- ファイアウォール・セキュリティソフトで該当ポートがブロックされていないか確認、Active をオフ→オンで再接続を試行
❌ Problem: フレームスキップ時にデータが欠落する
✅ Solution:
- Send Current Sample Only をオフにし、前回クック以降の全サンプルを送信する設定にする
- Common Page の Time Slice をオンにしてタイムスライスモードで送信
- Cook Every Frame をオンにし、CHOP が毎フレーム確実にクックされるようにする
❌ Problem: 接続状態が受信側で正しく報告されない
✅ Solution:
- Send Monitor Pulses をオンにし、null 文字のパルスをフレームごとに送出して接続を維持
- Echo Messages to Console をオンにし、Console で実際の送信内容を確認
- Callbacks DAT を設定し、接続/切断イベントを script で捕捉してログ化
❌ Problem: 送信値のレンジや単位が受信側で想定外
✅ Solution:
- 前段に Math CHOP を入れて From Range / To Range で値域を正規化してから送信
- 前段に Filter CHOP でノイズを smooth してから送出
- Scope パラメータで送信対象チャンネルを限定し、不要なチャンネルを除外
参考資料 📚
その他 🔗
- TouchDesigner Wiki — CHOP 概要
- TouchDesigner Wiki — Category:CHOPs
- TouchDesigner Wiki ホーム
- TouchDesigner 公式 Forum
- Facebook — TouchDesigner Help Group

