AudioParam:setValueAtTime() 方法
AudioParam
接口的 setValueAtTime()
方法计划在精确时间(以 AudioContext.currentTime
为衡量标准)对 AudioParam
值进行即时更改。新值在 value 参数中给出。
语法
js
setValueAtTime(value, startTime)
参数
value
-
一个浮点数,表示 AudioParam 在给定时间将更改到的值。
startTime
-
一个双精度数,表示在创建
AudioContext
后值更改发生的时间(以秒为单位)。如果时间小于AudioContext.currentTime
,则更改会立即发生。如果此值为负数,则会抛出TypeError
。
返回值
对该 AudioParam
对象的引用。在某些浏览器中,此接口的较旧实现返回 undefined
。
示例
此简单示例包含一个媒体元素源和两个控制按钮(有关源代码,请参阅我们的 webaudio-examples 存储库,或 查看示例)。按下按钮时,currGain
变量会增加/减少 0.25,然后 setValueAtTime()
方法用于将增益值设置为等于 currGain
,一秒钟后 (audioCtx.currentTime + 1
)。
js
// create audio context
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.textContent = myScript.textContent;
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 its 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);
};
规范
规范 |
---|
Web Audio API # dom-audioparam-setvalueattime |
浏览器兼容性
BCD 表仅在启用 JavaScript 的浏览器中加载。