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

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

Sort CHOP のサンプル並び替え機能を示す図

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

概要 📖 – サンプル並び替えとランダマイズ

Sort CHOPは、チャンネルのサンプル列を昇順・降順・ランダムで並び替える CHOPです。基準となるチャンネルをインデックスまたは名前で指定でき、他チャンネルは同じサンプル順序に追従して再配置されます。

主な用途 🎯

  • チャンネルサンプルの昇順並び替え(Increasing Values でランキング生成)
  • チャンネルサンプルの降順並び替え(Decreasing Values で上位抽出)
  • サンプルのランダムシャッフル(Random + Seed で再現性のある乱数並び)
  • インデックス指定による特定チャンネルのソート基準化(他チャンネルは同じ順序に追従)
  • 元のサンプル位置を保持するインデックスチャンネル生成(Index Channel で並び替え前の位置を出力)

データフロー 🔄

入力: 複数サンプルを持つ CHOP

ソート基準チャンネルの選択(Index / Name)

Sorting Method 適用(Increasing / Decreasing / Random)

他チャンネルが同じ並びに追従

出力: 並び替え済み CHOP(+ オプションで元位置の Index Channel)

Tips

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

まる。
まる。

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


パラメータ解説 ⚙️

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
  1. 複数センサーからの値を Merge CHOP で 1 つの CHOP にまとめる
  2. Sort CHOP の Sorting Method を Decreasing Values に設定
  3. Select CHOP で先頭サンプル(最大値)を抽出
  4. Text TOP に流して常時上位の値・名前をライブ表示する

Example 2: ランダム選曲・ランダム順序での再生 🎲

Constant CHOP (track indices) → Sort CHOP (Random + Seed) → Index Channel → Switch TOP
  1. Constant CHOP でトラックのインデックス(0, 1, 2, …)を持つチャンネルを作成
  2. Sort CHOP の Sorting Method を Random、Seed をパフォーマンス開始時刻などから生成
  3. Index Channel をオンにして並び替え後のサンプル列をそのまま再生順として使用
  4. Switch TOP の選択 index に接続し、ランダム順序で素材を切り替える

Example 3: パーティクルの距離順ソート ✨

Particle positions (CHOP) → 距離計算 (Math CHOP Length) → Sort CHOP (Increasing, By Channel Names) → Render order
  1. パーティクル位置を CHOP として取得し、カメラからの距離を Math CHOP の Length で算出
  2. Sort CHOP の Select Type を By Channel Names にして距離チャンネルを基準に指定
  3. Sorting Method を Increasing Values にして近距離から遠距離へ並び替え
  4. 他の座標・色チャンネルも同じ順序に追従し、奥行きを考慮した描画順を実現

関連オペレータ 🔗

類似機能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 🎯


Info CHOP情報 📊

Sort 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: 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 で別系統に分岐させておくのも有効

参考資料 📚

その他 🔗

公式リソース 📖

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