The Web Audio API's
AudioParam
interface represents an audio-related parameter, usually a parameter of an
AudioNode
(譬如
GainNode.gain
).
An
AudioParam
can be set to a specific value or a change in value, and can be scheduled to happen at a specific time and following a specific pattern.
There are two kinds of
AudioParam
,
a-rate
and
k-rate
parameters:
AudioParam
takes the current audio parameter value for each
sample frame
of the audio signal.
AudioParam
uses the same initial audio parameter value for the whole block processed, that is 128 sample frames. In other words, the same value applies to every frame in the audio as it's processed by the node.
每个
AudioNode
defines which of its parameters are
a-rate
or
k-rate
in the spec.
每个
AudioParam
has a list of events, initially empty, that define when and how values change. When this list is not empty, changes using the
AudioParam.value
attributes are ignored. This list of events allows us to schedule changes that have to happen at very precise times, using arbitrary timelime-based automation curves. The time used is the one defined in
AudioContext.currentTime
.
AudioParam.defaultValue
只读
AudioNode
creating the
AudioParam
.
AudioParam.maxValue
只读
Represents the maximum possible value for the parameter's nominal (effective) range.
AudioParam.minValue
只读
Represents the minimum possible value for the parameter's nominal (effective) range.
AudioParam.value
defaultValue
.
AudioParam.setValueAtTime()
AudioParam
at a precise time, as measured against
AudioContext.currentTime
. The new value is given by the
value
参数。
AudioParam.linearRampToValueAtTime()
AudioParam
. The change starts at the time specified for the
上一
event, follows a linear ramp to the new value given in the
value
parameter, and reaches the new value at the time given in the
endTime
参数。
AudioParam.exponentialRampToValueAtTime()
AudioParam
. The change starts at the time specified for the
上一
event, follows an exponential ramp to the new value given in the
value
parameter, and reaches the new value at the time given in the
endTime
参数。
AudioParam.setTargetAtTime()
AudioParam
. The change starts at the time specified in
startTime
and exponentially moves towards the value given by the
target
parameter. The exponential decay rate is defined by the
timeConstant
parameter, which is a time measured in seconds.
AudioParam.setValueCurveAtTime()
AudioParam
to follow a set of values, defined by an array of floating-point numbers scaled to fit into the given interval, starting at a given start time and spanning a given duration of time.
AudioParam.cancelScheduledValues()
AudioParam
.
AudioParam.cancelAndHoldAtTime()
AudioParam
but holds its value at a given time until further changes are made using other methods.
First, a basic example showing a
GainNode
having its
gain
value set.
gain
is an example of an a-rate AudioParam, as the value can potentially be set differently for each sample frame of the audio.
var AudioContext = window.AudioContext || window.webkitAudioContext; var audioCtx = new AudioContext(); var gainNode = audioCtx.createGain(); gainNode.gain.value = 0;
Next, an example showing a
DynamicsCompressorNode
having some param values maniuplated. These are examples of k-rate AudioParam's, as the values are set for the entire audio block at once.
var 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 音频 API
The definition of 'AudioParam' in that specification. |
工作草案 |
| 桌面 | 移动 | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
AudioParam
|
Chrome 14 | Edge ≤18 | Firefox 25 | IE 不支持 No | Opera 15 | Safari 6 | WebView Android Yes | Chrome Android 18 | Firefox Android 26 | Opera Android 14 | Safari iOS Yes | Samsung Internet Android 1.0 |
automationRate
|
Chrome 68 | Edge ≤79 | Firefox ? | IE 不支持 No | Opera Yes | Safari ? | WebView Android 68 | Chrome Android 68 | Firefox Android ? | Opera Android Yes | Safari iOS Yes | Samsung Internet Android 10.0 |
cancelAndHoldAtTime
|
Chrome
57
|
Edge ≤79 | Firefox 不支持 No | IE 不支持 No |
Opera
44
|
Safari 不支持 No |
WebView Android
57
|
Chrome Android
57
|
Firefox Android 不支持 No |
Opera Android
43
|
Safari iOS 不支持 No |
Samsung Internet Android
7.0
|
cancelScheduledValues
|
Chrome 14 | Edge 12 | Firefox 25 | IE 不支持 No | Opera 15 | Safari 6 | WebView Android Yes | Chrome Android 18 | Firefox Android 26 | Opera Android 14 | Safari iOS Yes | Samsung Internet Android 1.0 |
defaultValue
|
Chrome 14 | Edge 12 | Firefox 25 | IE 不支持 No | Opera 15 | Safari 6 | WebView Android Yes | Chrome Android 18 | Firefox Android 26 | Opera Android 14 | Safari iOS Yes | Samsung Internet Android 1.0 |
exponentialRampToValueAtTime
|
Chrome 14 | Edge 12 |
Firefox
部分支持
25
注意事项
|
IE 不支持 No | Opera 15 | Safari 6 | WebView Android Yes |
Chrome Android
部分支持
18
注意事项
|
Firefox Android
部分支持
26
注意事项
|
Opera Android 14 | Safari iOS Yes | Samsung Internet Android 1.0 |
linearRampToValueAtTime
|
Chrome 14 | Edge 12 |
Firefox
部分支持
25
注意事项
|
IE 不支持 No | Opera 15 | Safari 6 | WebView Android Yes |
Chrome Android
部分支持
18
注意事项
|
Firefox Android
部分支持
26
注意事项
|
Opera Android 14 | Safari iOS ? | Samsung Internet Android 1.0 |
maxValue
|
Chrome 52 | Edge ≤18 | Firefox 53 | IE 不支持 No | Opera 39 | Safari 6 | WebView Android 52 | Chrome Android 52 | Firefox Android 53 | Opera Android 41 | Safari iOS Yes | Samsung Internet Android 6.0 |
minValue
|
Chrome 52 | Edge ≤18 | Firefox 53 | IE 不支持 No | Opera 39 | Safari 6 | WebView Android 52 | Chrome Android 52 | Firefox Android 53 | Opera Android 41 | Safari iOS Yes | Samsung Internet Android 6.0 |
setTargetAtTime
|
Chrome 14 | Edge 12 | Firefox 25 | IE 不支持 No | Opera 15 | Safari 6 | WebView Android Yes | Chrome Android 18 | Firefox Android 26 | Opera Android 14 | Safari iOS Yes | Samsung Internet Android 1.0 |
setValueAtTime
|
Chrome 14 | Edge 12 | Firefox 25 | IE 不支持 No | Opera 15 | Safari 6 | WebView Android Yes | Chrome Android 18 | Firefox Android 26 | Opera Android 14 | Safari iOS Yes | Samsung Internet Android 1.0 |
setValueCurveAtTime
|
Chrome 14 | Edge 12 | Firefox 25 | IE 不支持 No | Opera 15 | Safari 6 | WebView Android Yes | Chrome Android 18 | Firefox Android 26 | Opera Android 14 | Safari iOS Yes | Samsung Internet Android 1.0 |
value
|
Chrome 14 | Edge 12 |
Firefox
25
注意事项
|
IE 不支持 No | Opera 15 | Safari 6 | WebView Android Yes | Chrome Android 18 |
Firefox Android
26
注意事项
|
Opera Android 14 | Safari iOS Yes | Samsung Internet Android 1.0 |
完整支持
部分支持
不支持
兼容性未知
见实现注意事项。
使用非标名称。
AudioParam
AnalyserNode
AudioBuffer
AudioBufferSourceNode
AudioContext
AudioContextOptions
AudioDestinationNode
AudioListener
AudioNode
AudioNodeOptions
AudioProcessingEvent
AudioScheduledSourceNode
AudioWorklet
AudioWorkletGlobalScope
AudioWorkletNode
AudioWorkletProcessor
BaseAudioContext
BiquadFilterNode
ChannelMergerNode
ChannelSplitterNode
ConstantSourceNode
ConvolverNode
DelayNode
DynamicsCompressorNode
GainNode
IIRFilterNode
MediaElementAudioSourceNode
MediaStreamAudioDestinationNode
MediaStreamAudioSourceNode
OfflineAudioCompletionEvent
OfflineAudioContext
OscillatorNode
PannerNode
PeriodicWave
StereoPannerNode
WaveShaperNode