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

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

Slope CHOP のチャンネル微分機能を示す図

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

概要 📖 – チャンネル値の傾き・加速度を計算

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) → 速度値
  1. Mouse In CHOP でマウス座標 (tx, ty) を取得
  2. Slope CHOP の Type を「Slope」に設定
  3. Method を「Use Previous And Current Sample」に設定(リアルタイム用途)
  4. 出力チャンネルがマウスの瞬時速度として得られる

Example 2: ジェスチャー加速度の検出 🤚

Kinect CHOP → Slope CHOP (Type: Acceleration) → Logic CHOP → Trigger CHOP
  1. Kinect CHOP からジョイント位置を取得
  2. Slope CHOP の Type を「Acceleration」に設定し加速度を算出
  3. Logic CHOP でしきい値を超えた瞬間を検出
  4. 急峻なジェスチャー(パンチ・スワイプ等)の起点として活用

Example 3: 音声波形の変化レート解析 🎵

Audio Device In CHOP → Slope CHOP (Slope per Sample: On) → Analyze CHOP
  1. Audio Device In CHOP で音声を取得(マルチサンプル)
  2. Slope CHOP で Slope per Sample をオンに設定
  3. サンプル単位で傾きを計算(波形のエッジ強度)
  4. 後段の 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、無効時は0
  • export_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 で扱いやすい値域に変換

参考資料 📚

その他 🔗

公式リソース 📖

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