
概要 📖 – チャンネル値の傾き・加速度を計算
Slope CHOPは、チャンネル値の時間変化(傾き・加速度)を計算する CHOPです。サンプル間の差分を時間で除算することで、入力チャンネルの変化レートをリアルタイムに取得します。
主な用途 🎯
- チャンネル値の傾き(一次微分)の計算による変化量の取得
- 加速度(二次微分)の計算による動きの急峻さの解析
- 傾きの加速度(Acceleration Of Slope)による高次変化の検出
- ジェスチャー・モーションキャプチャ信号の速度・加速度抽出
- センサー値の変化レート監視(しきい値超え検出の前処理)
データフロー 🔄
入力: チャンネルデータ
↓
サンプルペア選択(Previous/Current/Next)
↓
差分計算(前後サンプル間の差)
↓
時間で除算(サンプルレート基準)
↓
出力: 傾き / 加速度 / 傾きの加速度
Tips
初心者の方は、以下日本語書籍も手元にあると安心です。
リンク
リンク

まる。
実際の案件事例まで踏み込んで紹介されていて、効率よくスキルアップするなら必携の二冊です!
パラメータ解説 ⚙️
Slope Page 📈
Type .type 🔀
計算する傾きの種類を選択するメニュー
| 項目 | 内部名 | 説明 |
|---|---|---|
| Slope | .slope |
チャンネルの傾き(一次微分)を計算 |
| Acceleration | .accel |
チャンネルの加速度(二次微分)を計算 |
| Acceleration Of Slope | .slacc |
傾きの加速度を計算(傾き変化のさらに変化) |
Method .method 🎯
傾き計算に使用するサンプルペアの組み合わせ
| 項目 | 内部名 | 説明 |
|---|---|---|
| Use Previous And Current Sample | .pc |
現在のサンプルと 1 つ前のサンプルを使用。リアルタイム用途で唯一適用可能な方式 |
| Use Current And Next Sample | .cn |
現在のサンプルと 1 つ後のサンプルを使用 |
| Use Previous And Next Sample | .pn |
前後のサンプルを使用。他の方式よりやや連続的な傾きが得られる |
Slope per Sample .slopesamples 🎚️
チャンネル全体ではなくサンプル単位で傾きを適用する設定。マルチサンプルチャンネルで有効
| 項目 | 内部名 | 説明 |
|---|---|---|
| Slope per Sample | .slopesamples |
オン: チャンネル全体ではなく各サンプルごとに傾きを計算して適用する。マルチサンプル(オーディオ等の高サンプルレート信号)を扱う際に有用。 |
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: マウス移動速度の取得 🖱️
Mouse In CHOP → Slope CHOP (Type: Slope) → 速度値
- Mouse In CHOP でマウス座標 (tx, ty) を取得
- Slope CHOP の Type を「Slope」に設定
- Method を「Use Previous And Current Sample」に設定(リアルタイム用途)
- 出力チャンネルがマウスの瞬時速度として得られる
Example 2: ジェスチャー加速度の検出 🤚
Kinect CHOP → Slope CHOP (Type: Acceleration) → Logic CHOP → Trigger CHOP
- Kinect CHOP からジョイント位置を取得
- Slope CHOP の Type を「Acceleration」に設定し加速度を算出
- Logic CHOP でしきい値を超えた瞬間を検出
- 急峻なジェスチャー(パンチ・スワイプ等)の起点として活用
Example 3: 音声波形の変化レート解析 🎵
Audio Device In CHOP → Slope CHOP (Slope per Sample: On) → Analyze CHOP
- Audio Device In CHOP で音声を取得(マルチサンプル)
- Slope CHOP で Slope per Sample をオンに設定
- サンプル単位で傾きを計算(波形のエッジ強度)
- 後段の Analyze CHOP で統計値を抽出しトリガー判定に活用
関連オペレータ 🔗
類似機能OP 🔍
- Filter CHOP — 時間方向の平滑化に特化、微分計算は行わない
- Lag CHOP — 遅延・スムージング用途、傾き計算機能は持たない
組み合わせ推奨OP 🔄
- Filter CHOP — Slope 前段で平滑化し、ノイズによる傾きスパイクを抑制
- Math CHOP — 傾き値を任意レンジに正規化・スケーリング
- Logic CHOP — 傾きしきい値での条件判定
- Trigger CHOP — 傾き超過時にエンベロープを起動
- Analyze CHOP — 傾きチャンネルの最大値・平均などを統計的に抽出
前処理・後処理CHOP 🎯
Info CHOP情報 📊
Slope 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: 出力にスパイク・ノイズが多い
✅ Solution:
- 入力信号自体のノイズが微分で増幅される性質があるため、前段に Filter CHOP を入れて平滑化
- Method を「Use Previous And Next Sample」に切り替えるとやや連続的な傾きが得られる
- 後段の Math CHOP で値域をクランプ・スケーリング
❌ Problem: リアルタイム用途で結果が 1 フレーム遅れる
✅ Solution:
- Method が「Use Current And Next Sample」「Use Previous And Next Sample」だと未来サンプルが必要で遅延が生じる
- リアルタイム用途では Method を「Use Previous And Current Sample」に固定する(公式 docs でも唯一推奨)
- 前段で時間方向の補間が必要な場合は Filter CHOP を併用
❌ Problem: 加速度値の単位・スケールが意図と異なる
✅ Solution:
- Slope CHOP は時間で除算するため、CHOP の Units(サンプル数 / 秒 / フレーム)設定により値スケールが変わる
- サンプルレートが変動する場合 Resample CHOP で固定レートに揃える
- 出力後に Math CHOP の From Range / To Range で扱いやすい値域に変換
参考資料 📚
その他 🔗
- TouchDesigner Wiki — CHOP 概要
- TouchDesigner Wiki — Category:CHOPs
- TouchDesigner Wiki ホーム
- TouchDesigner 公式 Forum
- Facebook — TouchDesigner Help Group

