“数字信号处理技术受到严密保护,并被保密,因为它们对多媒体内容具有有价值的应用。无限脉冲响应(“IIR”)滤波的黑魔法一直处于保密状态,几乎没有公开的源代码。 ..到目前为止。”
![](https://github.com/vinniefalco/vinniefalco.github.com/raw/master/images/DownloadNow.png)
该库以 Sophocles Orfanidis、Andreas Antoniou、Martin Holters 和 Udo Zolzer 等备受尊敬的杰出人物的工作为基础,利用 C++ 模板的强大功能来解决数字信号处理中的一个有用问题:实现任意阶和具有各种属性的规定规范,例如巴特沃斯、切比雪夫、椭圆和 Optimum-L (Legendre) 响应。该库是根据 MIT 许可证提供的,因此与专有用途完全兼容。
类被设计为独立的可重用构建块。使用部分或全部提供的功能,或者通过编写插入到强大框架中的自己的对象来扩展功能。只有您需要的代码才会链接到您的应用程序中。以下是功能列表:
- 专注于 IIR 滤波器而不是无聊的 FIR 滤波器
- 完整实现所有“RBJ Biquad”Cookbook 滤波器公式
- 巴特沃斯、切比雪夫、椭圆、贝塞尔、勒让德设计
- 低通、高通、带通、带阻变换
- 大多数类型的低、高和带架滤波器实现
- 滤波器设置、极点/零点和双二阶系数的平滑插值,以实现无缝参数更改
- 使用极点和零点表示数字滤波器
- 使用 Direct Form I、Direct Form II 或用户提供的类实现
- 完全分解以最大限度地减少模板实例化
- “设计”层提供对过滤器的运行时自省
- 用于操作样本数据缓冲区的实用模板函数
- 无需调用 malloc 或 new,非常适合嵌入式系统
- 没有外部依赖,只有标准 C++ 库!
使用这些过滤器很简单:
// Create a Chebyshev type I Band Stop filter of order 3
// with state for processing 2 channels of audio.
Dsp::SimpleFilter <Dsp::ChebyshevI::BandStop <3>, 2> f;
f.setup (3, // order
44100,// sample rate
4000, // center frequency
880, // band width
1); // ripple dB
f.process (numSamples, arrayOfChannels);
随附的演示程序通过使用单独许可的 Juce 应用程序框架(随附)在大多数流行平台上运行,练习该库的所有功能,包括以下功能:
- 动态界面使用过滤器自省功能创建自身
- 实时应用所选过滤器的音频播放
- 实时拉伸和幅度调制,无咔嗒声或爆音
- 显示幅度、相位响应和极点/零点位置的图表
- 音频应用程序的线程安全“最佳实践”
这是提供的 DSP Filters 演示应用程序,它演示了该库的功能并使用 Juce 应用程序框架在所有流行平台上运行:
如果您一直在互联网上徒劳地搜索一些用于实现高阶滤波器的源代码,那么就不用再寻找了,因为就是这样!无论您是 C++ 或数字信号处理专业的学生、音频插件编写者,甚至是 VST 合成器编码员,“用于数字信号处理的有用 C++ 类集合”都可能适合您!
DSP 滤波器官方论坛
http:https://www.kvraudio.com/forum/viewtopic.php?t=249926
DSP 和音频插件讨论论坛
http:https://www.kvraudio.com/forum/viewforum.php?f=33
Juce官方论坛
http:https://www.rawmaterialsoftware.com/index.php
Juce官方网站
http:https://www.rawmaterialsoftware.com
DSP 滤波器库和 DSP 演示应用程序版权所有 (c) 2009,作者:
Vinnie Falco源代码根据MIT 许可证
提供
Juce库由Raw Material Software单独授权。