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
AudioParam
representing the frequency of oscillation in hertz (though theAudioParam
returned is read-only, the value it represents is not.)
OscillatorNode.detune
- An a-rate
AudioParam
representing detuning of oscillation in cents (though theAudioParam
returned 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
PeriodicWave
defining 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
ended
event, 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 |