
概要 📖 – 同名チャンネルの高速差し替え
Replace CHOPは、Input1 のチャンネルのうち、Input2 に同名チャンネルが存在するものを Input2 の値で高速に置換する CHOPです。Input2 に無いチャンネルはそのまま通過するため、共通テンプレートに対する部分上書きや、特定チャンネルだけを差し替えるパッチ的な合成パターンに向いています。
主な用途 🎯
- 同名チャンネルの一括差し替え(Input1 のチャンネルを Input2 の同名チャンネルで置換)
- テンプレートチャンネルセットに対する部分上書き(共通骨格 + 動的上書きパターン)
- センサーフィードの hot-swap(接続先を変えずに値ソースだけ差し替え)
- デバッグ用の固定値注入(Constant CHOP を Input2 に挿して特定チャンネルだけ強制値化)
- マルチユーザ・マルチデバイス入力の選択的上書き(既定値の上に最新入力を被せる)
データフロー 🔄
入力1: ベースチャンネル群
↓
Input2 の同名チャンネルを検出
↓
同名チャンネルを Input2 の値で置換
↓
Input2 に無いチャンネルはそのまま通過
↓
出力: 差し替え後のチャンネル群
Tips
初心者の方は、以下日本語書籍も手元にあると安心です。
リンク
リンク

まる。
実際の案件事例まで踏み込んで紹介されていて、効率よくスキルアップするなら必携の二冊です!
パラメータ解説 ⚙️
Replace Page 🔁
Length .length 📏
出力チャンネルのサンプル範囲(start/end)を決めるメニュー
| 項目 | 内部名 | 説明 |
|---|---|---|
| First Input | .first |
Input1 のサンプル範囲を採用 |
| Second Input | .second |
Input2 のサンプル範囲を採用 |
Notify on Change .notify 🔔
入力のチャンネル名構成が変化したときにユーザへ通知する診断用フラグ
| 項目 | 内部名 | 説明 |
|---|---|---|
| Notify on Change | .notify |
オンにすると、入力チャンネル名の構成が変化した時点でユーザに通知します。チャンネル名の動的変更が想定外に発生していないかを検知するパフォーマンス診断用のフラグです。 |
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: 共通テンプレート + 動的な部分上書き 🧩
Constant CHOP (template defaults) → Replace CHOP ← Select CHOP (live values) → Output
- Input1 に Constant CHOP を接続し、全パラメータの既定値テンプレートを定義
- Input2 に Select CHOP で動的な値(センサー・OSC 等)から該当チャンネルだけを抽出して接続
- Replace CHOP の出力には、Input2 にあるチャンネルは最新値・無いチャンネルは既定値が並ぶ
- 後段の制御系に「欠損のないチャンネルセット」を保証して渡せる
Example 2: デバッグ時に特定チャンネルだけ固定値を注入 🔧
Live Sensor Chain → Replace CHOP ← Constant CHOP (forced value) → Output
- Input1 に通常の入力チェーン(センサー・OSC・キーボード等)を接続
- Input2 に Constant CHOP を置き、検証したいチャンネル名と固定値のみ定義
- Replace CHOP がそのチャンネルだけを固定値で上書きし、他は元の値が流れる
- 下流ロジックの単体検証が、接続を切らずに 1 オペレータの bypass トグルで切り替えられる
Example 3: 複数入力ソースの優先度付きマージ 🗂️
OSC In CHOP (priority low) → Replace CHOP ← MIDI In CHOP (priority high) → Output
- Input1 に低優先度のソース(OSC 等のデフォルト入力)を接続
- Input2 に高優先度のソース(MIDI コントローラ等、上書きしたい入力)を接続
- Replace CHOP は Input2 にあるチャンネルだけを優先採用し、無いものは Input1 を温存
- 「特定 OP を触ったらそちらが優先、触っていないチャンネルは既定のまま」という人間工学的な合成が成立
関連オペレータ 🔗
類似機能OP 🔍
- Merge CHOP — 複数 CHOP のチャンネルを連結。Replace と違い同名チャンネルの上書きではなく、名前衝突時はリネーム/エラーになる
- Switch CHOP — 全チャンネルを入力単位でまるごと切替。Replace のような同名単位の部分置換はできない
- Rename CHOP — チャンネル名をパターンで変更。Replace は値の差し替え、Rename は名前の差し替え
組み合わせ推奨OP 🔄
- Constant CHOP — テンプレート既定値や固定値注入用の Input1/Input2 として頻用
- Select CHOP — Input2 に同名チャンネルだけを抽出して投入する前処理
- Rename CHOP — Input2 のチャンネル名を Input1 と合わせるための前段リネーム
- Merge CHOP — Replace で部分上書き、Merge で別名チャンネルを連結する補完関係
- Null CHOP — Replace 出力を後段から参照しやすくするための固定参照点
前処理・後処理CHOP 🎯
Info CHOP情報 📊
Replace 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: Input2 を接続しても期待した置換が起こらない
✅ Solution:
- Input1 と Input2 のチャンネル名が完全一致しているか確認(大文字小文字・suffix の
1の有無等) - 前段に Rename CHOP を入れて Input2 側の名前を Input1 に揃える
- Input2 が空 CHOP になっていないか(上流の Select CHOP の Channel Names パターンが空マッチ)を確認
❌ Problem: 出力サンプル数が想定と違う
✅ Solution:
- Length パラメータが
First InputかSecond Inputのどちらに設定されているか確認 - Sample Rate Match の設定で Resample が発生していないか確認、必要なら Resample CHOP で明示的に揃える
- Time Slice モードの整合性を確認(片側 Time Slice、片側通常はサンプル数が食い違う)
❌ Problem: Input2 にしかないチャンネルが出力に現れない
✅ Solution:
- Replace CHOP は Input1 にあるチャンネルのみを Input2 で置換する設計のため、Input2 単独のチャンネルは出力されない
- Input2 単独のチャンネルも出力したい場合は後段に Merge CHOP を入れて連結
- あるいは Input1 にダミーの同名チャンネル(Constant CHOP 等)を先に用意しておく
❌ Problem: チャンネル名構成が動的に変わって出力が安定しない
✅ Solution:
- Notify on Change をオンにしてチャンネル名構成の変動を検知
- 上流で Rename CHOP を使ってチャンネル名を固定化
- 想定外のチャンネル追加を Select CHOP で明示的にフィルタ
参考資料 📚
その他 🔗
- TouchDesigner Wiki — CHOP 概要
- TouchDesigner Wiki — Category:CHOPs
- TouchDesigner Wiki ホーム
- TouchDesigner 公式 Forum
- Facebook — TouchDesigner Help Group

