OscillatorNode
The OscillatorNode interface represents a periodic waveform, such as a sine wave. It is an AudioScheduledSourceNode audio-processing module that causes a specified frequency of a given wave to be created—in effect, a constant tone.
| 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 |
Constructor
OscillatorNode()-
Creates a new instance of an
OscillatorNodeobject, optionally providing an object specifying default values for the node's properties. As an alternative, you can use theBaseAudioContext.createOscillator()factory method; see Creating an AudioNode.
Instance properties
Inherits properties from its parent, AudioScheduledSourceNode, and adds the following properties:
OscillatorNode.frequency-
An a-rate
AudioParamrepresenting the frequency of oscillation in hertz (though theAudioParamreturned is read-only, the value it represents is not). The default value is 440 Hz (a standard middle-A note). OscillatorNode.detune-
An a-rate
AudioParamrepresenting detuning of oscillation in cents (though theAudioParamreturned is read-only, the value it represents is not). The default value is 0. OscillatorNode.type-
A string which specifies the shape of waveform to play; this can be one of a number of standard values, or
customto use aPeriodicWaveto describe a custom waveform. Different waves will produce different tones. Standard values are"sine","square","sawtooth","triangle"and"custom". The default is"sine".
Event handlers
OscillatorNode.onended-
Sets the event handler for the
endedevent, which fires when the tone has stopped playing.
Instance methods
Inherits methods from its parent, AudioScheduledSourceNode, and adds the following:
OscillatorNode.setPeriodicWave()-
Sets a
PeriodicWavewhich describes a periodic waveform to be used instead of one of the standard waveforms; calling this sets thetypetocustom. OscillatorNode.start()-
Specifies the exact time to start playing the tone.
OscillatorNode.stop()-
Specifies the time to stop playing the tone.
Examples
The following example shows basic usage of an AudioContext to create an oscillator node and to start playing a tone on it. For an applied example, check out our Violent Theremin demo (see app.js for relevant code).
js
// create web audio api context
const audioCtx = new (window.AudioContext || window.webkitAudioContext)();
// create Oscillator node
const oscillator = audioCtx.createOscillator();
oscillator.type = "square";
oscillator.frequency.setValueAtTime(440, audioCtx.currentTime); // value in hertz
oscillator.connect(audioCtx.destination);
oscillator.start();
Specifications
| Specification |
|---|
| Web Audio API # OscillatorNode |
Browser compatibility
BCD tables only load in the browser