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.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.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)