
概要 📖 – サンプル並び替えとランダマイズ
Sort CHOPは、チャンネルのサンプル列を昇順・降順・ランダムで並び替える CHOPです。基準となるチャンネルをインデックスまたは名前で指定でき、他チャンネルは同じサンプル順序に追従して再配置されます。
主な用途 🎯
- チャンネルサンプルの昇順並び替え(Increasing Values でランキング生成)
- チャンネルサンプルの降順並び替え(Decreasing Values で上位抽出)
- サンプルのランダムシャッフル(Random + Seed で再現性のある乱数並び)
- インデックス指定による特定チャンネルのソート基準化(他チャンネルは同じ順序に追従)
- 元のサンプル位置を保持するインデックスチャンネル生成(Index Channel で並び替え前の位置を出力)
データフロー 🔄
入力: 複数サンプルを持つ CHOP
↓
ソート基準チャンネルの選択(Index / Name)
↓
Sorting Method 適用(Increasing / Decreasing / Random)
↓
他チャンネルが同じ並びに追従
↓
出力: 並び替え済み CHOP(+ オプションで元位置の Index Channel)
初心者の方は、以下日本語書籍も手元にあると安心です。

実際の案件事例まで踏み込んで紹介されていて、効率よくスキルアップするなら必携の二冊です!
パラメータ解説 ⚙️
Sort Page 📋
Sorting Method .method 🔀
サンプルをどの順序で並び替えるかのメニュー
| 項目 | 内部名 | 説明 |
|---|---|---|
| Increasing Values | .increasing |
値の昇順(小さい順)でサンプルを並び替え |
| Decreasing Values | .decreasing |
値の降順(大きい順)でサンプルを並び替え |
| Random | .random |
Seed に基づくランダムな順序でサンプルをシャッフル |
Random シード .seed 🎲
Seed .seed 🌱
– 乱数生成器の初期値(整数・非整数いずれも可)
– 値ごとに完全に異なる並びパターンが得られ、同じ Seed なら同じ並びが再現される
– Sorting Method が Random のときのみ有効
Select Type .select 🎯
ソート基準とするチャンネルをインデックスで指定するか名前で指定するか
| 項目 | 内部名 | 説明 |
|---|---|---|
| By Channel Indices | .byindices |
チャンネルをインデックス番号で指定 |
| By Channel Names | .byname |
チャンネルを名前(パターンマッチング可)で指定 |
対象チャンネル指定 🔤
Channel Indices .indices 🔢
– ソート基準とするチャンネルのインデックスを指定
– 指定されなかったチャンネルは、基準チャンネルの新しいサンプル順序に追従して並び替えられる
– 空欄の場合は全チャンネルが個別にソートされる
Channel Names .names 🏷️
– ソート基準とするチャンネルの名前を指定(パターンマッチング可)
– 指定されなかったチャンネルは、基準チャンネルの新しいサンプル順序に追従して並び替えられる
– 空欄の場合は全チャンネルが個別にソートされる
Index Channel .indexchannel 📇
Index Channel .indexchannel 📍
– オンにすると、並び替え後の各サンプルが元々どのインデックスにあったかを保持する追加チャンネルを出力
– 並び替え結果を元の順序にマップし直したいときや、ランキング表示の元データに使える
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 → Sort CHOP (Decreasing Values) → Select CHOP → Text TOP
- 複数センサーからの値を Merge CHOP で 1 つの CHOP にまとめる
- Sort CHOP の Sorting Method を
Decreasing Valuesに設定 - Select CHOP で先頭サンプル(最大値)を抽出
- Text TOP に流して常時上位の値・名前をライブ表示する
Example 2: ランダム選曲・ランダム順序での再生 🎲
Constant CHOP (track indices) → Sort CHOP (Random + Seed) → Index Channel → Switch TOP
- Constant CHOP でトラックのインデックス(0, 1, 2, …)を持つチャンネルを作成
- Sort CHOP の Sorting Method を
Random、Seed をパフォーマンス開始時刻などから生成 - Index Channel をオンにして並び替え後のサンプル列をそのまま再生順として使用
- Switch TOP の選択 index に接続し、ランダム順序で素材を切り替える
Example 3: パーティクルの距離順ソート ✨
Particle positions (CHOP) → 距離計算 (Math CHOP Length) → Sort CHOP (Increasing, By Channel Names) → Render order
- パーティクル位置を CHOP として取得し、カメラからの距離を Math CHOP の Length で算出
- Sort CHOP の Select Type を
By Channel Namesにして距離チャンネルを基準に指定 - Sorting Method を
Increasing Valuesにして近距離から遠距離へ並び替え - 他の座標・色チャンネルも同じ順序に追従し、奥行きを考慮した描画順を実現
関連オペレータ 🔗
類似機能OP 🔍
- Shuffle CHOP — チャンネル間の入れ替え・サンプルとチャンネルの swap に特化(Sort はサンプル内の順序、Shuffle は構造の入れ替え)
- Reorder CHOP — チャンネルの並び順を変更(サンプル順序は維持、Sort のチャンネル軸版)
組み合わせ推奨OP 🔄
- Select CHOP — Sort 後の先頭サンプルや上位 N サンプルを抽出
- Math CHOP — ソート基準値(距離・スコア等)を事前に計算
- Merge CHOP — 複数 CHOP を 1 つに統合してから Sort にかける
- Trim CHOP — Sort 後にサンプル範囲を切り出してランキング上位のみ残す
- Analyze CHOP — Sort 前後の最大・最小・ピーク値を解析
前処理・後処理CHOP 🎯
- 前処理: Merge CHOP、Math CHOP、Filter CHOP、Rename CHOP
- 後処理: Select CHOP、Trim CHOP、Shuffle CHOP、Switch CHOP
Info CHOP情報 📊
Sort 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: Random モードで毎フレーム並びが変わってしまう
✅ Solution:
- Seed が時刻や毎フレーム変動する値に接続されていないか確認
- 固定の Seed 値(整数)を設定すれば同じ並びが再現される
- パフォーマンス開始時に 1 度だけ Seed を確定させるには Hold CHOP や Trigger CHOP で値を固定
❌ Problem: 特定のチャンネルだけソートしたいのに全チャンネルが並び替えられてしまう
✅ Solution:
- Select Type を
By Channel IndicesまたはBy Channel Namesに設定 - Channel Indices / Channel Names に基準としたいチャンネルのみを指定(空欄だと全チャンネルが個別にソートされる)
- 他のチャンネルは基準チャンネルの並びに追従するだけで、独立にはソートされない
❌ Problem: 並び替え前の元の位置に戻したい
✅ Solution:
- Index Channel をオンにして元の位置インデックスを出力させる
- 後段で Index Channel を基準に再度 Sort CHOP(Increasing Values)をかければ元の順序が復元される
- 元データのバックアップ用途では Select CHOP で別系統に分岐させておくのも有効
参考資料 📚
その他 🔗
- TouchDesigner Wiki — CHOP 概要
- TouchDesigner Wiki — Category:CHOPs
- TouchDesigner Wiki ホーム
- TouchDesigner 公式 Forum
- Facebook — TouchDesigner Help Group

