The setValueAtTime() method of the AudioParam Interface schedules an instant change to the value of the AudioParam at a precise time, as measured against AudioContext.currentTime. The new value is given in the value parameter.
Syntax
var AudioParam = AudioParam.setValueAtTime(value, startTime)
Parameters
- value
- A floating point number representing the value the AudioParam will change to at the given time.
- startTime
- A double representing the time (in seconds) after the
AudioContextwas first created that the change in value will happen. ATypeErroris thrown if this value is negative.
Returns
A reference to this AudioParam object. In some browsers older implementations of this interface return void.
Examples
This simple example features a media element source with two control buttons (see our audio-param repo for the source code, or view the example live). When the buttons are pressed, the currGain variable is incremented/decremented by 0.25, then the setValueAtTime() method is used to set the gain value equal to currGain, one second from now (audioCtx.currentTime + 1.)
// create audio context
var AudioContext = window.AudioContext || window.webkitAudioContext;
var audioCtx = new AudioContext();
// set basic variables for example
var myAudio = document.querySelector('audio');
var pre = document.querySelector('pre');
var myScript = document.querySelector('script');
pre.innerHTML = myScript.innerHTML;
var targetAtTimePlus = document.querySelector('.set-target-at-time-plus');
var targetAtTimeMinus = document.querySelector('.set-target-at-time-minus');
// Create a MediaElementAudioSourceNode
// Feed the HTMLMediaElement into it
var source = audioCtx.createMediaElementSource(myAudio);
// Create a gain node and set it's gain value to 0.5
var gainNode = audioCtx.createGain();
gainNode.gain.value = 0.5;
var currGain = gainNode.gain.value;
// connect the AudioBufferSourceNode to the gainNode
// and the gainNode to the destination
source.connect(gainNode);
gainNode.connect(audioCtx.destination);
// set buttons to do something onclick
targetAtTimePlus.onclick = function() {
currGain += 0.25;
gainNode.gain.setValueAtTime(currGain, audioCtx.currentTime + 1);
}
targetAtTimeMinus.onclick = function() {
currGain -= 0.25;
gainNode.gain.setValueAtTime(currGain, audioCtx.currentTime + 1);
}
Specifications
| Specification | Status | Comment |
|---|---|---|
| Web Audio API The definition of 'setValueAtTime' in that specification. |
Working Draft |
Browser compatibility
| Feature | Chrome | Edge | Firefox (Gecko) | Internet Explorer | Opera | Safari (WebKit) |
|---|---|---|---|---|---|---|
| Basic support | 14 webkit | (Yes) | 23 | No support | 15 webkit 22 (unprefixed) |
6 webkit |
| Unprefixed | (Yes) | (Yes) |
| Feature | Android | Android Webview | Edge | Firefox Mobile (Gecko) | Firefox OS | IE Phone | Opera Mobile | Safari Mobile | Chrome for Android |
|---|---|---|---|---|---|---|---|---|---|
| Basic support | No support | (Yes) | (Yes) | 25 | 1.2 | No support | No support | 6 webkit | 28 webkit |
| Unprefixed | ? | (Yes) | (Yes) | (Yes) |