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

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

Merge CHOP の複数入力統合機能を示す図

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

概要 📖 – 複数 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
  1. 複数のセンサーを個別の Serial CHOP で受信
  2. Merge CHOP に並列接続して全チャンネルを 1 本に統合
  3. Duplicate Names を「Make Unique」に設定して同名衝突を回避
  4. 後段の Filter CHOP で時間方向のスムージングを掛けて出力

Example 2: OSC + MIDI 入力の統合 🎹

OSC In CHOP + MIDI In CHOP → Merge CHOP (Make Unique) → Switch CHOP
  1. OSC In CHOP と MIDI In CHOP の出力をそれぞれ取得
  2. Merge CHOP で両方を 1 つの CHOP に統合
  3. Duplicate Names を「Make Unique」に設定して同名チャンネルが衝突しても保持
  4. 後段の Switch CHOP で入力ソースを切り替え可能にする

Example 3: 異なるタイミングの CHOP 結合 ⏱️

音声 CHOP + アニメーション CHOP → Merge CHOP (Stretch to Min/Max)
  1. 音声波形 CHOP とアニメーションカーブ CHOP を入力に接続
  2. Align を「Stretch to Min/Max」に設定して両方を共通範囲に伸縮
  3. Duplicate Names を「Keep First」に設定し、優先する入力のチャンネル名を保持
  4. 出力を統合 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 🎯


Info CHOP情報 📊

Merge 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:

  • 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 で必要なチャンネルのみ抽出する

参考資料 📚

その他 🔗

公式リソース 📖

この記事は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をコピーしました