AudioParam: setValueAtTime() 方法
AudioParam 介面的 setValueAtTime() 方法會在精確的時間點安排 AudioParam 值的即時更改,該時間點相對於 AudioContext.currentTime 進行測量。新值在 value 引數中給出。
語法
js
setValueAtTime(value, startTime)
引數
value-
一個浮點數,表示 AudioParam 在給定時間將更改到的值。
startTime-
一個雙精度浮點數,表示值更改將發生的
AudioContext首次建立後的時間(以秒為單位)。如果時間小於AudioContext.currentTime,則更改會立即發生。如果此值為負數,則會引發TypeError。
返回值
對該 AudioParam 物件的引用。在某些瀏覽器中,此介面的舊實現會返回 undefined。
示例
這個簡單的示例包含一個媒體元素源和兩個控制按鈕(有關原始碼,請參閱我們的 webaudio-examples 倉庫,或線上檢視示例)。按下按鈕時,currGain 變數會增加/減少 0.25,然後使用 setValueAtTime() 方法將增益值設定為等於 currGain,時間在 1 秒後(audioCtx.currentTime + 1)。
js
// create audio context
const audioCtx = new AudioContext();
// set basic variables for example
const myAudio = document.querySelector("audio");
const pre = document.querySelector("pre");
const myScript = document.querySelector("script");
pre.textContent = myScript.textContent;
const targetAtTimePlus = document.querySelector(".set-target-at-time-plus");
const targetAtTimeMinus = document.querySelector(".set-target-at-time-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();
gainNode.gain.value = 0.5;
let currGain = gainNode.gain.value;
// connect the AudioBufferSourceNode to the gainNode
// and the gainNode to the destination
source.connect(gainNode);
gainNode.connect(audioCtx.destination);
// set buttons to do something onclick
targetAtTimePlus.onclick = () => {
currGain += 0.25;
gainNode.gain.setValueAtTime(currGain, audioCtx.currentTime + 1);
};
targetAtTimeMinus.onclick = () => {
currGain -= 0.25;
gainNode.gain.setValueAtTime(currGain, audioCtx.currentTime + 1);
};
規範
| 規範 |
|---|
| Web Audio API # dom-audioparam-setvalueattime |
瀏覽器相容性
載入中…