BaseAudioContext: createPeriodicWave() メソッド
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since April 2021.
createPeriodicWave()
は AudioContext
インターフェイスのメソッドで、周期的な波形を定義するために使われる PeriodicWave
を生成します。これは OscillatorNode
の出力を決めるために使われます。
構文
createPeriodicWave(real, imag)
createPeriodicWave(real, imag, constraints)
引数
配列 real
と imag
は同じ長さでなければならず、そうでない場合はエラーが発生します。
constraints
省略可-
正規化を無効にするかどうか(指定しない場合、正規化は既定で有効)を指定する辞書オブジェクトです。 1 つのプロパティを持ちます。
disableNormalization
-
true
に設定すると、周期的な波の正規化を無効にします。既定値はfalse
です。
メモ: 正規化した場合、結果の波は最大絶対ピーク値が 1 になります。
返値
PeriodicWave
です。
例
次の例は、 createPeriodicWave()
を使用して単純な正弦波を含む PeriodicWave
オブジェクトを作成する方法を示しています。
const real = new Float32Array(2);
const imag = new Float32Array(2);
const ac = new AudioContext();
const osc = ac.createOscillator();
real[0] = 0;
imag[0] = 0;
real[1] = 1;
imag[1] = 0;
const wave = ac.createPeriodicWave(real, imag, { disableNormalization: true });
osc.setPeriodicWave(wave);
osc.connect(ac.destination);
osc.start();
osc.stop(2);
これは、基本音だけを含む音は、定義上、正弦波であるため、うまくいきます。
ここでは、 2 つの値を持つ PeriodicWave
を作成します。最初の値は DC オフセットで、これはオシレーターを開始する値です。ここでは、曲線を [-1.0; 1.0] 範囲の中央で開始したいので、 0 が適しています。
2 つ目以降の値は正弦波と余弦波成分です。時間領域の値から周波数領域の値を得る、フーリエ変換の結果と考えることができます。ここでは、createPeriodicWave()
で、周波数を指定すると、ブラウザーは逆フーリエ変換を行い、発振器の周波数の時間領域のバッファーを取得します。ここでは、基本音にフルボリューム(1.0)の 1 成分のみを設定しているので、正弦波が得られます。
基本音は発振器の周波数(既定では440Hz)であることに留意してください。
したがって、発振器の周波数を変えることは、効果的にこの周期波の周波数も一緒に変えることになります。
フーリエ変換の係数は昇順で与えなければならず(すなわち、 など)、正でも負でも構いません。このような係数を手動で得る簡単な方法は(ベストではありませんが)、グラフ計算機を使うことです。
仕様書
Specification |
---|
Web Audio API # dom-baseaudiocontext-createperiodicwave |
ブラウザーの互換性
BCD tables only load in the browser