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

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

Trigger CHOP のエンベロープ生成機能を示す図

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

概要 📖 – 閾値検出とエンベロープ生成

Trigger CHOPは、入力チャンネルが閾値を越えた瞬間に Attack / Decay / Sustain / Release から成るエンベロープ波形を発火する CHOPです。Trigger / Release の双方向閾値、ADSR の各段階・形状指定、Multi Trigger モードを組み合わせて、ボタン押下の瞬時応答からシンセサイザ風の音量包絡線まで 1 オペレータで生成できます。

主な用途 🎯

  • 入力チャンネルが閾値を越えた瞬間にエンベロープ波形を発火
  • Attack / Peak / Decay / Sustain / Release から成る ADSR 形状の生成
  • Re-Trigger Delay と Min Trigger Length によるチャタリング抑制とトリガー安定化
  • Multi Trigger モード(Ignore / Add / Restart)による重複発火時の振る舞い制御
  • Attack / Decay / Release の各 Shape(Linear / Ease In / Ease Out / Ease in Ease out)でエンベロープのカーブ整形

データフロー 🔄

入力: チャンネル値

Trigger Threshold 超過判定(Increasing / Decreasing)

Re-Trigger Delay / Min Trigger Length

Delay → Attack(peak まで上昇)

Peak Length 保持

Decay(sustain まで下降)

Sustain(入力 release まで保持)

Release(ゼロまで下降)

出力: エンベロープ波形

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)

Min Trigger Length .mintrigger 📐
– trigger が active 状態を維持する最小時間
– 短いパルス入力でも一定時間以上のエンベロープを保証したいときに使用

Min Trigger Length Unit .mintriggerunit ⏲️
– Min Trigger Length の単位(Frames / Seconds / Samples)

Trigger On .triggeron 🎚️

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

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

Multi Trigger .multitrigger 🔁

複数のエンベロープを発火させたときに、それらの値をどう合成するかを決定するメニュー

項目 内部名 説明
Ignore During Attack .ignore Attack 中の新規 trigger は無視(最初のエンベロープを完走させる)
Add .add 発火中のエンベロープに新規エンベロープを加算合成
Restart Envelope .restart 新規 trigger でエンベロープを最初から再生し直す

Multi Trigger 補助 🧮

Clamp at Peak Level .clamppeak 🚧
– Multi Trigger = Add のときに合成値が Peak Level を超えないようクランプ
– 加算の発散を抑え一定の最大振幅に収める

Update Once per Cycle .updateonce 🔂
– エンベロープの 1 サイクルにつき 1 回だけ値を更新(パラメータ変動の反映を 1 周期単位に揃える)

Complete Envelope .complete
– オン: trigger ポイントごとに完結したエンベロープを出力(release で打ち切られない)
– オフ: release ポイントでエンベロープを途中終了させる

Remainder .remainder 📦

区間末尾でエンベロープが未完了の場合の残りサンプルの処理方法を決定するメニュー

項目 内部名 説明
Discard Remainder .crop 残りサンプルを破棄。出力区間 = 入力区間
Make Output Longer .extend エンベロープが完了していない場合、出力を延長
Mix Remainder with Beginning .mix 残りを区間先頭のサンプルに加算してミックス

手動制御パラメータ 🎛️

Trigger .trigger
– 入力に関係なくエンベロープを即座に発火(手動 trigger ボタン)

Release .release 🛑
– 入力に関係なくエンベロープを即座に release(手動 release ボタン)

Reset .reset ⏸️
– On の間エンベロープをリセットし、出力を入力にマッチさせる

Reset Pulse .resetpulse ♻️
– クリックするとエンベロープを即座にリセット(パルス動作)


Attack Page 📈

Attack 時間パラメータ ⏱️

Delay Length .delay
– trigger ポイントからエンベロープ開始までの遅延時間

Delay Length Unit .delayunit ⏲️
– Delay Length の単位(Frames / Seconds / Samples)

Attack Length .attack 📈
– ゼロから Peak Level まで上昇するのにかける時間

Attack Length Unit .attackunit ⏲️
– Attack Length の単位(Frames / Seconds / Samples)

Attack Shape .ashape 📈

Attack ランプ(上昇区間)の形状を決定するメニュー

項目 内部名 説明
Linear .linear 直線的に上昇
Ease In .easein 緩やかに開始し終端で加速
Ease Out .easeout 急速に開始し終端で減速
Ease in Ease out .halfcos 両端で滑らかな S 字カーブ(cos ベース)

Peak パラメータ 📏

Peak Level .peak 🏔️
– Attack フェーズで到達する最大値

Peak Length .peaklen ⏸️
– Peak Level に到達した後、Decay フェーズに入るまで保持する時間

Peak Length Unit .peaklenunit ⏲️
– Peak Length の単位(Frames / Seconds / Samples)


Sustain Page 📉

Decay 時間パラメータ ⏱️

Decay Length .decay 📉
– Peak Level から Sustain Level まで下降するのにかける時間

Decay Length Unit .decayunit ⏲️
– Decay Length の単位(Frames / Seconds / Samples)

Decay Shape .dshape 📉

Decay ランプ(Peak から Sustain への下降区間)の形状を決定するメニュー

項目 内部名 説明
Linear .linear 直線的に下降
Ease In .easein 緩やかに開始し終端で加速
Ease Out .easeout 急速に開始し終端で減速
Ease in Ease out .halfcos 両端で滑らかな S 字カーブ(cos ベース)

Sustain / Release パラメータ 📏

Sustain Level .sustain 📊
– Decay 後に保持されるレベル
– 入力が release ポイント(閾値下回り)に達するまで維持

Min Sustain Length .minsustain 📐
– sustain の最小時間
– 0 のときは入力 hold 時間と一致、値を指定すると最低限その時間 sustain を保証

Min Sustain Length Unit .minsustainunit ⏲️
– Min Sustain Length の単位(Frames / Seconds / Samples)

Release Length .release 📉
– Sustain Level からゼロまで下降するのにかける時間

Release Length Unit .releaseunit ⏲️
– Release Length の単位(Frames / Seconds / Samples)

Release Shape .rshape 📉

Release ランプ(Sustain からゼロへの下降区間)の形状を決定するメニュー

項目 内部名 説明
Linear .linear 直線的に下降
Ease In .easein 緩やかに開始し終端で加速
Ease Out .easeout 急速に開始し終端で減速
Ease in Ease out .halfcos 両端で滑らかな S 字カーブ(cos ベース)

Chan Page 📁

出力チャンネル設定 🎚️

Channel Name .channame 🏷️
– 出力チャンネルの名前

Specify Rate .specifyrate ⚙️
– オンにすると Sample Rate パラメータで出力サンプルレートを指定可能

Enable Remap Length .enableremaplength 🔄
– オンにすると、エンベロープ全体の長さを Remap Length で指定した時間に再マッピング
– hold 中の sustain は再マッピング対象外(Delay / Attack / Peak / Release のみ再マッピング)

Remap Length .remaplength 📐
– エンベロープ全体の再マッピング後の長さ

Remap Length Unit .remaplengthunit ⏲️
– Remap Length の単位(Frames / Seconds / Samples)

Sample Rate .rate 🎵
– 出力のサンプルレート(Specify Rate がオンのときのみ有効)


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 → Trigger CHOP (ADSR) → 透明度パラメータ
  1. Mouse In CHOP で左ボタン信号を取得
  2. Trigger CHOP の Trigger Threshold を 0.5 に設定
  3. Attack Length を 0.3 秒、Sustain Level を 1.0、Release Length を 0.5 秒に設定
  4. 出力チャンネルをオブジェクトの透明度パラメータに Export してフェードイン・フェードアウトを生成

Example 2: 音声ピーク検出からエンベロープを発火させ照明を演出 💡

Audio Device In CHOP → Analyze CHOP (RMS Power) → Trigger CHOP → Light Intensity
  1. Audio Device In CHOP でマイク音を取得
  2. Analyze CHOP の Function を「RMS Power」に設定して音量レベルを 1 サンプル化
  3. Trigger CHOP の Trigger Threshold を環境ノイズより高い値に設定
  4. Attack Shape を「Ease Out」、Release Length を 0.8 秒に設定して音量ピークに反応する滑らかな照明エンベロープを生成

Example 3: Multi Trigger Add モードによる音量ピーク累積 🎚️

LFO CHOP → Trigger CHOP (Multi Trigger = Add, Clamp at Peak Level = On) → 出力
  1. LFO CHOP で周期的なパルス信号を生成
  2. Trigger CHOP の Multi Trigger を「Add」、Clamp at Peak Level をオンに設定
  3. Attack / Release を短めに設定して連続発火時に重なり合うエンベロープを加算
  4. Peak Level でクランプされた累積エンベロープが出力され、ビジュアル強度の山積み演出に使用

関連オペレータ 🔗

類似機能OP 🔍

  • Count CHOP — 閾値超過のカウントに特化(エンベロープではなく整数カウンタ)
  • Logic CHOP — 閾値判定と論理演算(AND / OR)に特化、エンベロープ波形は生成しない

組み合わせ推奨OP 🔄

  • Analyze CHOP — 音声 RMS Power / ピーク値を抽出して Trigger の入力にする
  • Math CHOP — Trigger 出力エンベロープをスケーリング・オフセット
  • Filter CHOP — 前段で入力信号を平滑化してチャタリングを抑制
  • Lookup CHOP — Trigger 出力を 0〜1 範囲のインデックスとしてテーブル参照
  • LFO CHOP — 周期パルスを Trigger に与えてリズミックなエンベロープを生成

前処理・後処理CHOP 🎯


Info CHOP情報 📊

Trigger 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: エンベロープが途中で切れて Release 段階まで到達しない
✅ Solution:

  • Complete Envelope をオンにして trigger ポイントごとに完結したエンベロープを出力させる
  • Min Trigger Length を指定して短いパルス入力でも一定時間以上の trigger active を保証
  • Remainder を「Make Output Longer」に設定して区間末尾でエンベロープが未完了でも出力を延長

❌ Problem: 複数 trigger が重なったときの振る舞いが意図と違う
✅ Solution:

  • Multi Trigger を用途に合わせて切替(Ignore During Attack / Add / Restart Envelope)
  • Multi Trigger = Add で発散しすぎる場合は Clamp at Peak Level をオンにして合成値を Peak Level でクランプ
  • 後段の Math CHOP で Multiply / Range 変換して最終的な振幅を調整

❌ Problem: Attack / Decay / Release の時間を変えてもエンベロープの形が変わらない
✅ Solution:

  • 各 Length パラメータの Unit(Frames / Seconds / Samples)が想定どおりか確認
  • Enable Remap Length がオンになっていると Delay / Attack / Peak / Release が Remap Length に再マッピングされて個別 Length が無視される
  • Specify Rate がオンで出力サンプルレートが低すぎると短い Attack / Decay が表現できない、Sample Rate を上げる

参考資料 📚

その他 🔗

公式リソース 📖

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