
概要 📖 – ネットワーク経由のチャンネルデータ受信
Pipe In CHOPは、リモートホストやプロセスからネットワーク経由でチャンネルデータを受信する CHOPです。サーバ/クライアントモードとキューイング機構を備え、分散構成や外部プロセス連携の受け口として機能します。
主な用途 🎯
- ネットワーク経由でリモートホストからチャンネルデータを受信
- サーバ/クライアントモードの双方向通信による分散システム構築
- 外部プログラムやスクリプトからチャンネル値を流し込む受け口
- キューイング機能による不安定なネットワーク回線でのデータ平滑化
- リモート Python スクリプトコマンドの受信実行
データフロー 🔄
入力: ネットワークパケット (TCP)
↓
Connection Mode (Server / Client)
↓
Queue (Min Target / Max Target / Max Queue)
↓
Channel データ展開 + Script Command 実行
↓
出力: ネットワーク経由の CHOP チャンネル
初心者の方は、以下日本語書籍も手元にあると安心です。

実際の案件事例まで踏み込んで紹介されていて、効率よくスキルアップするなら必携の二冊です!
パラメータ解説 ⚙️
PipeIn Page 📥
Connection Mode .mode 🔀
Pipe In CHOP をサーバ側として動作させるか、クライアント側として動作させるかを切り替える
| 項目 | 内部名 | 説明 |
|---|---|---|
| This Operator is Client | .client |
この CHOP をクライアントとして動作させ、指定したサーバへ接続 |
| This Operator is Server | .server |
この CHOP をサーバとして動作させ、クライアントからの接続を待ち受ける |
接続先設定 🌐
Server Address .address 🏷️
– サーバコンピュータのネットワークアドレス
– foo / foo.bar.com 等のホスト名、または 100.123.45.78 形式の IP アドレスを指定
– localhost を指定すると同一マシン内のプロセス間通信になる
Server Port .port 🔢
– サーバのネットワークポート番号
– サーバ側 Pipe Out CHOP と同じポートを指定
Active .active ⚡
– オン: CHOP がパイプ/サーバから情報を受信する
– オフ: 受信を停止。サーバ送信データは失われ、パイプは Active が再びオンになるまでデータを蓄積する
– ネットワークモードではオンで接続開始、オフで接続切断
Queued .queued 📦
ネットワークキューイングの有効/無効:
- オン: 以下の Min/Max Target / Max Queue / Queue Adjust 各パラメータが有効化される
- オフ: キューイングなしの即時受信モード
Minimum Target .mintarget 📉
Minimum Target .mintarget 📉
– キュー目標範囲の下限値
– Pipe In CHOP はキュー長をこの値以上に保とうとする
Min Unit .mintargetunit 📐
– Minimum Target の単位を Samples / Frames / Seconds から選択
Min Unit .mintargetunit 📐
Minimum Target の単位選択メニュー
| 項目 | 内部名 | 説明 |
|---|---|---|
| Samples | .samples |
サンプル数で指定 |
| Frames | .frames |
フレーム数で指定 |
| Seconds | .seconds |
秒数で指定 |
Maximum Target .maxtarget 📈
Maximum Target .maxtarget 📈
– キュー目標範囲の上限値
– Pipe In CHOP はキュー長をこの値以下に保とうとする
Max Unit .maxtargetunit 📐
– Maximum Target の単位を Samples / Frames / Seconds から選択
Max Unit .maxtargetunit 📐
Maximum Target の単位選択メニュー
| 項目 | 内部名 | 説明 |
|---|---|---|
| Samples | .samples |
サンプル数で指定 |
| Frames | .frames |
フレーム数で指定 |
| Seconds | .seconds |
秒数で指定 |
Maximum Queue .maxqueue 🪣
Maximum Queue .maxqueue 🪣
– キューが満杯時の最大サイズ
– この値に達すると、入ってくるサンプルは破棄される
– キューイングできるスクリプトコマンドの上限数にも影響する
Max Queue Unit .maxqueueunit 📐
– Maximum Queue の単位を Samples / Frames / Seconds から選択
Max Queue Unit .maxqueueunit 📐
Maximum Queue の単位選択メニュー
| 項目 | 内部名 | 説明 |
|---|---|---|
| Samples | .samples |
サンプル数で指定 |
| Frames | .frames |
フレーム数で指定 |
| Seconds | .seconds |
秒数で指定 |
Queue Adjust Time .adjusttime ⏲️
Queue Adjust Time .adjusttime ⏲️
– キュー目標範囲に近づけるためにサンプルを繰り返す/破棄する頻度
– 値が 1 で単位が Seconds の場合、1 秒に 1 回サンプル繰返/破棄を行う
Adjust Unit .adjusttimeunit 📐
– Queue Adjust Time の単位を Samples / Frames / Seconds から選択
Adjust Unit .adjusttimeunit 📐
Queue Adjust Time の単位選択メニュー
| 項目 | 内部名 | 説明 |
|---|---|---|
| Samples | .samples |
サンプル数で指定 |
| Frames | .frames |
フレーム数で指定 |
| Seconds | .seconds |
秒数で指定 |
受信制御 🎛️
Reset Channels .reset 🧹
– 全チャンネルと受信中のデータを破棄してクリア
– 接続をリセットしたいときに使用
Allow Incoming Scripts .allowscripts 🛡️
– オン: 受信した Python スクリプトコマンドを実行
– オフ: スクリプトコマンドを無視(セキュリティ的により安全)
Echo Messages to Console .echo 🔊
受信した全コマンド(チャンネルデータではなくスクリプトコマンド側)を Dialogs メニューから開ける Console に出力するメニュー。接続テスト用に受信ストリームへ echo X コマンドを混ぜる用途で使う
| 項目 | 内部名 | 説明 |
|---|---|---|
| Off | .off |
Console 出力なし |
| Full Messages to Console | .on |
完全なメッセージを Console に出力 |
| All Events to Console | .raw |
全イベントを Console に出力(最も詳細) |
Callbacks DAT .callbacks 📝
受信イベントごとに呼ばれるコールバック DAT:
- Callbacks DAT パス: 受信イベント (接続/切断/サンプル受信/スクリプト受信等) のコールバックを定義した DAT のパス。使い方は
pipeinCHOP_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: 別マシンの TouchDesigner から制御信号を受信 🌐
(remote) Pipe Out CHOP → ネットワーク → Pipe In CHOP (Server) → Math CHOP → 出力
- 受信側 Pipe In CHOP の Connection Mode を「This Operator is Server」に設定
- Server Port に任意のポート番号 (例: 7000) を指定し Active をオン
- 送信側 Pipe Out CHOP の Server Address に受信マシンの IP、Server Port に同じポートを指定
- 後段の Math CHOP で受信値のスケーリングを行い実機制御に利用
Example 2: 外部 Python プロセスからのチャンネル流入 🐍
External Python script → TCP socket → Pipe In CHOP (Server) → CHOP channels
- Pipe In CHOP を Server モードで起動し受信待機
- 外部 Python プロセスから TCP ソケット経由でチャンネルデータを送信
- 受信側 Pipe In CHOP に外部プロセスからの値がそのままチャンネルとして展開される
- Allow Incoming Scripts をオンにすると Python コマンドの実行も可能 (セキュリティ要注意)
Example 3: 不安定ネットワーク下でのキューイング受信 📦
Remote Pipe Out → 不安定回線 → Pipe In CHOP (Queued + Min/Max Target) → Filter CHOP → 安定出力
- Queued をオンにしてネットワークキューイングを有効化
- Minimum Target / Maximum Target でキュー長の目標範囲を設定 (例: 5〜30 Frames)
- Queue Adjust Time でキュー長調整の頻度を指定し、サンプル繰返/破棄でレート補正
- 後段の Filter CHOP で残るジッタをスムージング
関連オペレータ 🔗
類似機能OP 🔍
- OSC In CHOP — OSC プロトコルでチャンネルデータを受信 (Pipe In は独自 TCP プロトコル)
- Serial CHOP — シリアル通信経由でチャンネル受信 (ネットワークではなくシリアルポート)
組み合わせ推奨OP 🔄
- Pipe Out CHOP — 対となる送信側 CHOP、Pipe In と組み合わせて TouchDesigner 間通信を構築
- Filter CHOP — 受信ジッタのスムージング後段に最適
- Math CHOP — 受信値のスケーリング・正規化
- Trail CHOP — 受信チャンネルの時間履歴を可視化
- Switch CHOP — ローカル/リモート入力を動的切替
前処理・後処理CHOP 🎯
Info CHOP情報 📊
Pipe In 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 が一致しているか確認
- Active がオンになっているか、Connection Mode (Server/Client) のペアが噛み合っているか確認
- ファイアウォール・NAT で指定ポートがブロックされていないか OS 側設定を見直す
❌ Problem: 受信データにジッタや欠落が発生する
✅ Solution:
- Queued をオンにして Minimum Target / Maximum Target を設定し、キュー長で平滑化
- Maximum Queue を十分大きく取り、過負荷時のサンプル破棄を回避
- 後段に Filter CHOP を入れて残ノイズをスムージング
❌ Problem: 外部からのスクリプトコマンドが実行されない
✅ Solution:
- Allow Incoming Scripts がオンになっているか確認 (デフォルトはオフでセキュア)
- Echo Messages to Console を「Full Messages to Console」にして受信内容を Dialogs Console で確認
- セキュリティ要件と相談のうえ、信頼できる送信元のみオンにする運用を徹底
❌ Problem: キュー長が想定範囲から外れて補正が効かない
✅ Solution:
- Queue Adjust Time が短すぎないか確認 (短すぎると常にサンプル繰返/破棄が走る)
- Min Unit / Max Unit / Max Queue Unit が揃っているか単位ミスマッチを点検
- Reset Channels で一度キューをクリアしてから運用を再開
参考資料 📚
その他 🔗
- TouchDesigner Wiki — CHOP 概要
- TouchDesigner Wiki — Category:CHOPs
- TouchDesigner Wiki ホーム
- TouchDesigner 公式 Forum
- Facebook — TouchDesigner Help Group

