AudioParam
基线 广泛可用
此功能非常成熟,并在许多设备和浏览器版本上运行。它自 2021 年 4 月.
报告反馈
Web Audio API 的 AudioParam
接口表示一个与音频相关的参数,通常是 AudioNode
(例如 GainNode.gain
)的参数。
可以将 AudioParam
设置为特定值或值变化,并可以计划在特定时间并遵循特定模式发生。
AudioParam 类型
每个 AudioParam
都有一系列事件,最初为空,这些事件定义了值何时以及如何变化。当此列表不为空时,使用 AudioParam.value
属性进行的更改将被忽略。此事件列表使我们能够使用任意基于时间线的自动化曲线来计划必须在非常精确的时间发生的变化。使用的时间是 AudioContext.currentTime
中定义的时间。
有两种 AudioParam
:a 速率 和 k 速率 参数。每个 AudioNode
在规范中定义了其哪些参数是 a 速率 或 k 速率。
a 速率
a 速率 AudioParam
为音频信号的每个 样本帧 获取当前音频参数值。
k 速率
实例属性
- k 速率
AudioParam
对处理的整个块使用相同的初始音频参数值;也就是说,128 个样本帧。换句话说,相同的值适用于音频在节点处理时中的每个帧。 - 表示创建
AudioParam
的特定AudioNode
定义的属性的初始值。 - 表示参数的标称(有效)范围的可能最大值。
表示参数的标称(有效)范围的可能最小值。
-
AudioParam.value
实例方法
表示截至当前时间的参数的当前值;最初设置为
defaultValue
的值。-
AudioParam.setValueAtTime()
计划在相对于
AudioContext.currentTime
的精确时间对AudioParam
的值进行即时更改。新值由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 速率 AudioParam
的一个示例,因为该值可以为音频的每个样本帧设置不同的值。const audioCtx = new AudioContext();
const gainNode = audioCtx.createGain();
gainNode.gain.value = 0;
js
首先,一个基本示例显示一个
GainNode
,其 gain
值已设置。gain
是 a 速率 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);
规范
接下来,一个示例显示一个 DynamicsCompressorNode ,其某些参数值被操作。这些是 k 速率 AudioParam 类型的示例,因为这些值一次设置整个音频块。 |
---|
Web Audio API # AudioParam |
浏览器兼容性
规范