
概要 📖 – チャンネルとサンプルの再構成
Shuffle CHOPは、チャンネルとサンプルの並びを再構成する CHOP(転置・連結・分割を 1 オペレータで切替)です。Method メニューで転置・順次連結・分割を選び、入力データの構造を目的に合わせて組み替えます。
主な用途 🎯
- チャンネルとサンプルの転置(Swap Channels and Samples による行列転置)
- 名前ベースのチャンネル順次連結(Sequence Channels by Name で
chan1,chan2,chan3をひとつなぎに) - 複数チャンネルを 1 本の長いチャンネルに統合(Sequence All Channels によるシリアライズ)
- サンプルごとの分割によるチャンネル化(Split All Samples で時系列データをスナップショット群に展開)
- N サンプル単位の分割・連結(Sequence N Channels / Split N Samples による粒度制御)
データフロー 🔄
入力: 複数チャンネル × 複数サンプルの CHOP
↓
Method 選択(転置 / 連結 / 分割)
↓
N Value で粒度指定(Sequence N / Split N の場合)
↓
Use First Sample Only で代表値抽出(オプション)
↓
出力: 再構成されたチャンネル・サンプル構造
Tips
初心者の方は、以下日本語書籍も手元にあると安心です。
リンク
リンク

まる。
実際の案件事例まで踏み込んで紹介されていて、効率よくスキルアップするなら必携の二冊です!
パラメータ解説 ⚙️
Shuffle Page 🔀
Method .method 🔀
チャンネルとサンプルをどう再構成するかを決めるメニューパラメータ
| 項目 | 内部名 | 説明 |
|---|---|---|
| Off | .off |
何もしない(パススルー) |
| Swap Channels and Samples | .swap |
チャンネルとサンプルを転置。N チャンネル × M サンプル → M チャンネル × N サンプル(例: 25ch × 33samp → 33ch × 25samp) |
| Sequence Channels by Name | .seqname |
同じアルファベット名を持つチャンネルを番号順に連結(chan1, chan2, chan3 をひとつなぎに) |
| Sequence All Channels | .seqall |
全チャンネルを連結して 1 本の長いチャンネルにする |
| Sequence N Channels | .seqn |
N チャンネルずつグループ化して連結(N=4 なら 0–3, 4–7, … を順次連結) |
| Sequence All Samples | .sallsamples |
全サンプルをシリアライズして連結(チャンネル方向→サンプル方向の順) |
| Split All Samples | .splitall |
各チャンネルを 1 サンプルずつに分割し、別チャンネルとして展開 |
| Split N Samples | .splitn |
各チャンネルを N サンプルごとのセグメントに分割(N は nval で指定) |
N Value .nval 🔢
Sequence N / Split N モードでの粒度指定:
- N Value: Sequence N Channels / Split N Samples / Sequence Every Nth Channel / Split Every Nth Sample で使う
Nの値
Use First Sample Only .firstsample 1️⃣
代表値(先頭サンプル)のみで再構成するトグル:
- Use First Sample Only: オン: 各チャンネルの最初のサンプルのみを使用。複数サンプル CHOP から代表値(先頭)だけを取り出して再構成したい場合に有効
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: チャンネル × サンプル の転置 🔄
Constant CHOP (N channels) → Shuffle CHOP (Swap Channels and Samples) → Output (N samples × 1 channel)
- 複数チャンネル(例: 25 ch × 33 samp)を持つ CHOP を入力
- Shuffle CHOP の Method を
Swap Channels and Samplesに設定 - 出力は 33 ch × 25 samp に転置される
- 行方向のデータを列方向に切替えて扱いたい場合の定番パターン
Example 2: 名前順での自動連結(番号付きチャンネルの統合) 🧵
Multiple Constant CHOPs (chan1, chan2, chan3) → Merge CHOP → Shuffle CHOP (Sequence Channels by Name) → Single sequenced channel
chan1,chan2,chan3等の番号付きチャンネルを Merge CHOP で集約- Shuffle CHOP の Method を
Sequence Channels by Nameに設定 - アルファベット名(
chan)が共通のチャンネルが番号順に 1 本に連結される - 時系列ログや段階別データを順次つなぎたい場合に便利
Example 3: 全サンプルを別チャンネルに展開 📤
Pattern CHOP (10 samples) → Shuffle CHOP (Split All Samples) → 10 channels × 1 sample
- 複数サンプルを持つ 1 チャンネル CHOP(例: 10 サンプル)を入力
- Shuffle CHOP の Method を
Split All Samplesに設定 - 出力は 10 個の独立チャンネル × 1 サンプルになる
- 時系列データをスナップショット群として扱いたいとき、または個別チャンネル参照を作りたいときに使用
関連オペレータ 🔗
類似機能OP 🔍
- Rename CHOP — チャンネル名のリネームに特化、構造の再構成は行わない
- Reorder CHOP — チャンネルの並び順だけを変更(サンプル構造は維持)
- Merge CHOP — 複数 CHOP のチャンネルを連結(構造の転置・分割はしない)
組み合わせ推奨OP 🔄
- Merge CHOP — Shuffle 前にチャンネルを集約してから順次連結
- Select CHOP — Shuffle 後に特定チャンネルを取り出す
- Math CHOP — 転置後のチャンネルに統計演算をかける
- Trail CHOP — Shuffle 出力の時間履歴を可視化
- Pattern CHOP — テスト用の多サンプル入力を生成して Shuffle の挙動確認
前処理・後処理CHOP 🎯
Info CHOP情報 📊
Shuffle 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: Swap Channels and Samples の結果が想定と違う
✅ Solution:
- 入力の チャンネル数 × サンプル数 と出力の関係を確認(25ch × 33samp → 33ch × 25samp の転置)
- Time Slice モードがオンの場合、サンプル数が 1 になり転置の意味が変わる点に注意
- 前段に Trail CHOP を入れて意図したサンプル数を確保してから Shuffle に渡す
❌ Problem: Sequence Channels by Name で順序が想定と違う
✅ Solution:
- アルファベット名(数字を除いた部分)が共通か確認。
chan1とval1は別グループ扱い - 数字部分は自然な数値順で並ぶ(
chan1,chan2,chan10の順) - リネームが必要な場合は前段に Select CHOP や Rename CHOP を挟む
❌ Problem: Split N Samples / Sequence N Channels が機能しない
✅ Solution:
- N Value(
nval)パラメータが 0 や負の値になっていないか確認 - Method が Sequence N / Split N 系に正しく設定されているか確認(Off では N Value は無視される)
- 入力サンプル数 / チャンネル数が N で割り切れない場合の挙動を公式 docs で確認
参考資料 📚
その他 🔗
- TouchDesigner Wiki — CHOP 概要
- TouchDesigner Wiki — Category:CHOPs
- TouchDesigner Wiki ホーム
- TouchDesigner 公式 Forum
- Facebook — TouchDesigner Help Group

