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

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

Envelope CHOP の包絡線抽出機能を示す図

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

概要 📖 – 信号包絡線の抽出と波形整形

Envelope CHOPは、入力チャンネルのピーク輪郭を一定の窓幅で追跡し、減衰補間で包絡線を生成する CHOPです。音声波形の音量カーブ抽出やセンサー信号のスムージング、振幅追従の動的可視化に用います。

主な用途 🎯

  • 音声波形の音量包絡線(ボリュームエンベロープ)抽出
  • ノイズの多い信号からピーク輪郭を取り出すスムージング処理
  • オーディオリアクティブ演出のための振幅追従カーブ生成
  • センサー信号の動的レンジ可視化(最大・最小エッジの抽出)
  • 周期信号の RMS / Magnitude 包絡線によるエネルギー解析

データフロー 🔄

入力: 時系列チャンネル(音声・センサー等)

Envelope Width 窓内でのピーク検出

Type(Exponential Decay 等)に応じた減衰補間

Bounds(Magnitude / Power / Min / Max)で値域選択

Interpolate / Resample で整形

出力: 包絡線チャンネル

Tips

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

まる。
まる。

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


パラメータ解説 ⚙️

Envelope Page 📋

Type .method 🎛️

包絡線の計算方式を選択するメニューパラメータ

項目 内部名 説明
Exponential Decay .exp 各サンプルを直前サンプルと比較し、超えた場合は新しいピーク値を採用、下回った場合は前回ピークから現在値へ指数関数的に減衰。常にデータを上から包む(Pros)が、傾きが不連続でカーブにバンプが出る場合がある(Cons)
Maximum .max Envelope Width 窓内の最大値(または Bounds 設定に応じた最大絶対値)をそのまま採用するシンプルな最大値追従方式

Envelope Bounds .bounds 📐

包絡線が追跡する値の対象(振幅・電力・上下エッジ)を選択するメニュー

項目 内部名 説明
Magnitude .mag サンプルの絶対値を対象に追跡(音声波形の振幅エンベロープに最適)
Signal Power .power サンプルの 2 乗(Power)を対象に追跡(RMS 風のエネルギー包絡線)
Maximum Values .min 正側ピーク(最大値)のみを追跡し、上側エッジ包絡線を取得
Minimum Values .max 負側ピーク(最小値)のみを追跡し、下側エッジ包絡線を取得

Envelope Width パラメータ 📏

Envelope Width .width 📏
– 包絡線計算に用いる窓のサイズ
– 入力信号の特徴をどれだけ拾うかを決める。Envelope Width Unit で指定した単位(Samples / Frames / Seconds)で表現

Envelope Width Unit .widthunit 🧭
– Envelope Width パラメータの単位を選択
– 選択肢: Samples(サンプル数)/ Frames(フレーム数)/ Seconds(秒)

  • Samples
  • Frames
  • Seconds

Interpolate .interp 📈

ピーク間の補間方式を選択するメニュー

項目 内部名 説明
None .none 補間なし(ピーク値をそのまま保持し、階段状の出力)
Linear .linear ピーク間を直線補間し、滑らかな包絡線を生成
Cubic .cubic 三次補間でより自然な曲線(音響系の振幅エンベロープに推奨)

Normalize / Resample パラメータ ⚙️

Normalize Power Envelope .norm ⚖️
– Envelope Width を変えても信号の総パワーを一定に保つ
– Bounds = Signal Power 使用時にゲイン補正として有効

Resample Envelope .resample 🔁
– オン時、生成した包絡線を下記 Sample Rate にリサンプル
– 出力サンプルレートを入力と切り離したいときに使用

Sample Rate .samplerate 🎚️
– Resample Envelope がオンのときに適用される目標サンプルレート(Hz)
– 入力よりも低い値にしてダウンサンプリング包絡線を得る用途で使う


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: 音声振幅エンベロープによる照明連動 🎵

Audio Device In CHOP → Envelope CHOP (Magnitude / Cubic) → Math CHOP → Light Intensity
  1. Audio Device In CHOP でマイクまたはライン入力を取得
  2. Envelope CHOP の Bounds を「Magnitude」、Type を「Exponential Decay」に設定
  3. Envelope Width を 50ms 程度に調整して滑らかな振幅追従カーブを得る
  4. 出力をライト強度パラメータに Export して音量に同期した照明演出を実現

Example 2: センサーノイズのスムージング包絡線 📊

Serial CHOP → Envelope CHOP (Maximum Values / Linear) → Filter CHOP → Output
  1. センサーから Serial CHOP で時系列データを取得
  2. Envelope CHOP の Bounds を「Maximum Values」に設定し上側ピーク輪郭を抽出
  3. Interpolate を「Linear」にしてピーク間を直線補間
  4. 後段の Filter CHOP で残った高周波ノイズを除去し安定した制御信号を生成

Example 3: RMS パワー包絡線によるエネルギー可視化 📈

Audio Spectrum CHOP → Envelope CHOP (Signal Power / Normalize ON) → Trail CHOP → Visual
  1. Audio Spectrum CHOP で周波数帯域ごとのパワーを取得
  2. Envelope CHOP の Bounds を「Signal Power」、Normalize Power Envelope をオンに
  3. 後段の Trail CHOP で時間履歴を可視化し帯域別エネルギーの動きを表示

関連オペレータ 🔗

類似機能OP 🔍

  • Filter CHOP — ローパス系スムージングで似た平滑化結果が得られるが、ピーク輪郭追従ではない
  • Lag CHOP — 上昇・下降の遅延を独立指定する追従系。Envelope のような窓内ピーク追跡はしない
  • Analyze CHOP — 信号全体の統計値(RMS Power・最大・ピーク)を 1 サンプル長で出力する集約系

組み合わせ推奨OP 🔄

  • Audio Spectrum CHOP — 周波数領域変換後のパワーに対して帯域別包絡線を生成
  • Math CHOP — Envelope 出力を Range 変換で正規化・スケーリング
  • Trigger CHOP — 包絡線ピークから ADSR エンベロープを起動
  • Filter CHOP — Envelope 出力に追加スムージングをかけて段差を抑制
  • Trail CHOP — 包絡線の時間履歴を波形として可視化

前処理・後処理CHOP 🎯


Info CHOP情報 📊

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

  • Type を「Exponential Decay」のまま Envelope Width を広めに調整して窓幅を増やす
  • Interpolate を「Cubic」に変更して三次補間で滑らかに繋ぐ
  • 後段に Filter CHOP を入れて残ったバンプを更に平滑化

❌ Problem: Envelope Width を変えると全体のレベルが変動する
✅ Solution:

  • Bounds を「Signal Power」にしている場合、Normalize Power Envelope をオンにして総パワーを一定に保つ
  • Bounds が Magnitude / Maximum / Minimum のときは Math CHOP の Range 変換でレベルを正規化
  • Width Unit を Seconds 固定にして窓幅の物理時間を一定に保つ

❌ Problem: 出力サンプルレートを下げて軽くしたい
✅ Solution:

  • Resample Envelope をオンにして Sample Rate に目標レートを指定
  • 前段の入力レートを Resample CHOP で先にダウンサンプル
  • Common Page の Sample Rate Match を「Resample At Minimum 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をコピーしました