The setValueAtTime()
method of the AudioParam
interface schedules an instant change to the AudioParam
value at a precise time, as measured against AudioContext.currentTime
. The new value is given in the value parameter.
On this page
AudioParam: setValueAtTime() method
Syntax
js
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
AudioContext
was first created that the change in value will happen. If the time is less thanAudioContext.currentTime
, the change happens immediately. ATypeError
is thrown if this value is negative.
Return value
A reference to this AudioParam
object. In some browsers older implementations of this interface return undefined
.
Examples
This simple example features a media element source with two control buttons (see our webaudio-examples 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
.)
js
// create audio context
const AudioContext = window.AudioContext || window.webkitAudioContext;
const audioCtx = new AudioContext();
// set basic variables for example
const myAudio = document.querySelector("audio");
const pre = document.querySelector("pre");
const myScript = document.querySelector("script");
pre.innerHTML = myScript.innerHTML;
const targetAtTimePlus = document.querySelector(".set-target-at-time-plus");
const targetAtTimeMinus = document.querySelector(".set-target-at-time-minus");
// Create a MediaElementAudioSourceNode
// Feed the HTMLMediaElement into it
const source = audioCtx.createMediaElementSource(myAudio);
// Create a gain node and set it's gain value to 0.5
const gainNode = audioCtx.createGain();
gainNode.gain.value = 0.5;
let 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 = () => {
currGain += 0.25;
gainNode.gain.setValueAtTime(currGain, audioCtx.currentTime + 1);
};
targetAtTimeMinus.onclick = () => {
currGain -= 0.25;
gainNode.gain.setValueAtTime(currGain, audioCtx.currentTime + 1);
};
Specifications
Specification |
---|
Web Audio API # dom-audioparam-setvalueattime |
Browser compatibility
Desktop | Mobile | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
Chrome | Edge | Firefox | Internet Explorer | Opera | Safari | WebView Android | Chrome Android | Firefox for Android | Opera Android | Safari on IOS | Samsung Internet | |
setValueAtTime |
14 | 12 | 25 | No | 15 | 6 | ≤37 | 18 | 25 | 14 | 6 | 1.0 |
See also
© 2005–2023 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/API/AudioParam/setValueAtTime