Web Audio API's
AudioParam
interface property
值
gets or sets the value of this
AudioParam
at the current time.
Initially, the value is set to
AudioParam.defaultValue
.
设置
value
has the same effect as calling
AudioParam.setValueAtTime
with the time returned by the
AudioContext
's
currentTime
property..
var curValue = audioParam.value; audioParam.value = newValue;
A floating-point
Number
indicating the parameter's value as of the current time. This value will be between the values specified by the
minValue
and
maxValue
特性。
The data type used internally to store
value
is a single-precision (32-bit) floating point number, while JavaScript uses 64-bit double-precision floating point numbers. As a result, the value you read from the
value
property may not always exactly equal what you set it to.
Consider this example:
const source = new AudioBufferSourceNode(...); const rate = 5.3; source.playbackRate.value = rate; console.log(source.playbackRate.value === rate);
The log output will be
false
, because the playback rate parameter,
rate
, was converted to the 32-bit floating-point number closest to 5.3, which yields 5.300000190734863. One solution is to use the
Math.fround()
method, which returns the single-precision value equivalent to the 64-bit JavaScript value specified—when setting
value
,像这样:
const source = new AudioBufferSourceNode(...); const rate = Math.fround(5.3); source.playbackRate.value = rate; console.log(source.playbackRate.value === rate);
In this case, the log output will be
true
.
value
of an
AudioParam
can either be fixed or can vary over time. This is reflected by the
value
getter, which returns the value of the parameter as of the audio rendering engine's most recent
render quantum
, or moment at which audio buffers are processed and updated. In addition to processing audio buffers, each render quantum updates the
value
of each
AudioParam
as needed given the current time and any established time-based parameter value changes.
Upon first creating the parameter, its value is set to its default value, given by
AudioParam.defaultValue
. This is the parameter's value at a time of 0.0 seconds, and will remain the parameter's value until the first render quantum in which the value is altered.
During each render quantum, the browser does the following things related to managing the value of a parameter:
value
setter has been used, the parameter's value is changed to the value given.
setValueAtTime()
,
value
is changed to the value passed into
setValueAtTime()
.
linearRampToValueAtTime()
,
setTargetAtTime()
,和
setValueCurveAtTime()
.
Thus, the
value
of a parameter is maintained to accurately reflect the state of the parameter over time.
This example instantly changes the volume of a
GainNode
to 40%.
const audioCtx = new AudioContext(); const gainNode = audioCtx.createGain(); gainNode.gain.value = 0.4; //which is identical to: gainNode.gain.setValueAtTime(0.4, audioCtx.currentTime);
| 规范 | 状态 | 注释 |
|---|---|---|
|
Web 音频 API
The definition of 'value' in that specification. |
工作草案 |
| 桌面 | 移动 | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
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 |
完整支持
不支持
见实现注意事项。
When changing the gain value of a
GainNode
, Google Chrome prior to version 64 (January 2018) would perform a smooth interpolation to prevent dezippering. Starting with version 64, the value is changed instantly to bring it in line with the Web Audio spec. See
Chrome Platform Status
了解细节。
AudioParam
defaultValue
maxValue
minValue
value
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