AudioListener

AudioListener インターフェースは、特定の人物が聞いている音場の位置と方向を表し、それが音声空間処理に使用されます。すべての PannerNode は、 BaseAudioContext.listener 属性に格納されている AudioListener に関連して空間化されます。

注意点としては、リスナーは 1 つのコンテキストにつき 1 つしかなく、 AudioNode ではないことです。

AudioListener の位置、上方向、前方向のベクトルを、上方向と前方向のベクトルが互いに90°になるように表示したものです。

プロパティ

メモ: position、forward、up の値の設定と取得は異なる構文で行われます。取得は例えば AudioListener.positionX にアクセスすることで行われ、同じプロパティを設定するには AudioListener.positionX.value を使用することで行われます。仕様書の IDL でこれらの値は読み取り専用とマークされていないのはこのためです。

AudioListener.positionX (en-US)

右直交座標系におけるリスナーの水平位置を表します。既定値は 0 です。

AudioListener.positionY (en-US)

右直交座標系におけるリスナーの垂直位置を表します。既定値は 0 です。

AudioListener.positionZ (en-US)

右直交座標系におけるリスナーの縦方向(前後)の位置を表します。既定値は 0 です。

AudioListener.forwardX (en-US)

位置(positionX, positionY, positionZ)の値と同じ直交座標系におけるリスナーの前方向の水平位置を表します。 順方向と上方向の値は互いに線形的に独立しています。既定値は 0 です。

AudioListener.forwardY (en-US)

位置(positionX, positionY, positionZ)の値と同じ直交座標系におけるリスナーの前方方向の垂直位置を表します。 順方向と上方向の値は互いに線形的に独立しています。既定値は 0 です。

AudioListener.forwardZ (en-US)

位置(positionX, positionY, positionZ)の値と同じ直交座標系でのリスナーの前方向の前後(前後)の位置を表します。 順方向と上方向の値は互いに線形的に独立しています。既定値は -1 です。

AudioListener.upX (en-US)

位置(positionX, positionY, positionZ)と同じ直交座標系でのリスナーの前方向の前後(前後)の位置を表します。 順方向と上方向の値は互いに線形的に独立しています。既定値は -1 です。

AudioListener.upY (en-US)

位置(positionX, positionY, positionZ)の値と同じ直交座標系における、リスナーの頭のてっぺんの垂直位置を表します。 順方向と上方向の値は互いに線形的に独立しています。 デフォルトは1です。

AudioListener.upZ (en-US)

位置(positionX, positionY, positionZ)の値と同じ直交座標系における、リスナーの頭の上端の縦方向(前後)の位置を表します。 順方向と上方向の値は互いに線形的に独立しています。既定値は 0 です。

メソッド

AudioListener.setOrientation() (en-US) 非推奨

リスナーの向きを設定します。

AudioListener.setPosition() (en-US) 非推奨

リスナーの位置を設定します。

メモ: これらのメソッドは非推奨ですが、現在、 Firefox、Internet Explorer、Safari で方向と位置を設定するための唯一の方法となっています。

非推奨の機能

AudioListener.dopplerFactor 非推奨

double 値で、ドップラー効果をレンダリングするときに使用するピッチシフトの量を表します。

AudioListener.speedOfSound 非推奨

double 値で、音の速度をメートル毎秒で表します。

この仕様の以前のバージョンでは、 dopplerFactor および speedOfSound プロパティと setPosition() メソッドを使用して、ダウンストリームに接続された AudioBufferSourceNode に適用されるドップラー効果を制御できました — これらは PannerNodeAudioListener の相対速度に応じて上下にピッチが変わります。 これらの機能には多くの問題がありました。

  • AudioBufferSourceNode のみがピッチを上下させることができ、他のソースノードはできませんでした。
  • AudioBufferSourceNode が複数の PannerNode に接続されている場合に採用する動作が不明確でした。
  • パンナーとリスナーのベロシティは AudioParam ではなかったため、ピッチの変更はスムーズに適用できず、オーディオグリッチが発生しました。

これらの問題のため、これらのプロパティとメソッドは削除されました。

setOrientation() および setPosition() メソッドは、それらのプロパティ値を同等に設定することで置き換えられました。 例えば、 setPosition(x, y, z) は、それぞれ positionX.value, positionY.value および positionZ.value を設定することによって実現できます。

サンプルコードは BaseAudioContext.createPanner() を参照してください。

仕様書

Specification
Web Audio API
# AudioListener

ブラウザーの互換性

BCD tables only load in the browser

関連情報