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

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

Reorder CHOP のチャンネル並び替え機能を示す図

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

概要 📖 – チャンネル順序の並び替え

Reorder CHOPは、入力 CHOP のチャンネル順序を番号・名前・値・参照入力などの基準で並び替える CHOPです。Numeric Pattern / Character Pattern / Channel Value / Random / Reverse / Merge N Groups など多彩な方式に対応し、第 2 入力 CHOP を順序の参照キーとして使うことも可能です。

主な用途 🎯

  • チャンネルの番号順 / 名前順 / 値順での並び替え
  • 第 2 入力 CHOP を参照キーにした任意順への再配置
  • RGB / XYZ などのグループ化(Merge N Groups でインタリーブ)
  • ランダム化によるシャッフル演出・テスト用途
  • 逆順反転 (Reverse) による末尾優先処理・降順表示

データフロー 🔄

入力: 複数チャンネルを持つ CHOP

Method(並び替え方式選択)

Pattern / Order Reference / N Value 等の補助パラメータ

Remaining Position / Order でアンマッチ分を整列

出力: 並び替え済みチャンネル

Tips

初心者の方は、以下日本語書籍も手元にあると安心です。

まる。
まる。

実際の案件事例まで踏み込んで紹介されていて、効率よくスキルアップするなら必携の二冊です!


パラメータ解説 ⚙️

Reorder Page 🔀

Method .method 🎛️

チャンネルをどの方式で並び替えるかを選ぶメニューパラメータ

項目 内部名 説明
Numeric Pattern .numeric チャンネル番号で並び替え
Character Pattern .character チャンネル名で並び替え
Base Name Sort .basename 数字接尾辞を除いたベース名で並び替え(例: chan1, abc10 → abc10, chan1)
Numeric Suffix Sort .numsuffix ベース名を除いた数字接尾辞で並び替え(例: abc10, chan1 → chan1, abc10)
Channel Value Up .chanvalueup チャンネルの値で並び替え、低い順
Channel Value Down .chanvaluedown チャンネルの値で並び替え、高い順
Reverse .reverse 入力 CHOP のチャンネル順を反転
Random .random ランダムに並び替え
Merge N Groups .group N Value で指定したグループサイズでインタリーブ(r1,r2,…,g1,g2,…,b1,b2,… → r1,g1,b1,r2,g2,b2,…)

Order Reference .orderref 🧭

第 2 入力 CHOP が接続されている場合のみ有効。参照入力の形式を指定

項目 内部名 説明
By Name .byname 第 2 入力のチャンネル名リストで順序を指定
By Index .byindex 第 2 入力の単一チャンネルのサンプル値で順序を指定

Numeric Pattern .numpattern 🔢

チャンネル番号パターンで並び替え:

  • Numeric Pattern 文字列: チャンネル番号で並び替えるためのパターン文字列。インデックスは 0 始まり。例: 0-6:1,2 / !*:1,3 等の標準数値パターンに対応

Character Pattern .charpattern 🔤

チャンネル名パターンで並び替え:

  • Character Pattern 文字列: チャンネル名で並び替えるためのパターン文字列。例: ch[XYZ] / chan[1-15:2,5] / chan? ch* 等の標準文字パターンに対応

Seed .seed 🎲

Random モード時の乱数シード:

  • Seed 値: 整数・非整数いずれも指定可。値ごとに完全に異なるパターンを生成(特性は類似)

N Value .nvalue 🔢

Merge N Groups モード時のグループサイズ:

  • N Value: インタリーブ時の 1 グループあたりのチャンネル数(例: RGB なら N=3 で r1,g1,b1,r2,g2,b2,… の並びを生成)

Remaining Position .rempos 📍

パターンにマッチしなかった「残り」チャンネルを、マッチしたチャンネルに対してどこに配置するか

項目 内部名 説明
At Beginning .begin 残りチャンネルをマッチ済みチャンネルの先頭に配置
At Ending .end 残りチャンネルをマッチ済みチャンネルの末尾に配置

Remaining Order .remorder 🔢

パターンにマッチしなかった「残り」チャンネルの内部順序

項目 内部名 説明
Same as Input .input 入力 CHOP に出てきた順序のまま並べる
AlphaNumeric .alpha アルファベット・数字順でソート

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: RGB チャンネルのインタリーブ 🎨

Pattern CHOP (r1,r2,...,g1,g2,...,b1,b2,...) → Reorder CHOP (Method=Merge N Groups, N=3) → r1,g1,b1,r2,g2,b2,...
  1. Pattern CHOP やシェーダ入力で R 群・G 群・B 群が連続して並ぶ CHOP を用意
  2. Reorder CHOP の Method を「Merge N Groups」に設定
  3. N Value を 3 にしてグループサイズを指定
  4. 出力は r1,g1,b1,r2,g2,b2,… の順に並び替わり、ピクセル列形式として後段の CHOP to TOP に渡しやすくなる

Example 2: センサー値の大きい順に並び替えて上位 N 個を抽出 📊

Multiple Serial CHOPs → Merge CHOP → Reorder CHOP (Method=Channel Value Down) → Select CHOP → 上位値
  1. 複数センサーを Merge CHOP で 1 つの CHOP に統合
  2. Reorder CHOP の Method を「Channel Value Down」に設定
  3. 値が大きいチャンネル順に並び替えられる
  4. 後段の Select CHOP で先頭 N 個を取り出すと「上位 N 個の値」を取得できる

Example 3: 第 2 入力で任意順を指定 🧭

メイン入力 CHOP (任意チャンネル) + 参照 CHOP (順序定義) → Reorder CHOP (Method 任意, Order Reference=By Name) → 並び替え済み出力
  1. 並び替えたい複数チャンネルを第 1 入力に接続
  2. Constant CHOP や Pattern CHOP で「望む順序のチャンネル名リスト」を持つ参照 CHOP を作る
  3. Reorder CHOP の第 2 入力に参照 CHOP を接続し、Order Reference を「By Name」に設定
  4. 参照入力で指定した順序通りにチャンネルが並び替えられる

関連オペレータ 🔗

類似機能OP 🔍

  • Rename CHOP — チャンネル名を変更する CHOP。順序ではなく名前を扱う
  • Shuffle CHOP — サンプルとチャンネルを入れ替える(行と列の転置に近い)
  • Select CHOP — 特定チャンネルだけを抽出して新しい順で並べる

組み合わせ推奨OP 🔄

  • Merge CHOP — 複数 CHOP を統合してから Reorder で並び替えるパターン
  • Select CHOP — 並び替え後に先頭 N 個を抽出
  • Math CHOP — 並び替え後に値を演算して比較しやすくする
  • Pattern CHOP — Reorder の参照入力として順序定義チャンネルを生成
  • Constant CHOP — 順序参照用の固定チャンネル名リストを生成

前処理・後処理CHOP 🎯


Info CHOP情報 📊

Reorder 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: Numeric Pattern / Character Pattern を指定したのに並び替わらない
✅ Solution:

  • Method が「Numeric Pattern」または「Character Pattern」になっているか確認
  • パターン文字列の構文を確認(インデックスは 0 始まり、0-6:1,2 のような範囲指定)
  • Pattern Matching のドキュメントで正しいパターン記法を確認

❌ Problem: Merge N Groups で出力チャンネル数が想定と違う
✅ Solution:

  • N Value が入力チャンネル数の約数になっているか確認(例: 入力 9ch なら N=3 で 3 グループ)
  • 余りが出る場合、Remaining Position と Remaining Order の設定で残り分の扱いを制御
  • 入力前段の Merge CHOP でチャンネル数を意図通りに整える

❌ Problem: 第 2 入力を接続したのに Order Reference が反映されない
✅ Solution:

  • Order Reference パラメータが「By Name」または「By Index」になっているか確認(第 2 入力が無いと無効化される)
  • By Name モード時、参照入力のチャンネル名と並び替え対象のチャンネル名が一致しているか確認
  • By Index モード時、参照入力が単一チャンネルでサンプル値がインデックス値になっているか確認

❌ Problem: Random モードで毎フレーム順序が変わってちらつく
✅ Solution:

  • Seed パラメータを固定値にする(時間依存式 absTime.frame 等が入っていないか確認)
  • 固定したランダム順を維持したい場合、Reorder 後段に Hold CHOP を入れて値をキャプチャ
  • 毎フレームのシャッフルが必要なら意図通り。視覚的ちらつきを抑えるには Filter 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をコピーしました