AudioParam
Baseline 廣泛可用 *
Web Audio API 的 AudioParam 介面代表一個與音訊相關的引數,通常是 AudioNode 的引數(例如 GainNode.gain)。
AudioParam 可以被設定為一個特定值或一個值變化,並且可以被排程在特定時間以特定模式發生。
每個 AudioParam 都有一個事件列表,初始為空,用於定義何時以及如何更改值。當此列表不為空時,使用 AudioParam.value 屬性進行的更改將被忽略。此事件列表允許我們使用任意基於時間線的自動化曲線排程必須在非常精確的時間發生的更改。使用的時間由 AudioContext.currentTime 定義。
AudioParam 型別
有兩種 AudioParam 型別:a-rate 和 k-rate 引數。每個 AudioNode 在規範中定義了其引數的 a-rate 或 k-rate 型別。
a-rate
a-rate AudioParam 為音訊訊號的每個 取樣幀 獲取當前的音訊引數值。
k-rate
k-rate AudioParam 對整個處理的塊使用相同的初始音訊引數值;也就是說,128 個取樣幀。換句話說,在節點處理音訊時,相同的值適用於每個幀。
例項屬性
AudioParam.defaultValue只讀-
表示由建立
AudioParam的特定AudioNode定義的屬性的初始值。 AudioParam.maxValue只讀-
表示引數標稱(有效)範圍的最大可能值。
AudioParam.minValue只讀-
表示引數標稱(有效)範圍的最小可能值。
AudioParam.value-
表示引數在當前時間的當前值;最初設定為
defaultValue的值。
例項方法
AudioParam.setValueAtTime()-
在精確的時間點安排
AudioParam值的即時更改,該時間點根據AudioContext.currentTime進行測量。新值由value引數給出。 AudioParam.linearRampToValueAtTime()-
安排
AudioParam值進行漸變的線性更改。更改從 *前一個* 事件指定的開始時間開始,沿線性斜坡變化到value引數給出的新值,並在endTime引數給定的時間達到新值。 AudioParam.exponentialRampToValueAtTime()-
安排
AudioParam值進行漸變的指數更改。更改從 *前一個* 事件指定的開始時間開始,沿指數斜坡變化到value引數給出的新值,並在endTime引數給定的時間達到新值。 AudioParam.setTargetAtTime()-
安排
AudioParam值更改的開始。更改在startTime引數指定的時間開始,並呈指數級地趨向於target引數給定的值。指數衰減率由timeConstant引數定義,該引數是以秒為單位的時間。 AudioParam.setValueCurveAtTime()-
安排
AudioParam的值遵循一組值,這些值由一個浮點數陣列定義,該陣列被縮放到適合給定的區間,從給定的開始時間開始,並跨越給定的時間持續時間。 AudioParam.cancelScheduledValues()-
取消
AudioParam所有預定的未來更改。 AudioParam.cancelAndHoldAtTime()-
取消
AudioParam所有預定的未來更改,但將值在給定時間保持不變,直到使用其他方法進行進一步更改。
示例
首先,一個基本示例,演示如何設定 GainNode 的 gain 值。gain 是 a-rate AudioParam 的一個示例,因為該值可以為音訊的每個取樣幀設定不同的值。
const audioCtx = new AudioContext();
const gainNode = audioCtx.createGain();
gainNode.gain.value = 0;
接下來,一個示例,演示如何操作 DynamicsCompressorNode 的一些引數值。這些是 k-rate AudioParam 型別的示例,因為值是一次性為整個音訊塊設定的。
const compressor = audioCtx.createDynamicsCompressor();
compressor.threshold.setValueAtTime(-50, audioCtx.currentTime);
compressor.knee.setValueAtTime(40, audioCtx.currentTime);
compressor.ratio.setValueAtTime(12, audioCtx.currentTime);
compressor.attack.setValueAtTime(0, audioCtx.currentTime);
compressor.release.setValueAtTime(0.25, audioCtx.currentTime);
規範
| 規範 |
|---|
| Web Audio API # AudioParam |
瀏覽器相容性
載入中…