This replaces the now-obsolete
PeriodicWaveobject representing the waveform to use as the shape of the oscillator's output.
The following example illustrates simple usage of
createPeriodicWave(), recreating a sine wave from a periodic 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.
|Web Audio API
The definition of 'setPeriodicWave' in that specification.