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

瀏覽器相容性

另見