
概要 📖 – チャンネル順序の並び替え
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 でアンマッチ分を整列
↓
出力: 並び替え済みチャンネル
初心者の方は、以下日本語書籍も手元にあると安心です。

実際の案件事例まで踏み込んで紹介されていて、効率よくスキルアップするなら必携の二冊です!
パラメータ解説 ⚙️
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,...
- Pattern CHOP やシェーダ入力で R 群・G 群・B 群が連続して並ぶ CHOP を用意
- Reorder CHOP の Method を「Merge N Groups」に設定
- N Value を 3 にしてグループサイズを指定
- 出力は 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 → 上位値
- 複数センサーを Merge CHOP で 1 つの CHOP に統合
- Reorder CHOP の Method を「Channel Value Down」に設定
- 値が大きいチャンネル順に並び替えられる
- 後段の Select CHOP で先頭 N 個を取り出すと「上位 N 個の値」を取得できる
Example 3: 第 2 入力で任意順を指定 🧭
メイン入力 CHOP (任意チャンネル) + 参照 CHOP (順序定義) → Reorder CHOP (Method 任意, Order Reference=By Name) → 並び替え済み出力
- 並び替えたい複数チャンネルを第 1 入力に接続
- Constant CHOP や Pattern CHOP で「望む順序のチャンネル名リスト」を持つ参照 CHOP を作る
- Reorder CHOP の第 2 入力に参照 CHOP を接続し、Order Reference を「By Name」に設定
- 参照入力で指定した順序通りにチャンネルが並び替えられる
関連オペレータ 🔗
類似機能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、無効時は0export_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 で後段を平滑化
参考資料 📚
その他 🔗
- TouchDesigner Wiki — CHOP 概要
- TouchDesigner Wiki — Category:CHOPs
- TouchDesigner Wiki ホーム
- TouchDesigner 公式 Forum
- Facebook — TouchDesigner Help Group

