
概要 📖 – 最新変更チャンネル優先のマージ
Override CHOPは、複数の CHOP 入力から最も直近に変更されたチャンネルの値を採用して出力する CHOPです。MIDI コントローラとプリセット呼び出しなど、複数の入力源を競合させずに最新操作優先で統合できます。
主な用途 🎯
- 複数 CHOP ソースを 1 つに統合し、直近で値が変動した入力を採用
- MIDI デバイスとプリセット (Constant CHOP) など、複数コントローラの優先制御
- OSC / MIDI / マウス入力など異種入力の競合解決とフェイルオーバー
- プリセット呼び出し時に直近の手動操作のみを上書き反映
- どの入力が最後に変更されたかを示すインデックスチャンネルの生成
データフロー 🔄
入力: 複数の CHOP ソース(MIDI / プリセット / OSC 等)
↓
チャンネル単位で最新変更を検出
↓
最新変更チャンネルの値で出力
↓
出力: 統合された 1 つの CHOP(必要に応じて変更元インデックス付き)
初心者の方は、以下日本語書籍も手元にあると安心です。

実際の案件事例まで踏み込んで紹介されていて、効率よくスキルアップするなら必携の二冊です!
パラメータ解説 ⚙️
Override Page 📋
Match by .match 🔍
複数入力間でチャンネルをどう対応付けるか
| 項目 | 内部名 | 説明 |
|---|---|---|
| Channel Number | .index |
チャンネルのインデックス(並び順)で各入力を対応付け |
| Channel Name | .name |
チャンネル名で各入力を対応付け |
インデックス生成パラメータ 🔢
Create Input Index .makeindex ✅
– オンにすると、直近で変更があった入力番号を保持するインデックスチャンネルを追加で出力
– どの入力ソースが最後に作用したかをロジック側で判定したいときに使用
Channel Name .indexname 🏷️
– Create Input Index をオンにしたときに生成されるインデックスチャンネルの名前
– デフォルト名のままでもよいが、複数 Override CHOP を併用する場合は識別子として個別命名を推奨
Monitor on Input Cooks .cookmonitor ⚠️
– 入力 CHOP のクック発生を最新変更とみなすかどうかを切り替える旧仕様パラメータ
– 現行バージョンでは 非推奨 (Deprecated)、新規プロジェクトでは使用を避ける
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: MIDI コントローラとプリセット呼び出しの統合 🎹
MIDI In CHOP + Constant CHOP (preset) → Override CHOP → パラメータ Export
- MIDI In CHOP でハードウェアコントローラの値を取得
- Constant CHOP でプリセット値を保持し、第 2 入力に接続
- Override CHOP の Match by を「Channel Name」に設定
- プリセット呼出時はプリセット値が、その後にノブを動かした瞬間からその MIDI 値が出力される
Example 2: 複数操作源のフェイルオーバー制御 🛡️
OSC In CHOP + Mouse In CHOP → Override CHOP (Create Input Index) → Logic CHOP
- OSC In CHOP(リモート操作)と Mouse In CHOP(手元操作)を Override CHOP の入力に接続
- Create Input Index をオンにして、どの入力が直近で動いたかをチャンネル化
- 後段の Logic CHOP でインデックス値を判定し、UI 表示や操作権の切替に利用
- リモートとローカルどちらでも最後の操作がそのまま反映される
Example 3: プリセット A / B のスムーズな切替 🔀
Constant CHOP A + Constant CHOP B → Override CHOP → Filter CHOP → 出力
- 2 つの Constant CHOP にそれぞれプリセット A と B の値を設定
- 切替操作で対象 Constant 側のチャンネル値を変更すると、Override がその値を採用
- 後段の Filter CHOP で時間方向の補間をかけて急峻な変化を緩和
- プリセット呼出時にも切替時にも滑らかな値遷移を実現
関連オペレータ 🔗
類似機能OP 🔍
- Switch CHOP — 明示的なインデックスで入力を切替、最新変更検出は行わない
- Select CHOP — 1 つの CHOP からチャンネルを抜き出す、入力統合用途ではない
組み合わせ推奨OP 🔄
- Constant CHOP — プリセット値の保持元として Override の入力に多用
- Filter CHOP — Override 出力の急峻な切替を時間方向に補間
- Logic CHOP — Create Input Index を判定して操作権の切替などに利用
- Math CHOP — Override 出力の値域変換・スケーリング
- Trigger CHOP — Override 出力の変化を起点としたエンベロープ発火
前処理・後処理CHOP 🎯
Info CHOP情報 📊
Override 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:
- Match by 設定を確認し、チャンネル名で対応付けたい場合は「Channel Name」に切替
- 対応付け対象のチャンネル名が両入力で一致しているか確認(一致しないと最新変更検出が機能しない)
- 片方の入力が常に微小変動している場合、そのチャンネルが常に「最新変更」とみなされる点に注意
❌ Problem: Create Input Index のインデックスチャンネルが見えない
✅ Solution:
Create Input Indexがオンになっているか確認Channel Nameパラメータに設定した名前と一致するチャンネルが出力されているか確認- 後段で Select CHOP のチャンネル名フィルタが効いている場合は除外設定を確認
❌ Problem: プリセット呼出後に手動操作が反映されない
✅ Solution:
- プリセット側の値を更新した直後はプリセット入力が「最新変更」のため、その値が出力される
- 手動操作側のチャンネル値がプリセット呼出後に実際に変化しているか確認(同じ値の再送では変更とみなされない)
- 前段に Filter CHOP を挟むと微小変動が抑えられ、意図しない最新変更扱いを回避できる
❌ Problem: Monitor on Input Cooks の挙動が想定と異なる
✅ Solution:
Monitor on Input Cooksは現行バージョンでは 非推奨 (Deprecated) のため、新規構成では使用しない- クック発生ではなく値変動で判定したい場合はデフォルト(オフ)のままで使う
- 互換性のため残された旧 prj では値変更に基づく挙動への置換を検討
参考資料 📚
その他 🔗
- TouchDesigner Wiki — CHOP 概要
- TouchDesigner Wiki — Category:CHOPs
- TouchDesigner Wiki ホーム
- TouchDesigner 公式 Forum
- Facebook — TouchDesigner Help Group

