一类音频处理模块,不同的Node具备不同的功能,如GainNode(音量调整)等。一个WebAudioContextNode可以通过上下文来创建。 目前已经支持以下Node: IIRFilterNode WaveShaperNode ConstantSourceNode ChannelMergerNode OscillatorNode GainNode BiquadFilterNode PeriodicWaveNode BufferSourceNode ChannelSplitterNode ChannelMergerNode DelayNode DynamicsCompressorNode ScriptProcessorNode PannerNode AnalyserNode
分类: 音频
Promise WebAudioContext.suspend()
Promise WebAudioContext.resume()
WebAudioContext.decodeAudioData(ArrayBuffer audioData, function successCallback, function errorCallback)
微信小程序插件:不支持
功能描述
异步解码一段资源为AudioBuffer。
参数
ArrayBuffer audioData
一个包含音频文件数据的 ArrayBuffer
function successCallback
在音频数据解码成功时被调用,参数为解码后的AudioBuffer
function errorCallback
在音频数据解码失败时被调用
返回值
AudioBuffer
示例代码
示例
wx.request({
url: url, // 音频 url
responseType: 'arraybuffer',
success: res => {
audioCtx.decodeAudioData(res.data, buffer => {
console.log(buffer)
}, err => {
console.error('decodeAudioData fail', err)
})
}
})
WebAudioContext.createWaveShaper() 方法
WebAudioContext.createScriptProcessor 创建 ScriptProcessorNode
微信小程序插件:不支持
功能描述
创建一个ScriptProcessorNode
参数
number bufferSize
缓冲区大小,以样本帧为单位
number numberOfInputChannels
用于指定输入node的声道的数量
number numberOfOutputChannels
用于指定输出node的声道的数量
返回值
ScriptProcessorNode
示例代码
示例代码
let audioCtx = wx.createWebAudioContext()
const sampleSize = 4096
audioCtx.createScriptProcessor(sampleSize, 1, 1)
PeriodicWaveNode WebAudioContext.createPeriodicWave(Float32Array real, Float32Array imag, object constraints)
微信小程序插件:不支持
功能描述
创建一个PeriodicWaveNode
参数
Float32Array real
一系列余弦项(传统上称为A项)
Float32Array imag
一系列正弦项(传统上称为B项)
object constraints
一个字典对象,用于指定是否禁用规范化(默认启用规范化)
| 属性 | 类型 | 默认值 | 必填 | 说明 |
|---|---|---|---|---|
| disableNormalization | boolean | 否 | 如果指定为true则禁用标准化,默认为false |
返回值
PeriodicWaveNode
注意
real和imag数组必须拥有一样的长度,否则抛出错误
const real = new Float32Array(2)
const imag = new Float32Array(2)
real[0] = 0
imag[0] = 0
real[1] = 1
imag[1] = 0
const waveNode = audioContext.createPeriodicWave(real, imag, {disableNormalization: true})
WebAudioContext.createPanner() 创建PannerNode
WebAudioContext.createOscillator()
WebAudioContext.createIIRFilter 创建 IIRFilterNode
微信小程序插件:不支持
功能描述
创建一个IIRFilterNode
参数
Array. feedforward
一个浮点值数组,用来指定IIR滤波器传递函数的前馈(分子)系数。
Array. feedback
一个浮点值数组,用来指定IIR滤波器传递函数的反馈(分母)系数。
返回值
IIRFilterNode
示例代码
let lowPassCoefs = [
{
frequency: 200,
feedforward: [0.00020298, 0.0004059599, 0.00020298],
feedback: [1.0126964558, -1.9991880801, 0.9873035442]
},
{
frequency: 500,
feedforward: [0.0012681742, 0.0025363483, 0.0012681742],
feedback: [1.0317185917, -1.9949273033, 0.9682814083]
},
{
frequency: 1000,
feedforward: [0.0050662636, 0.0101325272, 0.0050662636],
feedback: [1.0632762845, -1.9797349456, 0.9367237155]
},
{
frequency: 5000,
feedforward: [0.1215955842, 0.2431911684, 0.1215955842],
feedback: [1.2912769759, -1.5136176632, 0.7087230241]
}
]
const feedForward = lowPassCoefs[filterNumber].feedforward
const feedBack = lowPassCoefs[filterNumber].feedback
const iirFilter = audioContext.createIIRFilter(feedForward, feedBack)