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

ブラウザーの互換性

Report problems with this compatibility data on GitHub
desktopmobile
Chrome
Edge
Firefox
Opera
Safari
Chrome Android
Firefox for Android
Opera Android
Safari on iOS
Samsung Internet
WebView Android
WebView on iOS
setPeriodicWave

Legend

Tip: you can click/tap on a cell for more information.

Full support
Full support

関連情報