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

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

Audio Spectrum CHOP の周波数スペクトル解析機能を示す図

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

概要 📖 – FFT による音声周波数スペクトル解析

Audio Spectrum CHOPは、時間領域の音声信号を FFT で周波数領域に変換し、振幅スペクトラム(およびオプションで位相)を出力する CHOPです。FFT サイズ・対数スケーリング・高域ブーストを切り替えることで、可視化用途から信号復元用途まで幅広く対応します。

主な用途 🎯

  • 音声信号の周波数スペクトル可視化(FFT による振幅スペクトラム生成)
  • 低域・中域・高域の帯域別エネルギー抽出(ビート検出・楽器分離の前段)
  • オーディオリアクティブ演出のソース信号化(特定周波数の音量で映像パラメータを駆動)
  • 音声信号の時間⇔周波数領域変換(Time → Magnitude/Phase / Magnitude/Phase → Time の双方向)
  • 対数スケール表示による人間聴覚に近い周波数特性の解析

データフロー 🔄

入力: 時間領域の音声 CHOP(タイムスライス)

FFT サイズ分の最新サンプル抽出(64〜16384)

FFT 変換(周波数領域へ変換)

High Frequency Boost / Logarithmic Scaling / Output Length 調整

出力: 周波数スペクトラム CHOP(Visualization / Magnitude / Phase)

Tips

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

まる。
まる。

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


パラメータ解説 ⚙️

Spectrum Page 📋

Mode .mode 🎛️

Audio Spectrum CHOP の動作モードを選択するメニュー

項目 内部名 説明
Visualization .visual 可視化用途に最適化されたスペクトラムを出力(高域がブーストされ、低域は横方向に広がる)
Time to Magnitude and Phase .timetoraw 時間領域の信号を仮定して周波数スペクトラム(振幅と位相)を計算
Magnitude and Phase to Time .rawtotime Time to Magnitude and Phase で得られたスペクトラムから時間領域信号を再構築

FFT Size .fftsize 🔢

FFT に使うサンプル数(2 のべき乗)。大きいほど周波数分解能が上がるが、最新音声を反映する応答性は下がる

項目 内部名 説明
64 .64 最小 FFT サイズ(応答性最重視・分解能最低)
128 .128 応答性重視の小さい FFT サイズ
256 .256 応答性と分解能のバランス(小)
512 .512 中程度の分解能(リアルタイム可視化向け)
1024 .1024 標準的な分解能・応答性のバランス
2048 .2048 高い周波数分解能(オーディオ解析向け)
4096 .4096 より高い分解能(音楽分析・楽器分離向け)
8192 .8192 高分解能(応答性は低下)
16384 .16384 最大 FFT サイズ(分解能最高・応答性最低)

※ 注意: 44100 Hz / 60 fps の場合、1 フレームあたり 735 サンプルしか進まない。FFT サイズを 1024 にすると 289 サンプルが前フレームと重複し、サイズを 8192 にすると複数フレーム間で大幅にサンプルが重なる(= 最新音声の反映が遅れる)。

引用元: 公式 docs

Frequency / Logarithmic Scaling .frequencylog 📊

Frequency <-> Logarithmic Scaling .frequencylog 🎚️
1(対数): オクターブ毎に等しいサンプル数で表示し、人間の聴覚特性に近い周波数バランスを得る
0(リニア): 一定 Hz ごとに 1 サンプル。Mode=Visualization と組合せると 1 サンプル = 1 Hz の素直なスペクトラムになる

High Frequency Boost .highfreqboost 📈

High Frequency Boost .highfreqboost 🔝
0: レベルは変化しない(生のスペクトラム)
1 以上: 主に高域のレベルが持ち上がる。1 を超えてオーバードライブも可能
– 可視化用途で高域の存在感を強める際に多用される

Output Length .outputmenu 📐

出力サンプル数の決定方法を選択するメニュー

項目 内部名 説明
Match Length To Frequency .matchtofrequency 周波数分解能(FFT サイズ)に応じて出力サンプル数を自動決定
Set Length Manually .setmanually Set Output Length パラメータで出力サンプル数を手動指定

Set Output Length .outlength 🔢

Set Output Length .outlength 📏
– 出力に欲しいサンプル数を指定(Output Length が Set Length Manually のときに有効)
– サンプル数を減らすと周波数分解能は下がるが、後段の処理コストが軽くなる


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 → Audio Spectrum CHOP (Visualization) → CHOP to TOP → Geometry / Material

音声入力の周波数スペクトラムをそのままテクスチャ化してシェーダに渡し、低域・中域・高域それぞれの音量で頂点・色・発光をリアルタイム駆動する基本構成です。

  1. Audio Device In CHOP で音声入力を取得
  2. Audio Spectrum CHOP の Mode を「Visualization」、High Frequency Boost を 1.5 程度に設定
  3. 出力を CHOP to TOP で 1D テクスチャ化し、シェーダの uniform に渡す
  4. 周波数帯ごとの音量で頂点位置・発光・色相を駆動するリアクティブ演出が完成

Example 2: 低域・中域・高域の独立検出 📊

Audio Device In CHOP → Audio Spectrum CHOP → Analyze CHOP (Average × 3) → Logic CHOP

スペクトラムを 3 つの帯域に切り分け、それぞれの平均音量を独立した制御信号として扱う構成です。ビート検出・楽器分離・ジェスチャー連動の起点に使えます。

  1. Audio Spectrum CHOP の Mode を「Visualization」、Frequency / Logarithmic Scaling を 1(対数)に設定
  2. 出力スペクトラムを 3 つに分割し、低域 / 中域 / 高域を個別に取り出す
  3. 各帯域で Analyze CHOP の Average を取り、3 系統の音量信号を取得
  4. Logic CHOP の閾値判定でビート検出やジェスチャー連動の起点として使う

Example 3: 音声信号の周波数領域編集と再合成 🔁

Audio File In CHOP → Audio Spectrum CHOP (Time to Magnitude and Phase) → Math CHOP → Audio Spectrum CHOP (Magnitude and Phase to Time) → Audio Device Out CHOP

周波数領域に変換した音声をサンプル単位で編集し、再び時間領域へ戻す双方向変換を活用したカスタム EQ・スペクトラム加工の構成です。

  1. 1 段目の Audio Spectrum CHOP の Mode を「Time to Magnitude and Phase」にして周波数領域へ変換
  2. Math CHOP で特定帯域のサンプルだけをゲインで強調・抑制
  3. 2 段目の Audio Spectrum CHOP の Mode を「Magnitude and Phase to Time」にして時間領域へ復元
  4. 周波数領域での編集結果を音として再生できる(カスタム EQ・スペクトラム加工)

Example 4: FFT サイズ切替えによる応答性チューニング ⚙️

Audio Device In CHOP → Audio Spectrum CHOP (FFT Size 切替) → Trail CHOP

FFT サイズを段階的に変えてスペクトラムの分解能と応答性のトレードオフを実機で確認し、演出に必要なバランスを探る構成です。

  1. Audio Spectrum CHOP の FFT Size を 512 / 1024 / 2048 / 4096 で順に切替えて比較
  2. 出力スペクトラムを Trail CHOP で時間履歴として可視化
  3. サイズが大きいほど周波数分解能は上がるが、最新音声の反映が遅れることを確認
  4. 演出に求められる応答性と分解能のバランスから最適 FFT サイズを決定

関連オペレータ 🔗

類似機能OP 🔍

  • Audio Band EQ CHOP — 16 バンドの帯域ゲイン処理に特化、スペクトラム抽出は不可
  • Audio Para EQ CHOP — パラメトリック EQ で任意周波数帯を整形(解析ではなく加工)
  • Audio Filter CHOP — ローパス・ハイパス等の時間領域フィルタ処理

組み合わせ推奨OP 🔄

  • Audio Device In CHOP — リアルタイム音声入力ソースとして上流に接続
  • Analyze CHOP — スペクトラムから帯域別の最大値・平均・ピークを抽出
  • Math CHOP — スペクトラムの正規化・対数化・帯域ゲイン調整
  • CHOP to TOP — スペクトラムを 1D テクスチャ化して GPU シェーダへ渡す
  • Trail CHOP — スペクトラムの時間履歴を可視化(スペクトログラム化)
  • Filter CHOP — 後段でスペクトラムをスムージングしてちらつきを抑制

前処理・後処理CHOP 🎯


Info CHOP情報 📊

Audio Spectrum 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:

  • FFT Size を 1024 / 2048 / 4096 と段階的に上げて周波数分解能を確保
  • 後段に Filter CHOP を入れて時間方向のスムージングをかける
  • Frequency / Logarithmic Scaling を 1(対数)にすると低域の解像感が上がる

❌ Problem: 最新の音声に追従していない
✅ Solution:

  • FFT Size を小さくする(1024 → 512 等)と最新サンプルの比率が上がる
  • FPS と FFT Size のバランスを確認(44100 Hz / 60 fps では 1 フレーム = 735 サンプル)
  • 前段の Audio Device In CHOP のバッファ設定とサンプルレートを確認

❌ Problem: Magnitude and Phase to Time で復元音が歪む
✅ Solution:

  • 前段は必ず Mode = Time to Magnitude and Phase で生成したスペクトラムを使う(Visualization からは復元不可)
  • 途中の Math CHOP 等で振幅と位相を別系統で扱い、対応関係を崩さないようにする
  • FFT Size を時間領域変換と再合成で揃える

❌ Problem: 高域が見えない / 弱い
✅ Solution:

  • High Frequency Boost を 1 以上に上げて高域レベルを持ち上げる
  • Frequency / Logarithmic Scaling を 1(対数)にしてオクターブ均等表示にする
  • 可視化用途では Mode = Visualization を使うと自動で高域が強調される

参考資料 📚

その他 🔗

公式リソース 📖

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