AudioParam: exponentialRampToValueAtTime() 方法
exponentialRampToValueAtTime()
是 AudioParam
接口的方法,用于安排对 AudioParam
的值进行逐渐的指数变化。这种变化从为先前事件指定的时间开始,按照指数斜坡变化到 value
参数中给出的新值,并在 endTime
参数中给出的时间到达新值。
注意:由于人耳的工作方式,指数斜坡在改变频率或播放速度时比线性斜坡更有用。
语法
js
exponentialRampToValueAtTime(value, endTime)
参数
返回值
对该 AudioParam
对象的引用。在某些浏览器中,此接口的旧实现返回 undefined
。
示例
在这个示例中,我们有一个媒体源,它有两个控制按钮(有关源代码,请参阅 audio-param 存储库,或者 查看示例)。当按下这些按钮时,exponentialRampToValueAtTime()
用于将增益值分别淡入到 1.0 和淡出到 0。这对淡入/淡出效果非常有用。
js
// create audio context
const audioCtx = new AudioContext();
// set basic variables for example
const myAudio = document.querySelector("audio");
const expRampPlus = document.querySelector(".exp-ramp-plus");
const expRampMinus = document.querySelector(".exp-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
expRampPlus.onclick = () => {
gainNode.gain.exponentialRampToValueAtTime(1.0, audioCtx.currentTime + 2);
};
expRampMinus.onclick = () => {
gainNode.gain.exponentialRampToValueAtTime(0.01, audioCtx.currentTime + 2);
};
注意:在最后一个函数中,我们使用 0.01 作为淡出到的值,而不是 0,因为如果使用 0,则会抛出无效或非法字符串错误——该值必须为正。
规范
规范 |
---|
Web Audio API # dom-audioparam-exponentialramptovalueattime |
浏览器兼容性
BCD 表格仅在浏览器中加载