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 |
浏览器兼容性
加载中…