870920 Menu

AudioSource之IIRFilterAudioSource

IIRFilterAudioSource可对另一个AudioSource所产生的音频流进行IIR滤波处理(IIR:Infinite Impulse Response,无限脉冲响应。递归型结构,带有反馈环路。非线性相位,幅频精度较高)。即:它修改另一个AudioSource所产生的数据,修改后的数据由本类直接输出。这一点遵循上面归纳的第3种情况。

IIRFilterAudioSource的构造函数
 IIRFilterAudioSource (AudioSource来源, 1参是否由本类托管)

该类只新增了一个成员函数:
 setFilterParameters (const IIRFilter& newSettings) 设置滤波器参数。可多次调用此函数,设置不同的滤波参数

setFilterParameters()的参数为const类型的IIRFilter引用型对象。IIRFilter滤波器可对音频信号进行低通、高通和带通处理,该处理基于所设置的滤波类型和滤波参数,对调用方给出的float数组中的所有元素(音频采样)逐个进行处理。该类的使用流程是:
 创建对象,无参构造或拷贝构造
 设置滤波类型和参数,或者使用copyCoefficientsFrom()复制另一个滤波器对象的各类设置
 调用processSamples()进行处理,待处理数据即为该函数的参数(逐个处理该数组的每个采样)

IIRFilter的成员函数:
 IIRFilterAudioSource() 无参构造函数
 reset() 重置滤波器
 processSamples (数组名,元素个数) 对给出的采样数组进行滤波,核心函数
 processSingleSampleRaw(float数值) 处理给出的单个采样,不锁定或检测
 makeLowPass (采样率,频点) 滤波类型设置为低通
 makeHighPass (采样率,频点) 滤波类型设置为高通
 makeLowShelf (采样率,频点,Q值,增益值) 使用Q值和增益进行低通处理
 makeHighShelf (采样率,频点,Q值,增益值) 使用Q值和增益进行高通处理
 makeBandPass (采样率,频点,Q值,增益值) 使用Q值和增益进行带通处理
 makeInactive() 信号直通,不进行处理
 copyCoefficientsFrom (另一个本类对象) 复制另一个滤波器的各类设置
 prepareToPlay () 准备产生滤波后的音频流
 releaseResources () 停止滤波处理,不再生成任何音频流
 getNextAudioBlock () 开始滤波处理,生成滤波后的音频流

IIRFilterAudioSource的getNextAudioBlock()函数中,对来源进行滤波处理的语句为: