The OscillatorNode interface represents a periodic waveform, like a sine wave. It is an AudioNode audio-processing module that causes a given frequency of sine wave to be created — in effect, a constant tone.
An OscillatorNode is created using the AudioContext.createOscillator method. It always has exactly one output and no inputs, both with the same amount of channels. Its basic property defaults (see AudioNode for definitions) are:
| Number of inputs | 0 |
|---|---|
| Number of outputs | 1 |
| Channel count mode | max |
| Channel count | 2 (not used in the default count mode) |
| Channel interpretation | speakers |
Properties
Inherits properties from its parent, AudioNode.
OscillatorNode.frequency- An a-rate
AudioParamrepresenting the frequency of oscillation in hertz (though theAudioParamreturned is read-only, the value it represents is not.)
OscillatorNode.detune- An a-rate
AudioParamrepresenting detuning of oscillation in cents (though theAudioParamreturned is read-only, the value it represents is not.)
OscillatorNode.type- Represents the shape of the oscillator wave generated. Different waves will produce different tones.
Methods
Inherits methods from its parent, AudioNode.
OscillatorNode.start()- This method specifies the exact time to start playing the tone.
OscillatorNode.stop()- This method specifies the exact time to stop playing the tone.
OscillatorNode.setPeriodicWave()- Used to point to a
PeriodicWavedefining a periodic waveform that can be used to shape the oscillator's output, whentype = "custom"is used. This replaces the now-obsoleteOscillatorNode.setWaveTable.
Event handlers
OscillatorNode.onended- Used to set the event handler for the
endedevent, which fires when the tone has stopped playing.
Examples
The following example shows basic usage of an AudioContext to create an oscillator node. For an applied example, check out our Violent Theremin demo (see app.js for relevant code).
// create web audio api context var audioCtx = new (window.AudioContext || window.webkitAudioContext)(); // create Oscillator node var oscillator = audioCtx.createOscillator(); oscillator.type = 'square'; oscillator.frequency.value = 3000; // value in hertz oscillator.start();
Specifications
| Specification | Status | Comment |
|---|---|---|
| Web Audio API The definition of 'OscillatorNode' in that specification. |
Working Draft |
Browser compatibility
| Feature | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari (WebKit) |
|---|---|---|---|---|---|
| Basic support | 14 webkit | 23 | Not supported | 15 webkit 22 (unprefixed) |
6 webkit |
| Feature | Android | Chrome | Firefox Mobile (Gecko) | Firefox OS | IE Phone | Opera Mobile | Safari Mobile |
|---|---|---|---|---|---|---|---|
| Basic support | Not supported | 28 webkit | 25 | 1.2 | Not supported | Not supported | 6 webkit |