OscillatorNode.setPeriodicWave()

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.

setPeriodicWave()OscillatorNode インターフェイスのメソッドで、 PeriodicWave を指し、発振器の出力とすることができる周期的な波形を定義します。 typecustom のときに使用されます。

構文

js
setPeriodicWave(wave)

引数

wave

PeriodicWave オブジェクトで、発振器の出力とする周期的な波形を表します。

返値

なし (undefined)。

次の例は createPeriodicWave() の簡単な使い方を示し、周期波から正弦波を再現しています。

js
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);

osc.setPeriodicWave(wave);

osc.connect(ac.destination);

osc.start();
osc.stop(2);

これは、基本音だけを含む音は定義上正弦波であるため、うまく動作します。

ここでは、 2 つの値を持つ PeriodicWave を作成しています。最初の値は DC オフセットで、これは発振器が開始する値です。ここでは、カーブを [-1.0; 1.0] 範囲の中央から開始したいので、0 が適しています。

2 つ目以降の値はサイン成分、コサイン成分です。これは、時間領域の値から周波数領域の値を取得するフーリエ変換の結果と考えることができます。ここでは createPeriodicWave() で、周波数を指定すると、ブラウザーは逆フーリエ変換を行い、発振器の周波数の時間領域のバッファーが取得されるようになっています。ここでは、基本音にフルボリューム (1.0) のひとつの成分だけを設定しているので、正弦波が得られます。

仕様書

Specification
Web Audio API
# dom-oscillatornode-setperiodicwave

ブラウザーの互換性

BCD tables only load in the browser

関連情報