
概要 📖 – 複数 CHOP のチャンネル統合
Merge CHOPは、複数の入力 CHOP を受け取り、すべてのチャンネルを 1 本の出力 CHOP に統合する CHOPです。Align メニューで開始・終了タイミングを揃え、Duplicate Names メニューで同名チャンネルの衝突を解決します。
主な用途 🎯
- 複数の CHOP を 1 本に束ねてチャンネルを統合(マルチ入力 → 単一出力)
- 異なる開始・終了タイミングを持つ CHOP の整列(Align メニューによる time interval 統一)
- 同名チャンネルの衝突解決(Make Unique / Keep First / Keep Last / Replace First with Last)
- OSC・MIDI・センサー等の複数入力ソースを 1 ストリームに集約
- サンプルレートが異なる入力の統合(Common Page Sample Rate Match と併用)
データフロー 🔄
入力: 複数 CHOP(チャンネル群)
↓
Align(time interval 揃え)
↓
Duplicate Names(同名チャンネルの衝突解決)
↓
出力: 統合された単一 CHOP
Tips
初心者の方は、以下日本語書籍も手元にあると安心です。
リンク
リンク

まる。
実際の案件事例まで踏み込んで紹介されていて、効率よくスキルアップするなら必携の二冊です!
パラメータ解説 ⚙️
Merge Page 📋
Align .align 📏
複数入力 CHOP の開始・終了タイミングが異なる場合の time interval 揃え方
| 項目 | 内部名 | 説明 |
|---|---|---|
| Automatic | .auto |
Time Slice があれば trim、無ければ Extend Min/Max |
| Extend to Min/Max | .none |
最早 start と最遅 end まで全入力を拡張 |
| Stretch to Min/Max | .stretch |
最早 start と最遅 end まで各チャンネルを引き伸ばし |
| Shift to Minimum | .start |
最早 start に全チャンネルを揃えて拡張 |
| Shift to Maximum | .end |
最遅 end に全チャンネルを揃えて拡張 |
| Shift to First Interval | .shift1 |
最初の CHOP の開始位置に shift し、その range でサンプリング |
| Trim to First Interval | .trim1 |
最初の CHOP の range に trim |
| Stretch to First Interval | .stretch1 |
最初の CHOP の range に伸縮 |
| Trim to Smallest Interval | .trim |
最小 start/end interval に trim |
| Stretch to Smallest Interval | .squash |
最小 start/end interval に伸縮 |
Duplicate Names .duplicate 🔁
入力 CHOP のチャンネル名が衝突した場合の処理
| 項目 | 内部名 | 説明 |
|---|---|---|
| Make Unique | .unique |
衝突時に新しいチャンネル名へ数字を付与してユニーク化(全入力チャンネルを保持) |
| Keep First | .first |
最初に出現した入力 CHOP のチャンネルを採用、後続の同名チャンネルは破棄 |
| Keep Last | .last |
最後に出現した入力 CHOP のチャンネルを採用、それ以外の同名チャンネルは破棄 |
| Replace First with Last | .replace |
最初の同名チャンネルを最後の同名チャンネルの値で置換 |
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: 複数センサー入力の集約 📡
Multiple Serial CHOPs → Merge CHOP → Filter CHOP → Output
- 複数のセンサーを個別の Serial CHOP で受信
- Merge CHOP に並列接続して全チャンネルを 1 本に統合
- Duplicate Names を「Make Unique」に設定して同名衝突を回避
- 後段の Filter CHOP で時間方向のスムージングを掛けて出力
Example 2: OSC + MIDI 入力の統合 🎹
OSC In CHOP + MIDI In CHOP → Merge CHOP (Make Unique) → Switch CHOP
- OSC In CHOP と MIDI In CHOP の出力をそれぞれ取得
- Merge CHOP で両方を 1 つの CHOP に統合
- Duplicate Names を「Make Unique」に設定して同名チャンネルが衝突しても保持
- 後段の Switch CHOP で入力ソースを切り替え可能にする
Example 3: 異なるタイミングの CHOP 結合 ⏱️
音声 CHOP + アニメーション CHOP → Merge CHOP (Stretch to Min/Max)
- 音声波形 CHOP とアニメーションカーブ CHOP を入力に接続
- Align を「Stretch to Min/Max」に設定して両方を共通範囲に伸縮
- Duplicate Names を「Keep First」に設定し、優先する入力のチャンネル名を保持
- 出力を統合 CHOP として後段の解析・可視化処理に渡す
関連オペレータ 🔗
類似機能OP 🔍
- Math CHOP — Combine CHOPs パラメータで複数 CHOP の数値演算結合(Add / Average 等)
- Switch CHOP — 複数入力から 1 本だけを選択して出力(Merge は全入力を保持する点が異なる)
組み合わせ推奨OP 🔄
- Filter CHOP — Merge 後段でスムージングを掛けてノイズ除去
- Math CHOP — 統合後のチャンネルに四則演算・正規化を適用
- Rename CHOP — Merge 前後でチャンネル名を一括変換(Duplicate Names 衝突回避にも有効)
- Select CHOP — Merge 前段で各入力から必要なチャンネルだけを抽出
- Resample CHOP — Merge 前にサンプルレートを揃える
- Trail CHOP — 統合後のチャンネル群の時間履歴を可視化
前処理・後処理CHOP 🎯
- 前処理: Rename CHOP、Select CHOP、Resample CHOP、Filter CHOP、Delete CHOP
- 後処理: Math CHOP、Switch CHOP、Analyze CHOP、Limit CHOP、Trail CHOP
Info CHOP情報 📊
Merge 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:
- Duplicate Names が「Keep First」「Keep Last」になっていないか確認
- 全入力チャンネルを保持したい場合は「Make Unique」に設定
- 前段に Rename CHOP を入れて衝突自体を回避
❌ Problem: 入力 CHOP の長さが揃わず出力が不自然になる
✅ Solution:
- Align メニューを「Extend to Min/Max」「Stretch to Min/Max」等に切り替えて挙動を比較
- 前段で Resample CHOP を使ってサンプル数を統一
- Time Slice が有効な信号は「Automatic」が適切
❌ Problem: サンプルレートの異なる CHOP を結合するとエラーになる
✅ Solution:
- Common Page の Sample Rate Match を「Resample At First Input’s Rate」等に設定
- 「Error If Rates Differ」になっていると意図的にエラー停止する
- 前段に Resample CHOP を挟んでレートを統一
❌ Problem: 出力チャンネル数が予想より多い / 少ない
✅ Solution:
- 各入力 CHOP のチャンネル数を Info CHOP で個別確認
- Duplicate Names の設定でチャンネル数の挙動が変わる(Make Unique は加算、Keep First/Last は重複分が減算)
- 前段の Select CHOP で必要なチャンネルのみ抽出する
参考資料 📚
その他 🔗
- TouchDesigner Wiki — CHOP 概要
- TouchDesigner Wiki — Category:CHOPs
- TouchDesigner Wiki ホーム
- TouchDesigner 公式 Forum
- Facebook — TouchDesigner Help Group

