AudioParam:exponentialRampToValueAtTime() 方法
exponentialRampToValueAtTime() 方法是 AudioParam 介面的一個方法,用於安排 AudioParam 的值進行漸變的指數增長或衰減。該變化從前一個事件指定的時間開始,沿著指數斜坡增長或衰減到 value 引數給定的新值,並在 endTime 引數給定的時間達到新值。
注意: 指數斜坡在改變頻率或播放速率時比線性斜坡更有用,因為這更符合人耳的工作方式。
語法
js
exponentialRampToValueAtTime(value, endTime)
引數
返回值
對該 AudioParam 物件的引用。在某些瀏覽器中,此介面的舊實現會返回 undefined。
示例
在此示例中,我們有一個媒體源,帶有兩個控制按鈕(有關原始碼,請參見 audio-param repo,或 即時檢視示例)。當按下這些按鈕時,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 |
瀏覽器相容性
載入中…