AudioParam:setValueAtTime() 方法

基线 广泛可用

此功能已得到充分确立,可在许多设备和浏览器版本上运行。它已在浏览器中可用,自 2021 年 4 月.

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 的浏览器中加载。

另请参阅