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

浏览器兼容性

BCD 表格仅在启用 JavaScript 的浏览器中加载。

另请参阅