From 33058f2b292b3a581333bdfb21b8f671898c5060 Mon Sep 17 00:00:00 2001 From: Peter Bengtsson Date: Tue, 8 Dec 2020 14:40:17 -0500 Subject: initial commit --- .../web/api/pannernode/coneinnerangle/index.html | 65 +++++++++ .../web/api/pannernode/coneouterangle/index.html | 66 +++++++++ files/ja/web/api/pannernode/index.html | 147 +++++++++++++++++++++ .../ja/web/api/pannernode/orientationx/index.html | 144 ++++++++++++++++++++ 4 files changed, 422 insertions(+) create mode 100644 files/ja/web/api/pannernode/coneinnerangle/index.html create mode 100644 files/ja/web/api/pannernode/coneouterangle/index.html create mode 100644 files/ja/web/api/pannernode/index.html create mode 100644 files/ja/web/api/pannernode/orientationx/index.html (limited to 'files/ja/web/api/pannernode') diff --git a/files/ja/web/api/pannernode/coneinnerangle/index.html b/files/ja/web/api/pannernode/coneinnerangle/index.html new file mode 100644 index 0000000000..f5b4f3216d --- /dev/null +++ b/files/ja/web/api/pannernode/coneinnerangle/index.html @@ -0,0 +1,65 @@ +--- +title: PannerNode.coneInnerAngle +slug: Web/API/PannerNode/coneInnerAngle +tags: + - API + - PannerNode + - Property + - Reference + - Web Audio API + - coneInnerAngle +translation_of: Web/API/PannerNode/coneInnerAngle +--- +

{{ APIRef("Web Audio API") }}

+ +
+

{{ domxref("PannerNode") }} インターフェイスの coneInnerAngle プロパティは、音量が低減しない範囲を内側にもつコーンの角度が、実数値 (倍精度) で参照できます。

+ +

coneInnerAngle プロパティのデフォルトの値は 360 で、無指向性の音源に適しています。

+
+ +

構文

+ +
var audioCtx = new AudioContext();
+var panner = audioCtx.createPanner();
+panner.coneInnerAngle = 360;
+ +

+ +

倍精度浮動小数点数。

+ +

+ +

{{page("/ja/docs/Web/API/PannerNode/orientationX","Example")}}

+ +

仕様

+ + + + + + + + + + + + + + +
仕様書策定状況コメント
{{SpecName('Web Audio API', '#dom-pannernode-coneinnerangle', 'coneInnerAngle')}}{{Spec2('Web Audio API')}}
+ +

ブラウザー実装状況

+ +
+ + +

{{Compat("api.PannerNode.coneInnerAngle")}}

+
+ +

関連情報

+ + diff --git a/files/ja/web/api/pannernode/coneouterangle/index.html b/files/ja/web/api/pannernode/coneouterangle/index.html new file mode 100644 index 0000000000..80997c1dcd --- /dev/null +++ b/files/ja/web/api/pannernode/coneouterangle/index.html @@ -0,0 +1,66 @@ +--- +title: PannerNode.coneOuterAngle +slug: Web/API/PannerNode/coneOuterAngle +tags: + - API + - PannerNode + - Property + - Reference + - Référence(2) + - Web Audio API + - coneOuterAngle +translation_of: Web/API/PannerNode/coneOuterAngle +--- +

{{ APIRef("Web Audio API") }}

+ +

{{ domxref("PannerNode") }} インターフェイスの coneOuterAngle プロパティは、音量が一定値まで低減される範囲を外側に持つコーンの角度が、実数値 (倍精度) で参照できます。低減は  coneOuterGain 属性の値に従います。

+ +
+

coneOuterAngle プロパティのデフォルトの値は 0 です。

+
+ +

構文

+ +
var audioCtx = new AudioContext();
+var panner = audioCtx.createPanner();
+panner.coneOuterAngle = 0;
+ +

+ +

A double.

+ +

+ +

{{page("/ja/docs/Web/API/PannerNode/orientationX","Example")}}

+ +

仕様

+ + + + + + + + + + + + + + +
仕様書策定状況コメント
{{SpecName('Web Audio API', '#dom-pannernode-coneouterangle', 'coneOuterAngle')}}{{Spec2('Web Audio API')}}
+ +

ブラウザー実装状況

+ +
+ + +

{{Compat("api.PannerNode.coneOuterAngle")}}

+
+ +

関連情報

+ + diff --git a/files/ja/web/api/pannernode/index.html b/files/ja/web/api/pannernode/index.html new file mode 100644 index 0000000000..7c3502a6ed --- /dev/null +++ b/files/ja/web/api/pannernode/index.html @@ -0,0 +1,147 @@ +--- +title: PannerNode +slug: Web/API/PannerNode +tags: + - API + - Interface + - PannerNode + - Reference + - Web Audio API +translation_of: Web/API/PannerNode +--- +

{{ APIRef("Web Audio API") }}

+ +
+

PannerNode は音源の空間上の位置と振る舞いを表現したインターフェイスで、{{domxref("AudioNode")}} の一種です。右手直交座標系に従って位置を表し、音源の動きは速度ベクトルと、向きを表すサウンドコーンを利用して表現します。

+
+ +

PannerNode は必ず 1 つの入力と、1 つの出力を持ちます。入力はモノラルでもステレオでも構いませんが、出力は必ずステレオとなります。つまりパンニングを行うには最低でも 2 チャンネルの音声チャンネルを必要です。

+ +

The PannerNode brings a spatial position and velocity and a directionality for a given signal.

+ + + + + + + + + + + + + + + + + + + + + + + + +
入力数1
出力数1
チャンネルの数え方"clamped-max"
チャンネル数2
チャンネルの意味"speakers"
+ +

コンストラクター

+ +
+
{{domxref("PannerNode.PannerNode")}}
+
新しい PannerNode オブジェクトを作成します。
+
+ +

属性

+ +

親クラスである {{domxref("AudioNode")}} の属性を継承しています。

+ +
+

向きと位置の設定と取得は異なる方法で行います。これは、これらの値が {{domxref("AudioParam")}} として保存されてるためです。値の取得は  PannerNode.positionX のように行えますが、同じ属性に対して値を設定するには PannerNode.positionX.value のように行います。そのため、これらの値は、WebIDL にあるように、読み取り専用とは定義されていません。

+
+ +
+
{{domxref("PannerNode.coneInnerAngle")}}
+
音量が低減しない範囲を内側にもつコーンの角度が、実数値 (倍精度) で参照できます。
+
{{domxref("PannerNode.coneOuterAngle")}}
+
音量が一定値まで低減される範囲を外側に持つコーンの角度が、実数値 (倍精度) で参照できます。低減は  coneOuterGain 属性の値に従います。
+
{{domxref("PannerNode.coneOuterGain")}}
+
coneOuterAngle の外で行われる音量の低減量を定義します。標準値は 0 で、これは音が聞こえなくなることを表します。
+
{{domxref("PannerNode.distanceModel")}}
+
音量の低減計算に用いるアルゴリズムを定めます。アルゴリズムは定められたものの中から選択します。とりうる値は "linear""inverse""exponential"で、デフォルト値は "inverse"です。
+
{{domxref("PannerNode.maxDistance")}}
+
音源と聴取者の最大距離を定義します。これを超えた場合、音量の低減計算がなされません。
+
{{domxref("PannerNode.orientationX")}}
+
右手直交座標系における音源の向きを表すベクトルのうち、水平方向の値です。{{domxref("AudioParam")}} は直接変更できないため、値の変更は{{domxref("AudioParam.value", "value")}} 属性を通して行います。初期値は 1 となっています。
+
{{domxref("PannerNode.orientationY")}}
+
右手直交座標系における音源の向きを表すベクトルのうち、垂直方向の値です。{{domxref("AudioParam")}} は直接変更できないため、値の変更は{{domxref("AudioParam.value", "value")}} 属性を通して行います。初期値は 0 となっています。
+
{{domxref("PannerNode.orientationZ")}}
+
右手直交座標系における音源の向きを表すベクトルのうち、奥行き(前後)方向の値です{{domxref("AudioParam")}} は直接変更できないため、値の変更は{{domxref("AudioParam.value", "value")}} 属性を通して行います。初期値は 0 となっています。
+
{{domxref("PannerNode.panningModel")}}
+
+

立体音響計算を行うアルゴリズムを定めます。アルゴリズムは定められたものの中から選びます。

+
+
{{domxref("PannerNode.positionX")}}
+
右手直交座標系における音源の位置を表すベクトルのうち、水平方向の値です{{domxref("AudioParam")}} は直接変更できないため、値の変更は{{domxref("AudioParam.value", "value")}} 属性を通して行います。初期値は 0 となっています。
+
{{domxref("PannerNode.positionY")}}
+
右手直交座標系における音源の位置を表すベクトルのうち、垂直方向の値です{{domxref("AudioParam")}} は直接変更できないため、値の変更は{{domxref("AudioParam.value", "value")}} 属性を通して行います。初期値は 0 となっています。
+
{{domxref("PannerNode.positionZ")}}
+
右手直交座標系における音源の位置を表すベクトルのうち、奥行き(前後)方向の値です{{domxref("AudioParam")}} は直接変更できないため、値の変更は{{domxref("AudioParam.value", "value")}} 属性を通して行います。初期値は 0 となっています。
+
{{domxref("PannerNode.refDistance")}}
+
音量の低減計算に用いる基準距離を表します。音源と聴取者との距離がこれを超えた場合、rolloffFactordistanceModel に基づいて音量の低減が起きます。
+
{{domxref("PannerNode.rolloffFactor")}}
+
音源が聴取者から離れていく際に起きる音量の低減量を定めます。この値は、全ての距離モデルで利用されます。
+
+ +

メソッド

+ +

親クラスである {{domxref("AudioNode")}} のメソッドを継承しています。

+ +
+
{{domxref("PannerNode.setPosition()")}}
+
聴取者に対する音源の相対位置を設定します。聴取者の位置は {{domxref("AudioContext.listener")}}  で参照される{{domxref("AudioListener")}} オブジェクトで表されています。
+
+ +
+
{{domxref("PannerNode.setOrientation()")}}
+
音源が再生されている方向を設定します。
+
+ +
+
{{domxref("PannerNode.setVelocity()")}} {{obsolete_inline}}
+
音源の速度を表したベクトルです。移動する速さと方向を表しています。以前の仕様では下流に接続された{{domxref("AudioBufferSourceNode")}} のピッチを上げ下げするために、{{domxref("PannerNode")}} は速度を表す属性を持っていました。この機能は明瞭に定義されておらず、問題も多かったため、現在の仕様からは削除されています。
+
+ +

+ +

{{page("/ja/docs/Web/API/AudioContext.createPanner","Example")}}

+ +

仕様

+ + + + + + + + + + + + + + +
仕様状況コメント
{{SpecName('Web Audio API', '#the-pannernode-interface', 'PannerNode')}}{{Spec2('Web Audio API')}}
+ +

ブラウザー実装状況

+ +
+ + +

{{Compat("api.PannerNode")}}

+
+ +

関連情報

+ + diff --git a/files/ja/web/api/pannernode/orientationx/index.html b/files/ja/web/api/pannernode/orientationx/index.html new file mode 100644 index 0000000000..defdbe0a13 --- /dev/null +++ b/files/ja/web/api/pannernode/orientationx/index.html @@ -0,0 +1,144 @@ +--- +title: PannerNode.orientationX +slug: Web/API/PannerNode/orientationX +tags: + - PannerNode + - Property + - Reference + - Web Audio API + - orientationX +translation_of: Web/API/PannerNode/orientationX +--- +

{{ APIRef("Web Audio API") }}

+ +
+

{{ domxref("PannerNode") }} インターフェイスの orientationX プロパティは、オーディオソースが向いている方向の X (水平) 成分を 3D 直交座標空間で表示します。

+ +

完全ベクトルは ({{domxref("PannerNode.positionX", "positionX")}}、{{domxref("PannerNode.positionY", "positionY")}}、{{domxref("PannerNode.positionZ", "positionZ")}}) として与えられたオーディオソースの位置と、({{domxref("PannerNode.orientationX", "orientationX")}}、{{domxref("PannerNode.orientationY", "orientationY")}}、{{domxref("PannerNode.orientationZ", "orientationZ")}}) として与えられたオーディオソースの向き (つまり、オーディオソースが向いている方向) によって定義されます。

+ +

サウンドの指向性 ({{domxref("PannerNode.coneInnerAngle", "coneInnerAngle")}}、{{domxref("PannerNode.coneOuterAngle", "coneOuterAngle")}}、および {{domxref("PannerNode.coneOuterGain", "coneOuterGain")}}) の属性を使用して指定されている) に応じて、サウンドの方向 (orientation) は、再生中のサウンドが知覚される音量を変化させることがあります。音がリスナーの方に向けられている場合は、リスナーから離れたところに向けられている場合よりも大きな音になります。

+ +

このプロパティに含まれる {{domxref("AudioParam")}} は読み取り専用ですが、{{domxref("AudioParam.value")}} プロパティに新しい値を代入することで、パラメーターの値を変更できます。

+
+ +

構文

+ +
var orientationX = PannerNode.orientationX;
+
+PannerNode.orientationX.value = newOrientationX;
+
+ +

Value

+ +

{{domxref("AudioParam")}} の値は、オーディオソースが向いている方向の X 成分であり、3D 直交座標空間での値です。

+ +

+ +

この例では、{{domxref("PannerNode.coneInnerAngle", "coneInnerAngle")}} と {{domxref("PannerNode.coneOuterAngle", "coneOuterAngle")}} を組み合わせて {{ domxref("PannerNode") }} の方向パラメーターを変更すると、ボリュームにどのように影響するかを示します。方向ベクトル (orientation vector) がどのように影響するかを視覚化するために、右手の法則を使用することができます。

+ +

This chart visualises how the PannerNode orientation vectors affect the direction of the sound cone.

+ +

まず、方向ベクトルを理解するためのユーティリティ関数を作成することから始めましょう。X 成分と Z 成分は常に互いに 90°であるため、ラジアン単位で同じ量だけオフセットされる正弦関数と余弦関数を使用できます。ただし、これは通常、{{ domxref("PannerNode") }} が 0°回転でリスナーの左側を指すことを意味します。`x= cos(0)= 1` および `z = sin(0) = 0` であるためです。角度を -90°オフセットするとより便利です。つまり、{{ domxref("PannerNode") }} は 0°の回転でリスナーを直接指します。

+ +
// このユーティリティは、Y 軸周りの回転量 (つまり「水平面」での回転) を
+// 方向ベクトルに変換します
+const yRotationToVector = degrees => {
+  // 度をラジアンに変換し、0 でリスナーの方を向くように角度をオフセットします
+  const radians = (degrees - 90) * (Math.PI / 180);
+  // ここで cosine と sine を使用すると,出力値は常に正規化されます
+  // つまり、これらは -1 から 1 の間の範囲です
+  const x = Math.cos(radians);
+  const z = Math.sin(radians);
+
+  // Y は回転軸なので、Y 成分を 0 にハードコードします。
+  return [x, 0, z];
+};
+
+ +

これで、{{ domxref("AudioContext") }}、オシレーター、および {{ domxref("PannerNode") }} を作成できます。

+ +
const context = new AudioContext();
+
+const osc = new OscillatorNode(context);
+osc.type = 'sawtooth';
+
+const panner = new PannerNode(context);
+panner.panningModel = 'HRTF';
+ +

次に、スペーシャルサウンドのコーンを設定し、それが聞こえる範囲を決めます。

+ +
// この値は、音量が一定となる領域のサイズを決定します
+// たとえば coneInnerAngle == 30 のとき、
+// サウンドを左右どちらかに 15 度 (30/2) まで回転させても音量は変わりません。
+panner.coneInnerAngle = 30;
+// この値は、音量が徐々に減衰する領域のサイズを決定します
+// たとえば coneOuterAngle == 45 かつ coneInnerAngle == 30 のとき、
+// 音を左右どちらかに 15 度 (30/2) から 22.5 度 (45/2) の間で回転させると、
+// 徐々に音量が小さくなります。
+panner.coneOuterAngle = 45;
+// この値は、inner/outer の両方のコーンの外側の音の大きさを決定します
+// 0 に設定すると音が出ず、コーンから離れたときにはっきり聞こえます
+// 0 はデフォルト値でもあります
+panner.coneOuterGain = 0;
+// Z位置を大きくして、コーンの効果を確実にします
+// 利用しない場合、音はリスナーと同じ位置にあります
+panner.positionZ.setValueAtTime(1, context.currentTime);
+ +

{{ domxref("PannerNode") }} を設定したら、Y 軸の回転を更新するスケジュールを設定できます。

+ +
// 回転がない場合のベクトルを計算する
+// これは音がフルボリュームで再生されることを意味します
+const [x1, y1, z1] = yRotationToVector(0);
+// 無回転ベクトルを直ちにスケジュールする
+panner.orientationX.setValueAtTime(x1, context.currentTime);
+panner.orientationY.setValueAtTime(y1, context.currentTime);
+panner.orientationZ.setValueAtTime(z1, context.currentTime);
+
+// -22.4 度のためのベクトルを計算する
+// ここでの coneOuterAngle は 45 であるため、ちょうど音が聞こえるようになります
+// これを +/-22.5 に設定すると、しきい値が排他的なので音量は 0 になります。
+const [x2, y2, z2] = yRotationToVector(-22.4);
+panner.orientationX.setValueAtTime(x2, context.currentTime + 2);
+panner.orientationY.setValueAtTime(y2, context.currentTime + 2);
+panner.orientationZ.setValueAtTime(z2, context.currentTime + 2);
+ +

最後に、すべてのノードを接続して、オシレーターを起動しましょう!

+ +
osc.connect(panner)
+   .connect(context.destination);
+
+osc.start(0);
+
+ +

仕様

+ + + + + + + + + + + + + + +
仕様書策定状況コメント
{{SpecName('Web Audio API', '#dom-pannernode-orientationx', 'orientationX')}}{{Spec2('Web Audio API')}}
+ +

ブラウザー実装状況

+ +
+ + +

{{Compat("api.PannerNode.orientationX")}}

+
+ +

関連情報

+ + -- cgit v1.2.3-54-g00ecf