Skip to main content

getConvolver 获取卷积器

getConvolver

类型: MethodDeclaration

所属类: AudioReverb

定义位置: audio.ts

描述

获取卷积器

返回值:卷积器节点

返回值

类型: ConvolverNode

卷积器节点

源代码

位置: 第 729 行

public static getConvolver(): ConvolverNode {
if (!AudioReverb.convolver) {
const PREDELAY = 0.1
const DECAYTIME = 2
const context = AudioManager.context
const duration = PREDELAY + DECAYTIME
const sampleRate = context.sampleRate
const sampleCount = Math.round(sampleRate * duration)
const convolver = context.createConvolver()
const filter = context.createBiquadFilter()
const buffer = context.createBuffer(2, sampleCount, sampleRate)
const bufferLength = buffer.length
const delayLength = Math.round(bufferLength * PREDELAY / duration)
const decayLength = Math.round(bufferLength * DECAYTIME / duration)
const random = Math.random
for (let i = 0; i < buffer.numberOfChannels; i++) {
const samples = buffer.getChannelData(i)
for (let i = 0; i < delayLength; i++) {
samples[i] = (random() * 2 - 1) * i / delayLength
}
for (let i = delayLength; i < bufferLength; i++) {
const time = (bufferLength - i) / decayLength
samples[i] = (random() * 2 - 1) * time
}
}
convolver.buffer = buffer
filter.type = 'lowpass'
filter.frequency.value = 3000
convolver.connect(filter)
filter.connect(context.destination)
AudioReverb.convolver = convolver
}
return AudioReverb.convolver
}

文档生成时间:2025/7/7 12:07:06