ConstantSourceNode
==================

The `ConstantSourceNode` interface—part of the Web Audio API—represents an audio source (based upon `AudioScheduledSourceNode`) whose output is single unchanging value. This makes it useful for cases in which you need a constant value coming in from an audio source. In addition, it can be used like a constructible `AudioParam` by automating the value of its `offset` or by connecting another node to it; see Controlling multiple parameters with ConstantSourceNode.

A `ConstantSourceNode` has no inputs and exactly one monaural (one-channel) output. The output's value is always the same as the value of the `offset` parameter.

EventTarget

AudioNode

AudioScheduledSourceNode

ConstantSourceNode

|  |  |
| --- | --- |
| Number of inputs | `0` |
| Number of outputs | `1` |

Constructor
-----------

`ConstantSourceNode()`

Creates and returns a new `ConstantSourceNode` instance, optionally specifying an object which establishes initial values for the object's properties. As an alternative, you can use the `BaseAudioContext.createConstantSource()` factory method; see Creating an AudioNode.

Instance properties
-------------------

*Inherits properties from its parent interface, `AudioScheduledSourceNode`, and adds the following properties:*

`offset`

An `AudioParam` which specifies the value that this source continuously outputs. The default value is 1.0.

### Events

*Inherits events from its parent interface, `AudioScheduledSourceNode`.*

**Note:** Some browsers' implementations of these events are part of the `AudioScheduledSourceNode` interface.

`ended`

Fired whenever the `ConstantSourceNode` data has stopped playing.

Instance methods
----------------

*Inherits methods from its parent interface, `AudioScheduledSourceNode`.*

**Note:** Some browsers' implementations of these methods are part of the `AudioScheduledSourceNode` interface.

`start()`

Schedules a sound to playback at an exact time.

`stop()`

Schedules a sound to stop playback at an exact time.

Example
-------

In the article Controlling multiple parameters with ConstantSourceNode, a `ConstantSourceNode` is created to allow one slider control to change the gain on two `GainNode`s. The three nodes are set up like this:


```js
gainNode2 = context.createGain();
gainNode3 = context.createGain();
gainNode2.gain.value = gainNode3.gain.value = 0.5;
volumeSliderControl.value = gainNode2.gain.value;

constantNode = context.createConstantSource();
constantNode.connect(gainNode2.gain);
constantNode.connect(gainNode3.gain);
constantNode.start();

gainNode2.connect(context.destination);
gainNode3.connect(context.destination);
```


This code starts by creating the gain nodes and setting them and the volume control that will adjust their value all to 0.5. Then the `ConstantSourceNode` is created by calling `AudioContext.createConstantSource()`, and the gain parameters of each of the two gain nodes are connected to the `ConstantSourceNode`. After starting the constant source by calling its `start()` method. Finally, the two gain nodes are connected to the audio destination (typically speakers or headphones).

Now, whenever the value of `constantNode.offset` changes, the gain on both `gainNode2` and `gainNode3` will change to have that same value.

To see this example in action, as well as to read the rest of the code from which these snippets were derived, see Controlling multiple parameters with ConstantSourceNode.

Specifications
--------------

| Specification |
| --- |
| Web Audio API # ConstantSourceNode |

Browser compatibility
---------------------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

See also
--------

* Using the Web Audio API
* `AudioScheduledSourceNode`
* `AudioNode`