SHARC音频DSP的算法详解(十三)Low Pass IIR Comb Filter (带低通滤波的 IIR 梳状滤波器)算法的实现及代码详解
硬件准备
ADSP-21489EVB:ADI 21489 DSP的开发板
AD-HP530ICE:ADI DSP通用仿真器
软件准备
Visual DSP++
算法功能
实现反馈延时功能,用于模拟反射声,低通滤波用于模拟高频声波衰减。声音信号经过该滤波器以后频谱幅度出现梳状特性。
原理简介
下图是带低通滤波的 IIR Comb 滤波器的网络结构:
系统函数:
其中 G(z)是低通滤波器,例如:
资源占用(MIPS, Memory requirement)
Memory: 数据段(段名 LpIIRCombFilter_dmda)
(D + 5)words (字长 32bits)
D 指延时线长度
代码段(段名 LpIIRCombFilter_pmco),0x90 words (字长 48bits)
MFLOPS(处理 1 个输入数据): LpIIRCombFilter 函数,0.0009
相关函数
函数一:void InitLpIIRCombFilter( float *DlyBuf, int BufIndex, floatstate, int BufSize )
1.函数说明:初始化函数,将延时线的数据置零。
2.输入参数:
*DlyBuf 延时线指针
*BufIndex 对延时线进行数据操作的索引值
*state 存储低通滤波的中间数据
BufSize 延时线长度
3.输出参数:无
4.返回值:无。
函数二:int IIRCombFilter (int *in, int *out, float *DlyBuf, int *BufIndex,
int DelayNum, float *state, float *LpCoef)
1.函数说明:对单声道的输入进行带低通的梳状滤波处理,用于模拟
有高频衰减的反射声。
2.输入参数:
in 输入数据指针。
*in 为单声道数据;
数据范围:int 类型表示的范围
DlyBuf 延时线指针。
DelayNum 延时线长度。
数据范围:在存储空间允许的范围内根据需要设定;
*state 存储低通滤波的中间数据
LpCoef 低通滤波器的系数指针
- LpCoef b0; * (LpCoef + 1) b1; * (LpCoef + 2) a1; (注:a0 默认为 1,所以无须传递此系数)
3.输出参数:
out 输出数据指针。
*out 为单声道的输出数据;
数据范围:int 类型表示的范围
4.返回值: 无
应用举例
首先将 LpIIRCombFilter.dlb, LpIIRCombFilter.h 两个文件拷贝到自己的工程目录下,然后将它们添加到工程中;然后在 LDF 文件中给数据段 LpIIRCombFilter _dmda、程序段LpIIRCombFilter _pmco 分配空间,接下来再写相关代码。
#include “LpIIRCombFilter.h”
/******************************************************************************
- 调用 LpIIRCombFilter.dlb 库函数需定义的参数
*/
#define D 4800 // 定义延时缓冲区大小 TD = D/fs = 4800/48000 = 0.1 sec /
#pragma section (“LpIIRCombFilter_dmda”)
int DelayBufIndex; // 往延时缓冲区写数据的索引值
#pragma section (“LpIIRCombFilter_dmda”)
float w[D + 1]; // 延时缓冲区
#pragma section (“LpIIRCombFilter_dmda”)
float v_state = 0.0;
// 低通滤波器的系数
#pragma section (“LpIIRCombFilter_dmda”)
/ b0 b1 a1 */
float LpCoef[3] = { 0.3, 0.15, 0.5 };
//
// 第一次调用延时函数的标志
int FirstIIRCombFilterFlag = 1;
// 输入输出数据的临时变量
int InputLR;
int OutputLR[2];
int InputData;
int OutputData;
// 第一次调用全通滤波函数之前先做初始化工作
if (FirstIIRCombFilterFlag)
{
InitLpIIRCombFilter( w, &DelayBufIndex, &v_state, D);
FirstIIRCombFilterFlag = 0;
}
for (i=0; i<NUM_SAMPLES; i++)
{
//取左声道数据
InputData = (block_ptr+2i); // block_ptr 是 A/D D/A 收发数据的指针
//对输入数据进行 Stero Chorus 处理
LpIIRCombFilter(&InputData, &OutputData, w, &DelayBufIndex, D, &v_state,
LpCoef);
//将处理后的输出数据传给 D/A
(block_ptr+2i) = OutputData;
}
SHARC音频DSP的算法详解(十三)Low Pass IIR Comb Filter (带低通滤波的 IIR 梳状滤波器)算法的实现及代码详解相关推荐
- SHARC音频DSP的算法详解(一)数字信号里的定点数和浮点数
作者的话 ADI的音频DSP里,SHARC是现阶段最高端的型号,在汽车座舱的前装后装.音响.调音台等一切音频相关的应用中,都得到了广泛的应用.我在前面的文章中写过一个经典的型号:21489,这个系列就 ...
- SHARC音频DSP的算法详解(七)Reverb Delay混响和回声效果的实现及代码详解
作者的话 延时是非常常见的一种音频上的算法,而在ADI的SAHRC DSP中,可以很好的去实现,我们来看看是怎么做的. 硬件准备 ADSP-21489EVB:ADI 21489 DSP的开发板 AD- ...
- SHARC音频DSP的算法详解(十二)IIR Comb Filter (IIR 梳状滤波器)算法的实现及代码详解
硬件准备 ADSP-21489EVB:ADI 21489 DSP的开发板 AD-HP530ICE:ADI DSP通用仿真器 软件准备 Visual DSP++ 算法功能 实现反馈延时功能,用于模拟反射 ...
- opencv 高通滤波和低通滤波_一阶低通滤波原理详解
在汽车标定中,使用最多的滤波算法即低通滤波,很多朋友可能知道怎么标定,但是不清楚具体的原理,因此本文将介绍一阶低通滤波的原理.算法建模仿真和优缺点: 一阶滤波算法的原理 一阶滤波,又叫一阶惯性滤波,或 ...
- 一阶低通滤波器方程_一阶低通滤波原理详解
在汽车标定中,使用最多的滤波算法即低通滤波,很多朋友可能知道怎么标定,但是不清楚具体的原理,因此本文将介绍一阶低通滤波的原理.算法建模仿真和优缺点:一阶滤波算法的原理 一阶滤波,又叫一阶惯性滤波,或一 ...
- python低通滤波器_[Python图像处理] 二十三.傅里叶变换之高通滤波和低通滤波
[Python图像处理] 二十三.傅里叶变换之高通滤波和低通滤波 发布时间:2019-04-28 20:35, 浏览次数:2739 , 标签: Python 该系列文章是讲解Python OpenCV ...
- [Python图像处理] 二十三.傅里叶变换之高通滤波和低通滤波
该系列文章是讲解Python OpenCV图像处理知识,前期主要讲解图像入门.OpenCV基础用法,中期讲解图像处理的各种算法,包括图像锐化算子.图像增强技术.图像分割等,后期结合深度学习研究图像识别 ...
- 图像降噪算法——高斯低通滤波
图像降噪算法--高斯低通滤波 图像降噪算法--高斯低通滤波 1. 基本原理 2. C++代码实现 3. 结论 图像降噪算法--高斯低通滤波 1. 基本原理 通过离散傅里叶变换对图像进行滤波流程作非常简 ...
- 单片机ADC采样算法----一阶低通滤波
关于低通滤波,先看一下百度百科上的定义. 算法实现的公式如下: y(n) = q*x(n) + (1-q)*y(n-1) 其中Y(n)为输出,x(n)为输入,y(n-1)为上一次输出值,其中 ...
最新文章
- Builder Design模式和Factory Design模式之间有什么区别?
- nginx配置多个server
- python第二版第六章课后答案_《Python编程》第六章部分课后练习题
- 第八章 PX4-SDlog解析
- mariadb 最新精简压缩版 win64 解压即用
- 三菱fx3uplc恢复出厂设置_三菱fx3uplc解密过程与步骤分享
- ios 旋转屏幕试图切换_iOS增强现实应用(AR)设计指南(上)
- 无线策略服务器,无线网络中的分布式资源管理策略研究
- Python内置函数filter, map, reduce
- 微信支付v3 php 源码,求微信支付wxpayv3服务端完整代码
- ListControl
- rhino编程语言c井,Rhino插件开发:RhinoScript脚本教程(4):VBScript基础
- VS2010中常用的快捷键
- word/wps 实用技巧: 批量改大纲标题样式
- Tableau计算同比和环比任意天数据
- 微信内置浏览器打开所有页面空白解决方案
- c语言编写4个子函数用主函数调用,哪位师傅知道51单片机怎样编写子程序?C语言的。在主程序里调...
- php 正则车架号,正则判断工具类 - 我的开源中国 - OSCHINA - 中文开源技术交流社区...
- 用duilib制作仿QQ2013动态背景登录器
- 使用BULK INSERT高效导入大量数据到SQL Server数据库