ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

用c++设计音效插件 :9 DSP滤波器是如何工作的(没有复杂的数学)

2022-06-19 10:34:48  阅读:143  来源: 互联网

标签:滤波器 插件 相位 正弦波 DSP 相移 音效 频率 9.1


DSP滤波器理论涉及到复数代数,也就是涉及到复数的代数。 复数包含实部和虚部。与其简单地把一堆方程和代数扔给你,我更愿意从检查、刺激和测试一个DSP滤波器的方法开始,轻松地了解这个理论,而不用复杂的数学。我们还可以通过在这个过程中收集的数据来预测其频率和相位响应。这个方法只需要一些表格的记账。你通过表格洗刷音频样本的方式最终将对应于你最终需要编写的C++代码,使这个过程更容易理解。我们已经用复杂的数学换取了一些跟踪修改后的音频样本值的乏味。为了消除这种单调,我们将从一个更高的层次来处理这个问题,并应用一些数学概念来获得同样的结果,但不需要跟踪一堆音频样本。

9.1 频率和相位响应图

频率响应图显示了一个滤波器是如何改变信号的频率内容的。在X轴上画出频率,在Y轴上画出频率的相对输出幅值。X轴通常以对数形式绘制,Y轴通常以dB形式绘制。让我们考虑一下所有滤波器中最基本的滤波器--低通滤波器(LPF),它允许低频通过,同时衰减高频。图9.1a和c显示了两个LPF的频率响应,每个都有相同的截止频率(fc = 500 Hz)。这个频率也被称为-3dB频率,因为滤波器将这个频率成分衰减为-3dB。截止频率fc表示通带(低于它的频率)和止带(高于它的频率)。图9.1a和图9.1c之间唯一真正的区别是截止频率以上的曲线斜率,称为滚降,图9.1c中的滤波器比图9.1a的滚降更陡峭。我们以dB/倍频程(或有时以dB/十年)来描述滚降的特点,其中一个倍频程代表频率的两倍,而十年代表频率的10倍增长。一个滚降斜率为-6dB/倍频程的LPF被称为一阶滤波器,一个滚降为-12dB/倍频程的LPF被称为二阶滤波器。我们稍后会担心这个命名规则是怎么来的。

频响图在某种程度上是直观的,因为它向我们展示了不同频率在滤波器中的增益或衰减,而图9.1b和d中的相位响应图就不那么容易掌握了。这些图显示的是通过滤波器的相移。这两张图的唯一区别是不同频率在通过滤波器时遇到的相移量。但这到底是什么意思?频率是如何在数字滤波器中被放大、衰减或相移的?这些都是我将在接下来的几节中回答的问题(不需要复杂的数学运算)。

图9.1:(a)一阶滤波器的频率响应。(b) 一阶滤波器的相位响应。(c) 二阶滤波器的频率。(d) 二阶滤波器的相位响应。在这两种情况下,截止频率fc=500Hz。

9.2 滤波的频率和相位调整

考虑一个进入滤波器的音频波形。傅里叶表明,一个连续的波形可以被分解成一组具有不同频率和振幅的正弦波(这被称为傅里叶分解)。这意味着复杂的时域信号可以被认为是正弦波成分的总和。当这些正弦波重新加在一起时(称为傅里叶再合成),就可以得到原始波形。图9.2显示了一个正在运行的滤波器。输入被分解成四个正弦波、一个基波和三个谐波。分量的峰值振幅显示在Y轴左边的暗条上。为了简单起见,我们选择输入信号为四个正弦波的组合,这些正弦波具有相同的振幅,并且在时间t=0时从0.0开始,因此它们具有相同的零度起始相位。我们可以观察到以下情况。

输入的波形被平滑化了,不那么 "颠簸 "了。
最低频率的分量(称为基频)从滤波器出来时,其振幅和相移与进入滤波器时相同。
三次谐波的振幅越来越小,相移也越来越大,因为它们的频率越来越高。
图9.3显示了同一个滤波器的不同信息:这里的振幅和相位是针对频率绘制的,而不是一组时域正弦波。你可以从输出频率响应图中看到,这个滤波器是一种低通滤波器。其曲线与图9.1a相似。

图9.2:一个音频波形被滤波成一个平滑的输出;输入和输出被分解成它们的傅里叶成分,以显示每个频率在通过滤波器处理时遇到的相对振幅和相位偏移。

图9.3:图9.2的相同信息被绘制成频率和相位响应曲线。

9.3 一阶前馈滤波器

在上一章中,我介绍了一个简单的滤波器,展示了一个由系数、和值和存储寄存器组成的DSP构件的例子。我们将在本章的大部分时间里分析这个滤波器,所以让我们看看输入信号x(n)是如何通过滤波器变成输出y(n)的。图9.4a显示了这个滤波器以及电路中各个节点的采样值。输入的样本是x(n),标记为z-1的存储寄存器的输出是x(n - 1),这是在我们观察之前的一个样本期输入到滤波器的。

如果你一路追踪信号路径,把两个夏天的输入加在一起,你就会得到公式9.1所示的滤波器的差分方程。

标签:滤波器,插件,相位,正弦波,DSP,相移,音效,频率,9.1
来源: https://www.cnblogs.com/pencilCool/p/16390039.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有