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

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

Speed CHOP の積分による位置生成機能を示す図

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

概要 📖 – 速度・加速度の積分による位置生成

Speed CHOPは、入力チャンネルを時間で積分して累積値(位置)を生成し、Limit と Reset で値域・初期化を制御する CHOPです。Order パラメータで一階・二階・三階の積分を切り替えられ、入力なしでも Speed パラメータから連続値を生成できます。Limit Type で Loop / Clamp / Zigzag による値域処理、Reset 入力で任意タイミングの初期化まで 1 オペレータで完結します。

主な用途 🎯

  • 速度入力の積分による位置の生成(First Order)
  • 加速度入力の二重積分による位置の生成(Second Order)
  • 入力なしでも Speed パラメータから連続値を生成(タイマー・スイープ用途)
  • Limit Type(Loop / Clamp / Zigzag)による値域制御と循環アニメーション
  • Reset 入力・Reset Pulse による累積値の任意タイミングでのリセット

データフロー 🔄

入力: 速度 / 加速度チャンネル(または Speed パラメータ)

Order(積分階数)による積分

定数加算(Constant1〜3)

Limit Type による値域制御(Min / Max)

Reset 条件評価

出力: 累積値チャンネル

Tips

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

まる。
まる。

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


パラメータ解説 ⚙️

Speed Page 📁

Order .order 🎛️

入力をどの階数で積分するかを選ぶメニュー。速度入力なら First で位置、加速度入力なら Second で位置(First で速度)が得られる。

項目 内部名 説明
First .first 一階積分(速度 → 位置、加速度 → 速度)
Second .second 二階積分(加速度 → 位置)
Third .third 三階積分(ジャーク → 位置)

速度・定数パラメータ ⚡

Speed .speed 🏃
– 入力が接続されていないときに自動生成する速度値
– 入力が接続されると無効化される(タイマー・スイープ用途で使用)

First Constant .constant1 1️⃣
– 一階積分後の結果に加算する定数
– 積分結果に対する初期オフセットの役割

Second Constant .constant2 2️⃣
– 二階積分後の結果に加算する定数
– Order=Second / Third 使用時のみ意味を持つ

Third Constant .constant3 3️⃣
– 三階積分後の結果に加算する定数
– Order=Third 使用時のみ意味を持つ

Limit Type .limittype 📏

出力値が Min / Max の範囲を超えたときの処理を選ぶメニュー

項目 内部名 説明
Off .off 値域制限なし(無限に累積する)
Clamp .clamp Max / Min の範囲外でカットし、上下限値で固定
Loop .loop 範囲を超えると逆側の端から再開(循環アニメーション)
Zigzag .zigzag 範囲端で反射して逆方向へ折り返す

値域・サンプル設定 🎚️

Minimum .min ⬇️
– 出力チャンネルが取りうる最小値
– Limit Type が Off 以外のときに適用される

Maximum .max ⬆️
– 出力チャンネルが取りうる最大値
– Limit Type が Off 以外のときに適用される

Speed per Sample .speedsamples 🎵
– オン: チャンネル全体ではなくサンプル毎に Speed を適用
– マルチサンプルチャンネル(音声等)の処理で使用


Reset Page 🔁

Reset Condition .resetcondition 🎛️

Reset 入力(2 番目の入力)がどの状態のときにチャンネルをリセットするかを選ぶメニュー

項目 内部名 説明
Off to On .offtoon Reset 入力が Off → On に立ち上がった瞬間にリセット
While On .on Reset 入力が On の間ずっと Reset Value を保持
On to Off .ontooff Reset 入力が On → Off に立ち下がった瞬間にリセット
While Off .off Reset 入力が Off の間ずっと Reset Value を保持

Reset 値・トリガー ⚡

Reset Value .resetvalue 🎯
– リセット時にチャンネルへ書き込まれる値
– 累積値の初期化点として機能

Reset .reset 🔁
– トグルで On の間チャンネルを Reset Value に固定
– 手動・スクリプトによる強制リセット用

Reset Pulse .resetpulse
– クリック(パルス)で瞬時にチャンネルを Reset Value に戻す
– トグルではなく単発トリガーが必要なときに使用

Reset on Start .resetonstart 🚀
– オン: .toe ファイルが再起動されるたびに自動的にリセット
– 長時間動作する案件で累積値が 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 (velocity) → Speed CHOP (Order=First) → Geometry COMP tx
  1. Constant CHOP に一定の速度値(例: 0.5)を設定
  2. Speed CHOP の Order を First にして接続(速度を積分して位置を生成)
  3. Speed CHOP の出力を Geometry COMP の tx パラメータに Export
  4. 毎秒 0.5 単位ずつ移動する平行移動アニメーションが得られる

Example 2: Loop モードによる循環カウンター 🔄

Speed CHOP (no input, Speed=1, Limit Type=Loop, Min=0, Max=10) → Index 用途
  1. 入力を接続せず Speed パラメータに 1 を設定
  2. Limit Type を Loop、Minimum を 0、Maximum を 10 に設定
  3. 出力が 0 → 10 → 0 → 10 と循環する 10 秒周期のカウンターが得られる
  4. Switch CHOP や Select CHOP のインデックスとして利用可能

Example 3: Zigzag による反射運動 🏓

Constant CHOP → Speed CHOP (Limit Type=Zigzag) → Geometry COMP tx
  1. 速度を Constant CHOP で与える(例: 2)
  2. Speed CHOP の Limit Type を Zigzag、Min/Max を -5 / 5 に設定
  3. 値が -5 と 5 の間で反射するピンポン運動が出力される
  4. オブジェクトの往復アニメーションや音声サンプルの折り返しに利用

Example 4: ボタン押下で累積値をリセットするスコア表示 🎮

Score input → Speed CHOP (input1) + Reset trigger → Speed CHOP (input2, Reset Condition=Off to On) → Text TOP
  1. 1 番目の入力にスコア加算用の速度値、2 番目の入力にボタン信号を接続
  2. Reset Condition を Off to On、Reset Value を 0 に設定
  3. 通常時は加算値が累積、ボタン立ち上がりで 0 にリセット
  4. Text TOP に出力をバインドしてスコア表示として利用

関連オペレータ 🔗

類似機能OP 🔍

  • Count CHOP — 閾値交差のたびに離散カウントを進める(Speed が連続積分なのに対し Count は離散加算)
  • Timer CHOP — 明示的な時間カウンタ・セグメント構造を持つ(Speed は単純積分のみ)
  • LFO CHOP — 周期波形の生成に特化(Speed の Loop / Zigzag は Saw / Triangle 相当の波形を作れる)

組み合わせ推奨OP 🔄

  • Constant CHOP — Speed CHOP の入力速度・加速度ソースとして最も多用される
  • Math CHOP — Speed の出力レンジを From Range / To Range で正規化して下流へ渡す
  • Logic CHOP — Speed の出力が閾値を超えたかを判定して Reset 入力にフィード
  • Trigger CHOP — Loop モードで一定値に達したタイミングをイベントとして取り出す
  • Filter CHOP — Speed の出力をスムージングしてジッターを抑える

前処理・後処理CHOP 🎯


Info CHOP情報 📊

Speed 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:

  • 累積値が CHOP の数値解像度(float 精度)限界に達している
  • Reset on Start をオンにして .toe 再起動時に自動初期化する
  • Limit Type を Clamp / Loop / Zigzag のいずれかに設定して値域を制限

❌ Problem: Speed パラメータを設定しても値が動かない
✅ Solution:

  • 1 番目の入力にチャンネルが接続されていると Speed パラメータは無効化される
  • 入力を切り離してから Speed パラメータの値を確認
  • 前段に Null CHOP を挟んでいる場合、その出力が事実上の入力扱いになる点に注意

❌ Problem: Loop モードで意図した位置で循環しない
✅ Solution:

  • Minimum と Maximum の値が逆になっていないか確認(Min < Max が必要)
  • Max – Min が極端に大きいと Loop 周期が長くなりすぎて循環が見えない
  • 前段の速度値が大きすぎると 1 フレームで複数周期が進み目視で確認できない、Math CHOP でスケーリング

❌ Problem: Reset 入力でリセットされない
✅ Solution:

  • Reset Condition の選択肢が入力信号の挙動と合っているか確認(Off to On / While On / On to Off / While Off)
  • Reset 入力(2 番目の入力)に実際にチャンネルが接続されているか Network エディタで確認
  • Reset Pulse パラメータを直接クリックして手動リセットの動作を切り分けてから入力配線を見直す

参考資料 📚

その他 🔗

公式リソース 📖

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