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 |
PropertiesEdit
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.
MethodsEdit
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 handlersEdit
OscillatorNode.onended
- Used to set the event handler for the
ended
event, which fires when the tone has stopped playing.
ExamplesEdit
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();
SpecificationsEdit
Specification | Status | Comment |
---|---|---|
Web Audio API The definition of 'OscillatorNode' in that specification. |
Working Draft |