The setPeriodicWave()
method of the OscillatorNode
interface is used to point to a PeriodicWave
defining a periodic waveform that can be used to shape the oscillator's output, when type = "custom"
is used.
Note: This replaces the now-obsolete OscillatorNode.setWaveTable
.
SyntaxEdit
var oscillator = audioCtx.createOscillator();
oscillator.setPeriodicWave(wave);
Returns
void.
ExampleEdit
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] = 0;
imag[0] = 0;
real[1] = 1;
imag[1] = 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 Periodic Wave 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.
ParametersEdit
- periodicWave
- The
PeriodicWave
object you want to use to shape the oscillator's output.
SpecificationsEdit
Specification | Status | Comment |
---|---|---|
Web Audio API The definition of 'setPeriodicWave' in that specification. |
Working Draft |