AudioParam:linearRampToValueAtTime() 方法

可用性有限

此特性不是基线特性,因为它在一些最广泛使用的浏览器中不起作用。

AudioParam 接口的 linearRampToValueAtTime() 方法安排 AudioParam 值进行平滑的线性变化。此变化从上一个事件指定的时间开始,按照指定的斜率进行线性增长,在 value 参数给出的新值处达到目标,并在 endTime 参数给定的时间点完成。

语法

js
linearRampToValueAtTime(value, endTime)

参数

value

一个浮点数,表示 AudioParam 将在给定时间达到的目标值。

endTime

一个双精度浮点数,表示渐变开始后值变化停止的确切时间(以秒为单位)。

返回值

对该 AudioParam 对象的引用。在某些浏览器中,此接口的旧实现会返回 undefined

示例

在此示例中,我们有一个具有两个控制按钮的媒体源(有关源代码,请参阅 audio-param 仓库,或在线查看示例。)当按下这些按钮时,linearRampToValueAtTime() 分别用于将增益值渐入到 1.0 和渐出到 0。这对于渐入/渐出效果非常有用,尽管 AudioParam.exponentialRampToValueAtTime() 通常被认为更自然一些。

js
// create audio context
const audioCtx = new AudioContext();

// set basic variables for example
const myAudio = document.querySelector("audio");

const linearRampPlus = document.querySelector(".linear-ramp-plus");
const linearRampMinus = document.querySelector(".linear-ramp-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();

// connect the AudioBufferSourceNode to the gainNode
// and the gainNode to the destination
gainNode.gain.setValueAtTime(0, audioCtx.currentTime);
source.connect(gainNode);
gainNode.connect(audioCtx.destination);

// set buttons to do something onclick
linearRampPlus.onclick = () => {
  gainNode.gain.linearRampToValueAtTime(1.0, audioCtx.currentTime + 2);
};

linearRampMinus.onclick = () => {
  gainNode.gain.linearRampToValueAtTime(0, audioCtx.currentTime + 2);
};

规范

规范
Web Audio API
# dom-audioparam-linearramptovalueattime

浏览器兼容性

另见