# AudioContext.createPeriodicWave()

AudioContextインターフェースのcreatePeriodicWave()メソッドは、周期的な波形を定義するために使われるPeriodicWave (en-US)を生成します。これはOscillatorNodeの出力を決めるために使われます。

## 構文

var audioCtx = new AudioContext();
var wave = audioCtx.createPeriodicWave(real, imag);

### 戻り値

PeriodicWave (en-US)

real

imag

## 例

The following example illustrates simple usage of createPeriodicWave(), to create a PeriodicWave (en-US) object containing a simple sine wave.

var real = new Float32Array(2);
var imag = new Float32Array(2);
var ac = new AudioContext();
var osc = ac.createOscillator();

real = 0;
imag = 0;
real = 1;
imag = 0;

var wave = ac.createPeriodicWave(real, imag);

osc.setPeriodicWave(wave);

osc.connect(ac.destination);

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

This works because a sound that contains only a fundamental tone is by definition a sine wave.

Here, we create a PeriodicWave with two values. The first value is the DC offset, which is the value at which the oscillator starts. 0 is good here, because we want to start the curve at the middle of the [-1.0; 1.0] range.

The second and subsequent values are sine and cosine components. You can think of it as the result of a Fourier transform, where you get frequency domain values from time domain value. Here, with createPeriodicWave(), you specify the frequencies, and the browser performs a an inverse Fourier transform to get a time domain buffer for the frequency of the oscillator. Here, we only set one component at full volume (1.0) on the fundamental tone, so we get a sine wave.

The coefficients of the Fourier transform should be given in ascending order (i.e. etc.) and can be positive or negative.  A simple way of manually obtaining such coefficients (though not the best) is to use a graphing calculator.

## 仕様

Specification Status Comment
Web Audio API
createPeriodicWave の定義

## ブラウザ互換性

BCD tables only load in the browser