kenkovlog

けんこふたんっオフィシャユブヨグッ
アンッ!アンッ!アンッ!アンッ!

パンナーノードの使い方

空間の中の聴き手 ( AudioListener ) と音源 ( AudioPannerNode ) の位置関係と向きをシミュレートするための ノードが パンナーノード です。これにより、聴き手と音源の位置を考慮した空間音響の効果をとりいれる ことができるようになります。

いくつかの重要な点について

聴き手の初期位置
(0, 0, 0) で正立して画面奥 ( z 軸のマイナス方向 ) を向いて立っています。 context.listener.setPosition を使えば位置を設定することができます。
向きの指定方法
長さ 1 の方向ベクトルで指定します。

パンナーノードの作成

パンナーノードの作成は

// パンナーノードの作成
var panner = context.createPanner();
// 原点 (0, 0, 0) に音源を置く
panner.setPosition(0, 0, 0);

でできます。この音源は無指向性です。 指向性にするにはサウンドコーンの設定をしなければなりません。

指向性の設定

音源に指向性を設定するには

  • panner.setOrientation(x, y, z)
  • panner.coneInnerAngle
  • panner.coneOuterAngle
  • panner.coneGain

を設定します。必ず coneInnerAngle と coneOuterAngle を設定しましょう。 setOrientation の設定だけでは無指向性のままです。

サウンドコーンの解説は http://msdn.microsoft.com/ja-jp/library/bb147394(v=vs.85).aspx あたりがいいかもっ

// 音源の向き
panner.setOrientation(0, 0, -1);
// 内側のアングル
panner.coneInnerAngle = 5;
// 外側のアングル
panner.coneOuterAngle = 10;
panner.coneGain = 1;
panner.coneOuterGain = 0.9;

setOrientation を setInterval を使って定期的に呼び出すことで、音源を移動させてドップラー効果を得ることもできます。

けんこふたん