AudioParam
接口代表音频相关的参数, 通常是一个 AudioNode
(例如 GainNode.gain
) 的参数。一个 AudioParam
可以被设置为一个具体的值或者数值的改变 ,可以被安排在在一个具体的时刻并且遵循一个特定的模式发生。
下面有两种类型的 AudioParam
, a-rate 和 k-rate 参数:
- 一个 a-rate
AudioParam
获取音频信号的每个采样帧的当前音频参数值。 - 一个 k-rate
AudioParam
对于待处理的整个块使用相同的初始音频参数值,即128个采样帧。
每个 AudioNode
定义了其规格中哪一个参数是 a-rate 或 k-rate 。
每个 AudioParam
有一个事件的列表,初始化时列表为空。该列表定义了什么时候数值怎么改变。当这个列表不是空的时候,使用 AudioParam.value
属性的改变会被忽略 。事件的列表允许我们去有计划地进行必须在非常精确的时间发生的更改,使用任意的基于时间轴的自动化曲线。被使用的时间在AudioContext.currentTime
中被定义。
属性
AudioParam
继承的属性来自于它的父类, AudioNode。
AudioParam.defaultValue
只读- 代表被具体的
AudioNode
创建的AudioParam
的属性的初始的音量。 AudioParam.maxValue
只读- 代表参数有效范围的最大可能值。
AudioParam.minValue
只读- 代表参数有效范围的最小可能值。
AudioParam.value
- 代表参数的浮点数音量值;初始化设定为
AudioParam.defaultValue 的值。虽然它可以被设置,但是任何发生在自动化事件(事件被计划用于 AudioParam )的修改会被忽略,
没有任何例外。
方法
AudioParam 初始化的方法来自它的父类,AudioNode
.
AudioParam.setValueAtTime()
- 在一个确切的时间,即时更改
AudioParam
的值,按照AudioContext.currentTime
的时间。新的值会被传递到value
参数。 AudioParam.linearRampToValueAtTime()
- 调整
AudioParam 的值,使其逐渐按线性变化。这个改变会从上一个事件指定的事件开始,跟随一个线性“斜坡”到参数给的新值,并在 endTime 参数给定的时间到达新值。
AudioParam.exponentialRampToValueAtTime()
- 调整
AudioParam 的值,使其逐渐按指数变化。这个改变会从上一个事件指定的事件开始,跟随一个指数“斜坡”到参数给的新值,并在 endTime 参数给定的时间到达新值。
AudioParam.setTargetAtTime()
- 将开始计划改变
AudioParam 的值
。这个改变将从startTime 指定的时间开始,并且以指定的方式向目标参数给定的值改变。指数衰减速率由 timeConstant 参数定义,
time 参数使以秒作为测量单位的时间。 AudioParam.setValueCurveAtTime()
- 调整
AudioParam
的值以跟随一组定义为Float32Array
的值,数值会缩放到适应给定的间隔,,从startTime 时间开始并具有特定的持续时间(duration)。
AudioParam.cancelScheduledValues()
- 取消全部在
AudioParam 中
的未来计划发生的改变。 AudioParam.cancelAndHoldAtTime()
- 取消全部计划将来对
AudioParam 的
改变,但是保持给定时间的值,直到将来的使用其他方法产生改变。新的值会被赋予到value
属性中。
例子
首先,一个基础的例子展示了 GainNode
拥有的 gain
一些值合。gain
是一个 a-rate AudioParam 的例子,因为该值可以针对音频的每个样本帧进行不同的设置。
var AudioContext = window.AudioContext || window.webkitAudioContext; var audioCtx = new AudioContext(); var gainNode = audioCtx.createGain(); gainNode.gain.value = 0;
另外,一个例子展示了 BiquadFilterNode
拥有的一些值。这是一个 k-rate AudioParam 的例子,因为一次为整个音频块设置的值。
var AudioContext = window.AudioContext || window.webkitAudioContext; var audioCtx = new AudioContext(); var biquadFilter = audioCtx.createBiquadFilter(); biquadFilter.type = "lowshelf"; biquadFilter.frequency.value = 1000; biquadFilter.gain.value = 25;
标准
Specification | Status | Comment |
---|---|---|
Web Audio API AudioParam |
Working Draft |
浏览器兼容性
Feature | Chrome | Edge | Firefox (Gecko) | Internet Explorer | Opera | Safari (WebKit) |
---|---|---|---|---|---|---|
Basic support | 14 webkit | (Yes) | 23 (23) | 未实现 | 15 webkit 22 (unprefixed) |
6 webkit |
Unprefixed | (Yes) | (Yes) | (Yes) | 未实现 | (Yes) | 未实现 |
minValue and maxValue |
52 | 未实现 | (Yes) | 未实现 | 39 | 未实现 |
cancelAndHoldAtTime() |
57 | 未实现 | 未实现 | 未实现 | 未实现 | 未实现 |
Feature | Android Webview | Chrome for Android | Edge | Firefox Mobile (Gecko) | IE Phone | Opera Mobile | Safari Mobile |
---|---|---|---|---|---|---|---|
Basic support | (Yes) | 28 webkit | (Yes) | 25.0 (25) | 未实现 | 未实现 | 6 webkit |
Unprefixed | (Yes) | (Yes) | (Yes) | (Yes) | 未实现 | (Yes) | 未实现 |
minValue and maxValue |
52 | 52 | 未实现 | (Yes) | 未实现 | 39 | 未实现 |
cancelAndHoldAtTime() |
57 | 57 | 未实现 | 未实现 | 未实现 | 未实现 | 未实现 |