Pipe In CHOP 完全ガイド | 使い方・パラメータ解説【TouchDesigner】

※当サイトにはプロモーションリンクが含まれます。

Pipe In CHOP のネットワーク受信機能を示す図

記事更新の通知はXでアナウンス٩(๑❛ᴗ❛๑)
@maru6o6をフォロー

概要 📖 – ネットワーク経由のチャンネルデータ受信

Pipe In CHOPは、リモートホストやプロセスからネットワーク経由でチャンネルデータを受信する CHOPです。サーバ/クライアントモードとキューイング機構を備え、分散構成や外部プロセス連携の受け口として機能します。

主な用途 🎯

  • ネットワーク経由でリモートホストからチャンネルデータを受信
  • サーバ/クライアントモードの双方向通信による分散システム構築
  • 外部プログラムやスクリプトからチャンネル値を流し込む受け口
  • キューイング機能による不安定なネットワーク回線でのデータ平滑化
  • リモート Python スクリプトコマンドの受信実行

データフロー 🔄

入力: ネットワークパケット (TCP)

Connection Mode (Server / Client)

Queue (Min Target / Max Target / Max Queue)

Channel データ展開 + Script Command 実行

出力: ネットワーク経由の CHOP チャンネル

Tips

初心者の方は、以下日本語書籍も手元にあると安心です。

まる。
まる。

実際の案件事例まで踏み込んで紹介されていて、効率よくスキルアップするなら必携の二冊です!


パラメータ解説 ⚙️

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 → 出力
  1. 受信側 Pipe In CHOP の Connection Mode を「This Operator is Server」に設定
  2. Server Port に任意のポート番号 (例: 7000) を指定し Active をオン
  3. 送信側 Pipe Out CHOP の Server Address に受信マシンの IP、Server Port に同じポートを指定
  4. 後段の Math CHOP で受信値のスケーリングを行い実機制御に利用

Example 2: 外部 Python プロセスからのチャンネル流入 🐍

External Python script → TCP socket → Pipe In CHOP (Server) → CHOP channels
  1. Pipe In CHOP を Server モードで起動し受信待機
  2. 外部 Python プロセスから TCP ソケット経由でチャンネルデータを送信
  3. 受信側 Pipe In CHOP に外部プロセスからの値がそのままチャンネルとして展開される
  4. Allow Incoming Scripts をオンにすると Python コマンドの実行も可能 (セキュリティ要注意)

Example 3: 不安定ネットワーク下でのキューイング受信 📦

Remote Pipe Out → 不安定回線 → Pipe In CHOP (Queued + Min/Max Target) → Filter CHOP → 安定出力
  1. Queued をオンにしてネットワークキューイングを有効化
  2. Minimum Target / Maximum Target でキュー長の目標範囲を設定 (例: 5〜30 Frames)
  3. Queue Adjust Time でキュー長調整の頻度を指定し、サンプル繰返/破棄でレート補正
  4. 後段の 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、無効時は0
  • export_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 で一度キューをクリアしてから運用を再開

参考資料 📚

その他 🔗

公式リソース 📖

この記事はLLMと共に内容を執筆、更新しています。
最新バージョンとの項目差異など、情報の不一致を見つけた心優しい方はXもしくはInsta、メールなどよりサイト管理者までご連絡ください😎


まる。

お仕事のご依頼はDM又はメールにて。
━━━━━━━━━━━━━━━━━
Python/Touchdesigner/M5Stackをこよなく愛すフルスタックエンジニア。
専門は生理心理学、趣味はヨガやサウナ、EMS電気風呂などヘルスケア全般。
脳波や筋電、心拍を中心とした生体情報のセンシング&インタラクティブアートづくりがライフワーク。

普段はワントゥーテンという会社で空間演出エンジニアをしています。
リファラル採用お繋ぎできますので、我こそはという尖った方は経歴と希望職種添えてDMください(エンジニア以外、営業職等もOK)。
ご飯行きましょう。

↓日常垢
Instagram:@malmal0v0

まる。をフォローする
その他の記事はこちら
Math Combine POP 完全ガイド | 使い方・パラメータ解説【TouchDesigner】
ZED Select TOP 完全ガイド | 使い方・パラメータ解説【TouchDesigner】
ZED POP 完全ガイド | 使い方・パラメータ解説【TouchDesigner】
Window COMP 完全ガイド | 使い方・パラメータ解説【TouchDesigner】
Widget COMP 完全ガイド | 使い方・パラメータ解説【TouchDesigner】

タイトルとURLをコピーしました