
概要 📖 – 3D 音響シミュレーションと立体音響レンダリング
Audio Render CHOPは、3D 空間の音源・リスナー・メッシュ情報から Steam Audio エンジンで立体音響を計算し、バイノーラル / サラウンド / Ambisonics 等の出力フォーマットでレンダリングする CHOPです。音源とリスナーの位置関係、ジオメトリの吸収・散乱・透過特性、空気吸収、反射といった音響物理を統合的にシミュレートできます。
主な用途 🎯
- 3D 空間内の音源とリスナーの位置関係に基づくバイノーラル / サラウンドの立体音響レンダリング
- Steam Audio エンジンを利用した音場シミュレーション(反射・遮蔽・空気吸収)
- Ambisonics 3rd order SN3D 形式での 360 度音場エンコード
- メッシュジオメトリの音響特性(吸収・散乱・透過)を加味した室内音響シミュレーション
- リスナー基準の距離減衰・指向性パターン制御による没入型サウンドデザイン
データフロー 🔄
入力: 音源 CHOP(音声サンプル)
↓
Steam Audio エンジン(位置・指向性・減衰の計算)
↓
メッシュ反射・遮蔽・空気吸収シミュレーション
↓
出力フォーマット変換(Binaural / Stereo / Surround / Ambisonics)
↓
出力: 立体音響チャンネル
初心者の方は、以下日本語書籍も手元にあると安心です。

実際の案件事例まで踏み込んで紹介されていて、効率よくスキルアップするなら必携の二冊です!
パラメータ解説 ⚙️
Audio Render Page 📋
Active .active ✅
Audio Render のオン・オフ切替:
- Active: Audio Render の処理を有効にすると音響シミュレーションが開始され、無効にすると出力が停止
Mode .mode 🎛️
Steam Audio のシミュレーションモードを選択するメニュー
| 項目 | 内部名 | 説明 |
|---|---|---|
| Simple Positional | .simple |
モノラル単一音源向けの軽量シミュレーション |
| Simulation | .simulation |
複数音源対応のフルシミュレーション(反射・遮蔽等を含む高度な計算) |
Output Format .outputformat 📤
音響レンダリングの出力フォーマット
| 項目 | 内部名 | 説明 |
|---|---|---|
| Binaural | .Binaural |
リスナーに対する音源の 3D 位置からヘッドフォン用バイノーラル空間音響を生成 |
| Stereo | .stereo |
L / R 2 チャンネルで左右の空間定位を生成 |
| Quadraphonic Surround | .quadraphonic |
Front L / Front R / Rear L / Rear R の 4 チャンネルサラウンド |
| 5.1 Surround | .fiveone |
Front L / Front R / Center / LFE / Rear L / Rear R の 5.1 サラウンド |
| 7.1 Surround | .sevenone |
Front L / Front R / Center / LFE / Rear L / Rear R / Side L / Side R の 7.1 サラウンド |
| Custom Setup | .custom |
Mapping Table DAT で自由にスピーカー配置を定義するカスタム構成 |
| Ambisonics | .ambisonics |
3rd order SN3D 形式の 16 チャンネル(WXYZ, RSTUV, KLMNOPQ)360 度音場エンコード |
| Direct Effect | .direct |
Simulation モード専用、点音源とリスナー間の直接経路のみをシミュレート |
※ 注意: Ambisonics は Simulation モードで反射が有効な場合は無効化されます。Direct Effect も同様に反射有効時は無効化されます。
Enable Attenuation .attenuation 📉
距離減衰のグローバル有効化:
- Enable Attenuation: オン: 各音源で選択された Attenuation Mode に従って距離減衰を適用 / オフ: 距離減衰を無効化
Ambisonics Order .ambisonicsorder 🌐
Ambisonics 出力次数:
- Ambisonics Order: 出力バッファの Ambisonics 次数。次数が高いほど方向解像度が向上
Mapping Table .mappingtable 📋
Custom Setup でのスピーカー配置定義:
- Mapping Table DAT:
x/y/zの 3 列でスピーカー位置を指定する DAT のパス。1 行 1 スピーカーで、行数分のチャンネルが生成される(Custom Setup Output Format 専用)
Listener Object COMP .listenerobject 👂
リスナー頭部位置の COMP:
- Listener Object COMP: Geometry COMP や Camera COMP など、変換情報を持つ COMP のパス。この COMP の位置・向きが立体音響計算の基準となる
Source .source 🔢
音源シーケンスの定義:
- Source: オーディオ音源のシーケンスパラメータ。音源を追加することで複数音源の同時シミュレーションが可能(Simulation モードのみ)
Source Object COMP .source0object 📍
音源位置の 3D Object COMP:
- Object COMP: Geometry COMP や Camera COMP など、変換情報を持つ 3D Object COMP のパス。この COMP の位置から音が放射される
Enable Directivity .source0directivity 🎯
指向性パターンの有効化:
- Enable Directivity: オン: Dipole Weight / Dipole Power に基づく指向性パターンを適用 / オフ: 全方向に均等放射(オムニ指向)
Dipole Weight .source0dipoleweight ⚖️
ダイポール指向性のブレンド比率:
- Dipole Weight: 0 = 純粋なオムニ指向 / 1 = 純粋なダイポール / 0.5 = カーディオイド指向性パターン
Dipole Power .source0dipolepower 🔆
ダイポール指向性の鋭さ:
- Dipole Power: 値が高いほど指向性が狭くシャープになり、特定方向への集中度が増す
Attenuation Mode .source0attnmode 📐
各音源に適用する距離減衰モードの選択
| 項目 | 内部名 | 説明 |
|---|---|---|
| Inverse Distance | .inverse |
逆距離減衰関数で減衰を計算(Attenuation Inverse Power でべき指数を指定) |
| Custom Curve | .custom |
Attenuation Curve CHOP で指定したカスタム曲線で減衰を計算 |
※ 注意: Attenuation Mode は反射が有効な場合は既知の問題により無効化され、Steam Audio のデフォルト(power=1 の逆距離減衰)にフォールバックします。
Attenuation Inverse Power .source0invpower 🔢
逆距離減衰のべき指数:
- Attenuation Inverse Power: 例: power=2 のとき減衰量は
(1/distance)^2。値を大きくするほど距離による減衰が急峻になる
Attenuation Curve CHOP .source0chop 📈
カスタム減衰曲線 CHOP の参照:
- Attenuation Curve CHOP: 1 チャンネルの CHOP(縦軸: 減衰量 [0, 1] にクランプ / 横軸: 距離、サンプル単位)。距離は常に非負値で、サンプルがそのまま距離を表す
Meshes Page 🧱
Update Meshes .update 🔄
静的メッシュの自動更新:
- Update Meshes: オン: 静的メッシュに変更があるとシミュレーションが自動的に更新 / オフ: 手動 pulse でのみ更新
Update Meshes Pulse .updatepulse ⚡
静的メッシュ更新の手動トリガー:
- Update Meshes Pulse: パルスを送るとシミュレーション内の静的メッシュが変更されていれば即座に再構築される
Mesh .mesh 🔢
静的メッシュのシーケンス:
- Mesh: 音響シミュレーションに参加させる静的メッシュのシーケンスパラメータ
Mesh Objects/POPs/SOPs .mesh0object 🧩
メッシュジオメトリの参照:
- Mesh Objects / POPs / SOPs: Geometry COMP / POP / SOP を指定可能。COMP の場合は三角ポリゴン形式の SOP / POP を含む必要あり。ルート COMP の display flag は OFF でも収集されるが、子 COMP は display flag ON の場合のみシーンに追加される
Absorption .mesh0absorb 🔇
周波数帯域別の音響吸収率:
- Absorption (Low):
mesh0absorb1: 低周波(0 〜 800 Hz)での吸収率。0 = 全反射 / 1 = 完全吸収 - Absorption (Mid):
mesh0absorb2: 中周波(800 Hz 〜 8 kHz)での吸収率 - Absorption (High):
mesh0absorb3: 高周波(8 kHz 以上)での吸収率
Scattering .mesh0scatter 💫
反射時の音の散乱率:
- Scattering: 0 = 入射角と同じ角度で反射(純粋な鏡面反射) / 1 = 一様ランダムに反射(純粋な拡散反射)
Transmission .mesh0trans 🔊
周波数帯域別の音響透過率:
- Transmission (Low):
mesh0trans1: 低周波(0 〜 800 Hz)での透過率。0 = 透過しない / 1 = 完全透過 - Transmission (Mid):
mesh0trans2: 中周波(800 Hz 〜 8 kHz)での透過率 - Transmission (High):
mesh0trans3: 高周波(8 kHz 以上)での透過率
Simulation Page 🌊
Enable Air Absorption .airabsorb 💨
空気吸収のグローバル有効化:
- Enable Air Absorption: 音源からリスナーまでの距離を伝搬する間に失われる音のエネルギーをシミュレート
Enable Occlusion .occlusion 🚧
オクルージョン判定の有効化:
- Enable Occlusion: リスナーから音源への 1 本のレイが遮られていれば、その音源は遮蔽されているとみなして音量を減じる
Number of Surfaces .numsurfaces 🔢
透過計算で考慮する表面枚数:
- Number of Surfaces: リスナーから近い順に何枚の表面まで透過係数を考慮するか。多いほど精度が上がるが計算コストも増加
Enable Reflection .reflection 🪞
反射計算のグローバル有効化:
- Enable Reflection: オン: メッシュからの反射音を計算(残響感が増す) / オフ: 反射計算を行わない
Diffuse Samples .diffsamp 🎯
拡散反射のレイサンプル数:
- Diffuse Samples: 反射時に生成するレイ方向の数。多いほど拡散反射の精度が向上するが計算コストも増加
Duration .duration ⏳
インパルス応答の生成長:
- Duration: 生成されるインパルス応答(IR)の秒数。残響時間に対応
Ambisonics Order (Reflection) .refambixord 🌐
反射 IR の Ambisonics 次数:
- Ambisonics Order:
refambixord: 生成される反射インパルス応答の Ambisonics 次数
Number of Rays .numrays 🔆
リスナーから放射するレイ本数:
- Number of Rays: 反射シミュレーションのためにリスナーから放射するレイの本数。多いほど高精度・高負荷
Number of Threads .numthreads 🧵
反射シミュレーションのスレッド数:
- Number of Threads: 反射計算で使用する並列スレッド数。CPU コア数に応じて調整
Number of Bounces .numbounces 🏀
1 レイあたりの反射回数:
- Number of Bounces: 1 本のレイが表面で反射する最大回数。多いほど後期残響が豊かになる
Irradiance Min Distance .irmindist 📏
音響エネルギー計算の最小距離:
- Irradiance Min Distance: 音源とリスナー側の表面の距離がこの値より小さい場合は、この距離でクランプして近接時の発散を防ぐ
Reflection Bake Mode .bakemode 🍞
反射データのベイクモード選択(最適化用途)
| 項目 | 内部名 | 説明 |
|---|---|---|
| Off | .off |
ベイク無効。アクティブなベイクも無効化される |
| Manual | .manual |
ベイク有効、ただし開始には Bake Reflections のパルスが必要 |
| Automatic | .auto |
ベイクパラメータに変更があると自動でベイク開始 |
※ 注意: ベイクは均一間隔のプローブをメッシュ「フロア」上の固定高さに配置します。シーンにジオメトリが無い / spawn box にジオメトリが含まれない / 全プローブが spawn box 外に出る / 全ジオメトリが X-Y or Y-Z 平面 のいずれかでプローブは生成されません。
Bake Reflections .bake ⚡
ベイク即時開始のトリガー:
- Bake Reflections: パルスでベイクを即時開始。完了後は反射が自動的にベイクデータを使用。進捗は Info CHOP の
bake_completeチャンネルで監視可能
Baked Data Variation .variation 🔁
ベイク時にどのオブジェクトを固定位置とみなすかの選択
| 項目 | 内部名 | 説明 |
|---|---|---|
| Static Listener | .listener |
リスナーが固定、音源が動く想定。各プローブは音源がプローブ位置にあるときの反射を計算 |
| Static Source | .source |
音源が固定、リスナーが動く想定。各プローブはリスナーがプローブ位置にあるときの反射を計算 |
※ 注意: 選択した固定オブジェクトの位置が変わった場合は再ベイクが必要です。位置がズレたまま使うと反射計算が不正確になります。
Probes Distance .probedist 📐
プローブ間の間隔:
- Probes Distance: ベイク時に生成するプローブ同士の間隔。狭いほど高解像度・高メモリ消費
Y-Offset from Surface .yoffset 📏
表面からのプローブ生成高さ:
- Y-Offset from Surface: プローブを表面からどれくらいの高さに生成するか(フロアやテレインの上に配置するためのオフセット)
Size of Spawn Box .size 📦
プローブ生成範囲(Spawn Box)のサイズ:
- Size of Spawn Box (X):
sizex: Spawn Box の X 軸方向サイズ - Size of Spawn Box (Y):
sizey: Spawn Box の Y 軸方向サイズ - Size of Spawn Box (Z):
sizez: Spawn Box の Z 軸方向サイズ
Origin of Spawn Box .origin 🎯
Spawn Box 中心位置:
- Origin of Spawn Box (X):
originx: Spawn Box 中心の X 座標 - Origin of Spawn Box (Y):
originy: Spawn Box 中心の Y 座標 - Origin of Spawn Box (Z):
originz: Spawn Box 中心の Z 座標
Distance from Listener .lstnrdist 📍
ベイクデータ保持距離の上限:
- Distance from Listener: リスナーからこの距離以内のプローブのベイクデータを保持。これより遠いプローブは破棄してメモリを節約
Save Duration .savedur 💾
プローブごとの IR 保存秒数:
- Save Duration: プローブごとに保存される IR の秒数。長いほど後期残響を保持できるがメモリ消費が増える
Batch Size .batchsize 📚
ベイクのバッチサイズ:
- Batch Size: 1 バッチで並列にベイクするプローブの数。大きいほど高速だが GPU / CPU 負荷が増す
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: VR / 360 度コンテンツ向け Ambisonics 立体音響 🎧
Audio File In CHOP → Audio Render CHOP (Ambisonics) → Audio Device Out CHOP / Ambisonics モニター
- Audio File In CHOP で素材音源を読み込む
- Audio Render CHOP の Output Format を「Ambisonics」、Ambisonics Order を 3 に設定
- Listener Object COMP に VR カメラの Camera COMP を割当
- 音源側に Object COMP を割当て、Steam Audio が 360 度方向の音場を 16 チャンネルでエンコード
- Ambisonics デコーダ(または対応プレイヤー)でリスナー回転に追従した立体音響を再生
Example 2: ライブインスタレーションのバイノーラル空間音響 🎬
Audio File In CHOP × N → Audio Render CHOP (Simulation, Binaural) → Audio Device Out CHOP
- 複数の Audio File In CHOP で個別の音源素材を準備
- Audio Render CHOP の Mode を「Simulation」、Output Format を「Binaural」に設定
- 各音源シーケンスエントリの Object COMP に空間内の音源位置を割り当て
- Listener Object COMP に来場者頭部位置のトラッカー COMP を接続
- ヘッドフォン経由で来場者の動きに追従するバイノーラル空間音響を提供
Example 3: 建築音響シミュレーション(吸収・反射・透過の評価) 🏛️
Audio File In CHOP → Audio Render CHOP (Simulation + Reflection + Mesh) → Audio Device Out CHOP
- 建築モデルの SOP を Audio Render CHOP の Mesh に登録
- 各 Mesh の Absorption / Scattering / Transmission を素材ごとに設定(壁面・床・天井で別の係数)
- Mode を「Simulation」、Enable Reflection をオン、Number of Bounces / Diffuse Samples を調整
- Listener / Source COMP を空間内の任意位置に配置
- 残響特性が建築の物理特性を反映した立体音響として出力される
Example 4: ベイクによる軽量化リアルタイム反射シミュレーション ⚡
Static Mesh + Listener → Audio Render CHOP (Reflection Bake = Auto, Static Listener) → 高速ランタイム反射計算
- Reflection Bake Mode を「Automatic」、Baked Data Variation を「Static Listener」に設定
- Listener Object COMP の位置を固定、Probes Distance / Y-Offset / Size of Spawn Box を空間規模に合わせて調整
- ベイク完了を Info CHOP の
bake_completeチャンネルで確認 - ランタイムでは音源が動いてもベイク済みプローブのデータを補間使用するため、低 CPU 負荷で反射音をレンダリング
関連オペレータ 🔗
類似機能OP 🔍
- Audio Binaural CHOP — より単純な HRTF ベースのバイノーラルレンダリングに特化(Steam Audio の物理シミュレーションは持たない)
組み合わせ推奨OP 🔄
- Audio File In CHOP — 音源素材を Audio Render の入力に供給
- Audio Device Out CHOP — Audio Render の出力をオーディオインターフェースに送出
- Geometry COMP — Listener / Source / Mesh の各 Object COMP として位置・形状を提供
- Camera COMP — VR カメラを Listener Object COMP に割り当て、視点に追従する立体音響を実現
- Info CHOP — ベイク進捗(bake_complete)やシミュレーション状態を取得
前処理・後処理CHOP 🎯
- 前処理: Audio File In CHOP、Audio Device In CHOP、Audio Filter CHOP、Audio Dynamics CHOP
- 後処理: Audio Device Out CHOP、Audio File Out CHOP、Audio Filter CHOP、Math CHOP
Info CHOP情報 📊
Audio Render CHOPは Info CHOP による詳細情報取得に対応しています。
CHOP固有情報 🎚️
start: CHOPインターバルの開始(サンプル単位)length: CHOPのサンプル数sample_rate: フレーム毎秒のサンプルレートnum_channels: CHOPのチャンネル数time_slice: タイムスライス有効時は1、無効時は0export_sernum: Export接続の更新回数bake_complete: ベイク完了状態(1: 完了 / 0: 未完了 or 進行中)
汎用オペレータ情報 🔄
total_cooks: プロセス開始からのクック回数cook_time: 最後のクック時間(ミリ秒)cook_frame: 最後にクックされたフレーム番号warnings: 警告数errors: エラー数
トラブルシューティング ⚠️
よくある問題と解決策 🔧
❌ Problem: Ambisonics / Direct Effect が無効化されて意図した出力が出ない
✅ Solution:
- Mode が「Simulation」のとき、Enable Reflection をオンにすると Ambisonics と Direct Effect が自動で無効化される(公式仕様)
- Ambisonics 出力を維持したい場合は Enable Reflection をオフにする
- または Mode を「Simple Positional」に切替えて反射シミュレーションを使わずに Ambisonics を有効化
❌ Problem: 音源位置が動いても定位が変わらない / リスナーに追従しない
✅ Solution:
- Listener Object COMP / Source Object COMP に変換情報を持つ COMP(Geometry / Camera 等)が割り当たっているか確認
- 対象 COMP の position / rotation が実際にフレーム毎に更新されているか確認(静的なら定位も静的)
- Active パラメータがオンになっていることを確認
❌ Problem: Mesh の反射が効いていない / 残響感が出ない
✅ Solution:
- Enable Reflection がオンか確認
- Mesh Objects/POPs/SOPs に三角ポリゴン形式のジオメトリが渡っているか確認(COMP の display flag や子 COMP の状態に注意)
- Number of Bounces / Diffuse Samples / Number of Rays が極端に小さくないか確認(精度が足りないと反射音がほぼ出ない)
- Absorption が 1 に近すぎると吸収されすぎて反射が消えるので 0.1〜0.5 程度に下げる
❌ Problem: ベイクが走らない / プローブが生成されない
✅ Solution:
- シーンにジオメトリが存在しているか確認(空シーンではプローブが作られない)
- Spawn Box(Origin / Size)の範囲がジオメトリを含んでいるか確認
- ジオメトリが完全な X-Y / Y-Z 平面のみだとプローブが生成されない仕様(傾きや厚みのあるメッシュにする)
- Reflection Bake Mode を「Manual」にして Bake Reflections のパルスで明示的にトリガー
❌ Problem: リアルタイム再生が重い / CPU 使用率が高い
✅ Solution:
- Number of Rays / Diffuse Samples / Number of Bounces を下げて精度と負荷のバランスを取る
- Number of Threads を CPU コア数に合わせて適正化
- Reflection Bake Mode を「Automatic」にしてランタイム反射計算をベイクデータに置換
- 後段の Math CHOP で不要なチャンネルを Scope で除外
参考資料 📚
その他 🔗
- TouchDesigner Wiki — CHOP 概要
- TouchDesigner Wiki — Category:CHOPs
- TouchDesigner Wiki ホーム
- TouchDesigner 公式 Forum
- Facebook — TouchDesigner Help Group

