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

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

Count CHOP の閾値カウント機能を示す図

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

概要 📖 – 閾値カウントとイベント計数

Count CHOPは、入力チャンネル値が閾値を越えた回数をカウントし、ステート遷移ごとに任意の演算を適用する CHOPです。Trigger / Release の双方向閾値、Loop / Clamp / Zigzag の値域モード、Reset 入力による初期化を組み合わせて、UI クリック数のような単純カウントから複雑なステートマシンまで 1 オペレータで構築できます。

主な用途 🎯

  • 入力チャンネル値の閾値超え検出によるイベントカウント
  • ボタン押下・タップ・ジェスチャー回数のリアルタイム計数
  • Loop / Clamp / Zigzag による値域の循環・固定処理
  • Off→On / On→Off / While On / While Off の各状態遷移ごとに異なる演算を割り当てるステートマシン構築
  • Reset 入力と Reset Value による任意タイミングのカウンタ初期化

データフロー 🔄

入力: チャンネル値

Trigger Threshold 超過判定(増加 / 減少スロープ)

Off→On / While On / On→Off / While Off の各遷移演算

Limit(Loop / Clamp / Zigzag)で値域処理

Reset 入力で初期化

出力: カウント値

Tips

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

まる。
まる。

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


パラメータ解説 ⚙️

Trigger Page 🎯

閾値パラメータ 📏

Release = Trigger Threshold .threshold 🔗
– オン: Trigger Threshold を Release Threshold としても兼用(単一閾値モード)
– オフ: Trigger / Release を別々の値で設定可能(ヒステリシス付き判定)

Trigger Threshold .threshup ⬆️
– カウント発火の基準となるチャンネル値
– この値を超えると trigger イベントが発生

Release Threshold .threshdown ⬇️
– チャンネル値がこの値を下回ると release イベントが発生
– Release = Trigger Threshold がオフのときのみ有効

Re-Trigger Delay .retrigger
– 一度 trigger が発生してから次の trigger を受け付けるまでの待機時間
– チャタリング(連続誤発火)を抑制するためのデバウンス用途に有効

Re-Trigger Delay Unit .retriggerunit ⏲️
– Re-Trigger Delay の単位(Frames / Seconds / Samples)

Trigger On .triggeron 🎚️

閾値通過のどちらの方向で trigger を発火させるかを決定するメニュー

項目 内部名 説明
Increasing Values .increase チャンネル値が上昇しながら閾値を越えるときに trigger(release は逆方向)
Decreasing Values .decrease チャンネル値が下降しながら閾値を越えるときに trigger(release は逆方向)

Count Page 🔢

Limit .output 🚧

カウント値が Min / Max を超えたときの処理方法を選択するメニュー

項目 内部名 説明
Off .off 値域制限なし(カウントは無制限に増減)
Loop Min/Max .loop Min と Max の間でループ(最大に達したら最小に戻る)
Clamp Min/Max .min Min / Max でクランプ(範囲外では値を保持)
Loop Min, Clamp Max .lc 下限はループ、上限はクランプ
Clamp Min, Loop Max .cl 下限はクランプ、上限はループ
Zigzag Min/Max .zigzag Min / Max の間で折り返し(端点で方向反転)

値域パラメータ 📐

Limit Minimum .limitmin ⬇️
– カウント値の下限(Limit が Off 以外のときに有効)

Limit Maximum .limitmax ⬆️
– カウント値の上限(Limit が Off 以外のときに有効)

Off to On .offtoon 🔼

trigger イベント(off→on の遷移)が発生した瞬間に実行する演算

項目 内部名 説明
None .none 何もしない
Increase Count .inc カウントを 1 増やす(最頻出: ボタン押下回数の計測等)
Decrease Count .dec カウントを 1 減らす
Increase Count by Time .inctime 経過時間ぶんカウントを増やす
Decrease Count by Time .dectime 経過時間ぶんカウントを減らす
Reset Count to Zero .reset カウントをゼロに戻す

While On .on 🟢

入力が trigger 状態(on)を維持している間に毎フレーム実行する演算

項目 内部名 説明
None .none 何もしない
Increase Count .inc 毎フレームカウントを 1 増やす
Decrease Count .dec 毎フレームカウントを 1 減らす
Increase Count by Time .inctime 経過時間ぶんカウントを増やす(押し続けによる連続加算に有効)
Decrease Count by Time .dectime 経過時間ぶんカウントを減らす
Reset Count to Zero .reset カウントをゼロに戻す

On to Off .ontooff 🔽

release イベント(on→off の遷移)が発生した瞬間に実行する演算

項目 内部名 説明
None .none 何もしない
Increase Count .inc カウントを 1 増やす
Decrease Count .dec カウントを 1 減らす
Increase Count by Time .inctime 経過時間ぶんカウントを増やす
Decrease Count by Time .dectime 経過時間ぶんカウントを減らす
Reset Count to Zero .reset カウントをゼロに戻す

While Off .off

入力が trigger されていない(off)間に毎フレーム実行する演算

項目 内部名 説明
None .none 何もしない
Increase Count .inc 毎フレームカウントを 1 増やす
Decrease Count .dec 毎フレームカウントを 1 減らす
Increase Count by Time .inctime 経過時間ぶんカウントを増やす
Decrease Count by Time .dectime 経過時間ぶんカウントを減らす
Reset Count to Zero .reset カウントをゼロに戻す

Reset Condition .resetcondition 🔁

Reset 入力(第 2 入力)の状態がチャンネル初期化を引き起こす条件

項目 内部名 説明
Off to On .offtoon Reset 入力が off→on に遷移した瞬間にリセット
While On .on Reset 入力が on の間リセット値を保持(off に戻るまで動かない)
On to Off .ontooff Reset 入力が on→off に遷移した瞬間にリセット
While Off .off Reset 入力が off の間リセット値を保持(on に戻るまで動かない)

Reset パラメータ ♻️

Reset Value .resetvalue 0️⃣
– リセット時にチャンネルへ書き込まれる値(既定 0)

Reset .reset ⏸️
– On の間 Reset Value で固定し、Off に戻るまでカウントを再開しない

Reset Pulse .resetpulse
– クリックすると即座に Reset Value で初期化(パルス動作)


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 → Math CHOP (閾値前処理) → Count CHOP (Off to On = Increase Count) → 表示
  1. Mouse In CHOP で左ボタン信号を取得
  2. Count CHOP の Trigger Threshold を 0.5、Off to On を「Increase Count」に設定
  3. Re-Trigger Delay を 0.05 秒前後に設定してチャタリングを防止
  4. 出力チャンネルが押下回数として 1 サンプル単位で増加していく

Example 2: 音声ピーク数のリアルタイム計測 🎙️

Audio Device In CHOP → Analyze CHOP (RMS Power) → Count CHOP (Trigger Threshold + Loop) → 出力
  1. Audio Device In CHOP でマイク音を取得
  2. Analyze CHOP の Function を「RMS Power」に設定して音量レベルを 1 サンプル化
  3. Count CHOP の Trigger Threshold を環境ノイズより高い値に設定
  4. Limit を「Loop Min/Max」、Min=0 / Max=10 に設定して 0〜10 を循環するヒットカウンタを構成

Example 3: Zigzag モードによる往復アニメーション制御 🎞️

LFO CHOP → Count CHOP (Limit = Zigzag, While On = Increase by Time) → Lookup → アニメ
  1. LFO CHOP の出力を入力に接続
  2. Count CHOP の Limit を「Zigzag Min/Max」、Min=0 / Max=1 に設定
  3. While On を「Increase Count by Time」に設定
  4. 出力値が 0↔1 を周期的に往復し、Lookup CHOP のインデックスとして滑らかな往復モーションを生成

関連オペレータ 🔗

類似機能OP 🔍

  • Trigger CHOP — 閾値通過時にエンベロープを発火(カウントではなく波形生成に特化)
  • Logic CHOP — 閾値判定と論理演算(AND / OR)に特化、累積カウントは持たない

組み合わせ推奨OP 🔄

  • Logic CHOP — 前段で複数信号の AND / OR を取って Count に渡す
  • Math CHOP — Count 出力をスケーリングして UI / アニメに割り当て
  • Trigger CHOP — Count の節目(Limit Maximum 到達等)でエンベロープを発火
  • Analyze CHOP — 音声ピーク検出と組み合わせ閾値超過回数を集計
  • Lookup CHOP — Count の整数値をインデックスにテーブル参照

前処理・後処理CHOP 🎯


Info CHOP情報 📊

Count 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: 1 回の押下でカウントが複数回増えてしまう(チャタリング)
✅ Solution:

  • Re-Trigger Delay を 0.05〜0.2 秒程度に設定して連続発火を抑制
  • Release = Trigger Threshold をオフにして、Trigger / Release に異なる閾値を設定(ヒステリシス付き判定)
  • 前段に Filter CHOP を入れて入力波形を平滑化

❌ Problem: Limit を設定したのに値域が想定どおり制御されない
✅ Solution:

  • Limit が「Off」のままだと Min / Max は無視される。「Loop Min/Max」「Clamp Min/Max」「Zigzag Min/Max」のいずれかに切替
  • Limit Minimum と Limit Maximum の大小関係を確認(Min < Max が必須)
  • 整数カウントを期待している場合、後段の Math CHOP で Integer = Round / Floor / Ceiling に丸める

❌ Problem: Reset 入力に信号を送ってもカウントが初期化されない
✅ Solution:

  • Reset Condition の選択を確認(Off to On / While On / On to Off / While Off で挙動が大きく異なる)
  • Reset Value にカウント開始値を明示的に設定(既定 0 で問題ないが、別値からスタートしたいときは要設定)
  • 即座に強制初期化したい場合は Reset Pulse パラメータをクリック(パルス動作)

❌ Problem: Off to On / While On 等を設定しても全くカウントしない
✅ Solution:

  • 入力チャンネル値が Trigger Threshold を実際に越えているか Analyze CHOP や CHOP Viewer で確認
  • Trigger On が「Increasing Values」のとき、入力が下降スロープでは発火しない(必要なら「Decreasing Values」に切替)
  • Reset パラメータが On のままになっていないか確認(On の間はカウント停止)

参考資料 📚

その他 🔗

公式リソース 📖

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