
概要 📖 – Oculus Spatializer による 3D 空間音響
Oculus Audio CHOPは、音源と頭部の相対位置に基づいて入力音声を空間化し、Oculus Spatializer で 3D 音響にレンダリングする CHOPです。Head / Source の COMP transform、距離減衰モデル、Box Room の反射・残響を 1 オペレータで合成し、VR / AR 向けの没入型サウンドを構築できます。
主な用途 🎯
- VR / AR 体験向けのリスナー追従型 3D 空間音響レンダリング
- 音源と頭部 (Head) の相対位置に基づく距離減衰・パンニング
- Box Room モデルによる室内反響 (反射・残響) のシミュレーション
- 音源コンテンツに応じた Band Hint (Wide / Narrow) によるスペクトル品質改善
- Fixed / Inverse Square / None の減衰モード切替によるサウンドデザイン制御
データフロー 🔄
入力: モノラル音声チャンネル
↓
Head Object COMP / Source Object COMP の transform 取得
↓
距離・方向計算(Minimum / Maximum Range / Diameter)
↓
Attenuation 適用(None / Fixed / Inverse Square)
↓
Box Room 反射・反響合成 (任意)
↓
出力: バイノーラル化された 2ch 空間音響
初心者の方は、以下日本語書籍も手元にあると安心です。

実際の案件事例まで踏み込んで紹介されていて、効率よくスキルアップするなら必携の二冊です!
パラメータ解説 ⚙️
Setup Page 📋
Active .active ⚡
空間音響レンダリングの実行可否
| 項目 | 内部名 | 説明 |
|---|---|---|
| Active | .active |
オンにすると入力音声に対して空間化処理を実行する。オフでは空間化処理は停止する。 |
Head / Source Object .headsourceobject 🧭
リスナー (Head) と音源 (Source) の transform を保持する COMP パス
| 項目 | 内部名 | 説明 |
|---|---|---|
| Head Object COMP | .headobject |
リスナー(頭部)の transform を表す COMP。Geometry COMP / Camera COMP など transform を持つ COMP を指定する。 |
| Source Object COMP | .sourceobject |
音源の transform を表す COMP。Geometry COMP / Camera COMP など transform を持つ COMP を指定する。 |
Range / Diameter .rangediameter 📏
音源の距離減衰範囲と仮想直径
| 項目 | 内部名 | 説明 |
|---|---|---|
| Minimum Range | .minrange |
音源の最小減衰範囲(メートル単位)。 |
| Maximum Range | .maxrange |
音源の最大減衰範囲(メートル単位)。 |
| Diameter | .diameter |
音源の仮想直径。デフォルトは 0(音源を空間上の点として扱う)。 |
Band Hint .bandhint 🎚️
音源コンテンツの帯域特性に応じたヒント設定(音質改善用メニュー)
| 項目 | 内部名 | 説明 |
|---|---|---|
| None | .none |
ヒントを与えない(デフォルト) |
| Wide Band | .wide |
音楽・声・ノイズなど広帯域なスペクトルを持つ音源向け。アーティファクトをマスクして全体音質を改善 |
| Narrow Band | .narrow |
正弦波・ホイッスルなど狭帯域でスペクトル成分が乏しい音源向け |
Reflections and Reverb .reflectrevert 🌊
反射・残響処理の実行可否
| 項目 | 内部名 | 説明 |
|---|---|---|
| Reflections and Reverb | .reflectrevert |
オンにすると音響の反射・残響処理が有効になる。 |
Attenuation .attenuation 📉
音源とリスナー間の減衰計算方式メニュー
| 項目 | 内部名 | 説明 |
|---|---|---|
| None | .none |
音が減衰しない |
| Fixed | .fixed |
固定値で減衰する。固定値は Attenuation Scale で指定 |
| Inverse Square | .inversesequare |
距離の逆二乗に基づいて減衰する(物理的な減衰モデル) |
Attenuation Scale .attenuationscale 🎚️
Fixed Attenuation モード時の減衰値
| 項目 | 内部名 | 説明 |
|---|---|---|
| Attenuation Scale | .attenuationscale |
Attenuation が Fixed の場合に使われる固定減衰値。 |
Box Room Mode .boxroommode 📦
Box Room による残響シミュレーションの有効化
| 項目 | 内部名 | 説明 |
|---|---|---|
| Box Room Mode | .boxroommode |
オンにすると Box Room モデルで残響を計算する。 |
Room Size .roomsize 📐
Box Room の各軸サイズ:
- Room Size X: Box Room の X 軸サイズ(
roomsizex) - Room Size Y: Box Room の Y 軸サイズ(
roomsizey) - Room Size Z: Box Room の Z 軸サイズ(
roomsizez)
Room Reflect (6 面) .roomreflect 🪞
Box Room 各面の反射率(0〜1):
- Room Left Reflect: Box Room の左面の反射率(
roomleftrelfect) - Room Right Reflect: Box Room の右面の反射率(
roomrightrelfect) - Room Bottom Reflect: Box Room の底面の反射率(
roombottomrelfect) - Room Top Reflect: Box Room の天面の反射率(
roomtoprelfect) - Room Front Reflect: Box Room の前面の反射率(
roomfrontrelfect) - Room Back Reflect: Box Room の背面の反射率(
roombackrelfect)
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 シーン内での移動音源の空間化 🎧
Audio File In CHOP → Oculus Audio CHOP (Head=cam1, Source=geo1, Attenuation=Inverse Square) → Audio Device Out CHOP
- 音源ファイルを Audio File In CHOP で読み込む
- Head Object COMP に VR カメラの Camera COMP(例:
cam1)を指定 - Source Object COMP に移動する音源オブジェクトの Geometry COMP(例:
geo1)を指定 - Attenuation を「Inverse Square」、Minimum Range / Maximum Range を VR シーンのスケールに合わせて設定
- 出力をヘッドホン向けに Audio Device Out CHOP に接続
Example 2: Box Room による室内反響シミュレーション 📦
Audio File In CHOP → Oculus Audio CHOP (Reflections=On, Box Room=On, Room Size + 6 面 Reflect) → Audio Device Out CHOP
- Reflections and Reverb をオン、Box Room Mode をオンに設定
- Room Size X / Y / Z にシーンの室内サイズ(メートル単位)を入力
- Room Left / Right / Bottom / Top / Front / Back Reflect をそれぞれ 0〜1 で設定(壁が硬いほど大きく)
- ライブ音源やカメラを動かして室内反響の変化を確認
Example 3: Band Hint による音質改善 🎚️
Audio File In CHOP (Voice / Sine Tone) → Oculus Audio CHOP (Band Hint = Wide / Narrow) → Audio Device Out CHOP
- 音楽・声・ノイズ等の広帯域音源では Band Hint を「Wide Band」に設定
- 正弦波・ホイッスル等の狭帯域音源では Band Hint を「Narrow Band」に設定
- Band Hint なし(None)と切り替えて空間化アーティファクトの有無を比較
関連オペレータ 🔗
類似機能OP 🔍
- Audio Render CHOP — 3D 空間内の音源とリスナーから立体音響をレンダリング(HRTF 含む包括的な空間音響処理)
- Audio Binaural CHOP — マルチチャンネル音声を HRTF でバイノーラル化
組み合わせ推奨OP 🔄
- Audio File In CHOP — 音源ファイルを入力ソースとして供給
- Audio Device In CHOP — ライブマイク入力を音源として供給
- Audio Device Out CHOP — 空間化された出力をヘッドホンに送出する後段
- Math CHOP — 出力ゲイン調整・レベル正規化
- Filter CHOP — 前段でノイズ除去・後段でスムージング
前処理・後処理CHOP 🎯
- 前処理: Audio File In CHOP、Audio Device In CHOP、Math CHOP、Filter CHOP、Audio Movie CHOP
- 後処理: Audio Device Out CHOP、Math CHOP、Filter CHOP、Limit CHOP、Audio Stream Out CHOP
Info CHOP情報 📊
Oculus Audio CHOPは Info CHOP による詳細情報取得に対応しています。
CHOP固有情報 🎚️
start: CHOPインターバルの開始(サンプル単位)length: CHOPのサンプル数sample_rate: フレーム毎秒のサンプルレートnum_channels: CHOPのチャンネル数time_slice: タイムスライス有効時は1、無効時は0export_sernum: Export接続の更新回数
汎用オペレータ情報 🔄
total_cooks: プロセス開始からのクック回数cook_time: 最後のクック時間(ミリ秒)cook_frame: 最後にクックされたフレーム番号warnings: 警告数errors: エラー数
トラブルシューティング ⚠️
よくある問題と解決策 🔧
❌ Problem: 空間化が反映されない / 音源の位置が変わらない
✅ Solution:
- Active パラメータがオンになっているか確認(オフでは空間化処理が停止する)
- Head Object COMP と Source Object COMP の両方に transform を持つ COMP(Geometry / Camera 等)が指定されているか確認
- Source Object COMP の position が実際にシーン内で更新されているか上流の Math CHOP や CHOP Viewer で検証
❌ Problem: 音量が想定通り減衰しない
✅ Solution:
- Attenuation が
Noneになっていないか確認(FixedまたはInverse Squareを選択) - Minimum Range / Maximum Range が VR シーンのスケール(メートル単位)と整合しているか確認
- Fixed モード時は Attenuation Scale の値を調整して所望の減衰量に合わせる
❌ Problem: 反響・残響が出ない
✅ Solution:
- Reflections and Reverb がオンになっているか確認
- Box Room モードを使う場合は Box Room Mode がオンになっているか確認
- Room Size X / Y / Z と 6 面の Reflect 値が
0ではなく正のサイズ・反射率になっているか確認
❌ Problem: 音質に粗さ・アーティファクトが残る
✅ Solution:
- 音源コンテンツに合わせて Band Hint を
Wide Band(音楽・声)またはNarrow Band(正弦波・ホイッスル)に設定 - 前段で Filter CHOP を入れて音源の高周波ノイズを軽減
- Diameter を
0(点音源)から少し大きめに設定して定位を緩める
参考資料 📚
その他 🔗
- TouchDesigner Wiki — CHOP 概要
- TouchDesigner Wiki — Category:CHOPs
- TouchDesigner Wiki ホーム
- TouchDesigner 公式 Forum
- Facebook — TouchDesigner Help Group

