
概要 📖 – COMP の入力ポートとしてチャンネルを受け取る
In CHOPは、Base COMP や Container COMP の入力ポートとして外部からチャンネルを受け取り、コンポーネント内部のネットワークへ橋渡しする CHOPです。Num Channels でチャンネル数を検証し、Names パラメータで必要なチャンネルだけを通したりリネームしたりすることで、コンポーネントの入力インターフェースを明示できます。
主な用途 🎯
- Base COMP / Container COMP の入力ポートとしてチャンネルを受け取る
- コンポーネント外部からのチャンネルデータ受け渡し(モジュール化)
- Num Channels によるチャンネル数の制約・検証
- Names パラメータによる必要チャンネルのフィルタリング
- Names パラメータによる入力チャンネルのリネーム
データフロー 🔄
入力: COMP 外部の上流 CHOP
↓
In CHOP(COMP 入力ポート)
↓
Num Channels / Names による検証・フィルタ
↓
出力: COMP 内部ネットワークへ
初心者の方は、以下日本語書籍も手元にあると安心です。

実際の案件事例まで踏み込んで紹介されていて、効率よくスキルアップするなら必携の二冊です!
パラメータ解説 ⚙️
In Page 📋
In パラメータ 🔌
Label .label 🏷️
– この入力に付けるラベル
– COMP の入力ポート上にマウスを当てたときに表示されるポップアップに使用される
Num Channels .numchannels 🔢
– オンにすると、入力チャンネル数がこの値と一致しない場合にエラーを発生させる
– 期待するチャンネル数を入力契約として明示し、想定外の入力を検出するためのバリデーション機能
Names .channames 🔤
– Num Channels と併用すると、入力からこのパターンに一致するチャンネルだけが通過し、それ以外は破棄される(Select CHOP や Delete CHOP 不要のフィルタリング)
– Num Channels なしで使うと、入力チャンネルがこのパターンに沿ってリネームされる
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: Base COMP の入力ポートとしてセンサー値を受け取る 🔌
外部 Serial CHOP → Base COMP 入力 → In CHOP → COMP 内部処理
- Base COMP を作成し、内部に In CHOP を配置
- 外部のセンサー CHOP を Base COMP の入力ポート(最上位の input1)に接続
- COMP 内部の In CHOP の出力をそのまま下流の処理に渡す
- COMP の入出力契約が明示され、外部から差し替え可能なモジュールとして使える
Example 2: Num Channels で必要チャンネル数を契約として明示 🔢
外部 Multi-channel CHOP → In CHOP (Num Channels=3) → COMP 内部
- In CHOP の
Num Channelsをオンにして値を 3 に設定 - COMP の入力ポートに 3 チャンネルの CHOP を接続するとそのまま通過
- 誤って 2 チャンネルや 4 チャンネルの CHOP を接続するとエラーで通知される
- コンポーネントの入力契約をパラメータレベルで保証できる
Example 3: Names パラメータで必要チャンネルだけ取り込む 🔤
外部 Multi-channel CHOP → In CHOP (Num Channels + Names) → 必要チャンネルのみ COMP 内部へ
- 外部から多数のチャンネルを持つ CHOP が入ってくる構成
- In CHOP の
Num Channelsをオンにし、Namesにtx ty tzを指定 - 入力からチャンネル名が一致するものだけが通過し、それ以外は破棄される
- 前段に Select CHOP を置かなくても入力ポート段でフィルタが完了する
関連オペレータ 🔗
類似機能OP 🔍
- Select CHOP — ネットワーク内で他オペレータの出力を参照するパススルー、In CHOP は COMP 入力ポート専用
- Constant CHOP — 固定値を生成するソース、In CHOP はコンポーネント外部入力を受け取る点が異なる
組み合わせ推奨OP 🔄
- Out CHOP — COMP の出力ポートを担当、In と対になりコンポーネントの入出力インターフェースを構成
- Select CHOP — In で受けたチャンネルから特定のチャンネルだけを抽出して下流へ
- Math CHOP — In で受けた値を演算・正規化してから COMP 内部処理に渡す
- Filter CHOP — In 直後にスムージングを入れて COMP 内部のノイズを抑える
- Null CHOP — In の直後に Null を置いて COMP 内部参照のアンカーポイントを安定化
前処理・後処理CHOP 🎯
- 前処理: Math CHOP、Filter CHOP、Select CHOP
- 後処理: Null CHOP、Math CHOP、Out CHOP
Info CHOP情報 📊
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: In CHOP に何も流れてこない
✅ Solution:
- In CHOP は COMP(Base COMP / Container COMP 等)の内部に置かれている必要がある、ネットワーク最上位に置いても外部入力は受け取れない
- 親 COMP の入力ポート(左側の input コネクタ)に上流 CHOP が接続されているか確認
- In CHOP のインデックス(同 COMP 内に複数の In CHOP がある場合の順序)と親 COMP の入力ポート番号が一致しているか確認
❌ Problem: Num Channels をオンにしてもエラーが出ない / 想定と違うチャンネルが通る
✅ Solution:
Num Channelsはオンにした上で値を期待数に設定する必要がある(オフのままだと検証されない)Namesパラメータが空でない場合、入力からマッチするチャンネルだけが通過するため、結果として通過チャンネル数がNum Channels値と一致してエラーが出ないケースがある- 実際に何チャンネル通過しているかを下流の Null CHOP + ビューアで確認
❌ Problem: Names でフィルタしたつもりがチャンネル名が変わってしまう
✅ Solution:
Num Channelsがオフの状態でNamesを指定すると、フィルタではなくリネームの動作になる(公式仕様)- フィルタ用途で使う場合は
Num Channelsを必ずオンにする - リネームを別工程で行いたい場合は、In CHOP では Names を空にしておき、後段の Select CHOP や Rename CHOP で処理する
参考資料 📚
その他 🔗
- TouchDesigner Wiki — CHOP 概要
- TouchDesigner Wiki — Category:CHOPs
- TouchDesigner Wiki ホーム
- TouchDesigner 公式 Forum
- Facebook — TouchDesigner Help Group

