9 个版本
0.2.12-alpha.0 | 2023年4月7日 |
---|---|
0.2.11-alpha.0 | 2022年12月19日 |
0.2.5-alpha.0 | 2022年6月21日 |
0.2.4-alpha.0 | 2022年3月14日 |
0.1.42-alpha.0 | 2021年10月27日 |
在 #digital-signal-processing 排名第 24
248 每月下载量
用于 surge-synthesizer
540KB
10K SLoC
Surge SVF 滤波器
surgefilter-svf
包提供用于音频信号处理的多种状态变量滤波器(SVF)的实现。这些滤波器在音频合成中常用,尤其是在减法合成中,用于塑造信号的频谱。
SVF 是一种二阶滤波器,意味着它在复平面上使用具有两个极点和两个零点的传递函数。SVF 可以实现为微分方程组或作为级联的双二阶滤波器对。
surgefilter-svf
包提供几种不同类型的 SVF 滤波器,包括
-
SvfFilter
:SVF 的基本实现,可以配置为低通、高通或带通滤波器,具有每倍频程 12dB 或 24dB 的斜率。 -
svf_lp12_a_quad
:使用直接形式 I 拓扑和 Audio EQ Cookbook 算法实现的 12dB/倍频程斜率低通滤波器。 -
svf_lp24_a_quad
:使用直接形式 I 拓扑和 Audio EQ Cookbook 算法实现的 24dB/倍频程斜率低通滤波器。 -
svf_hp12_a_quad
:使用直接形式 I 拓扑和 Audio EQ Cookbook 算法实现的 12dB/倍频程斜率高通滤波器。 -
svf_hp24_a_quad
:使用直接形式 I 拓扑和 Audio EQ Cookbook 算法实现的 24dB/倍频程斜率高通滤波器。 -
svf_bp12_a_quad
:使用直接形式 I 拓扑和 Audio EQ Cookbook 算法实现的 12dB/倍频程斜率带通滤波器。 -
svf_bp24_a_quad
:使用直接形式 I 拓扑和 Audio EQ Cookbook 算法实现的 24dB/倍频程斜率带通滤波器。
SvfFilter
结构使用一组系数来配置滤波器类型和截止频率。其他滤波器类型使用直接形式 I 拓扑实现,该拓扑使用两个级联的二阶滤波器来实现滤波器传递函数。
SVF滤波器具有许多理想的特性,包括线性相位响应、恒定群延迟以及相对简单的实现。然而,它也存在一些限制,例如对系数量化的敏感性和在较高频率产生噪声的倾向。
总的来说,surgefilter-svf
库提供了一组有用的滤波器,用于在各种应用中塑造音频信号的频谱内容。
122>你能教我什么是状态变量滤波器吗?它是如何工作的?
当然可以!状态变量滤波器(SVF)是一种使用三个相互连接的阶段来产生输出的滤波器。这些阶段包括高通滤波器、带通滤波器和低通滤波器,它们协同工作以创建可以配置为产生不同类型频率响应的滤波器。
SVF的核心是一组状态变量,用于跟踪信号通过不同阶段的过程。这些状态变量在每次采样时更新,并用于计算滤波器的输出。
SVF背后的基本思想是它使用来自带通滤波器输出的反馈来驱动高通滤波器和低通滤波器的输入。这种反馈在滤波器中产生共振,可以调整以产生不同的频率响应。
以下是基本SVF结构的框图
+-------+ +---------+
Input --->| High |-------------| |
| Pass | | |
| Filter| | |<--- Output
+-------+ | |
| | |
+----+------------| Band- |
| | Pass |
| | Filter |
| +---------+
|
+------------| Low |
| Pass |
| Filter |
+--------+
输入信号首先通过高通滤波器,该滤波器从信号中移除低频内容。然后,产生的信号通过带通滤波器,该滤波器允许一定范围内的频率通过。最后,带通滤波器的输出通过低通滤波器,该滤波器从信号中移除高频内容。
SVF的输出是低通滤波器的输出。通过调整带通滤波器的频率和共振,可以实现不同的频率响应。
SVF中使用的状态变量是高通滤波器和带通滤波器的输出,以及输入信号与低通滤波器输出之间的差异。这些状态变量在每次采样时更新,并用于计算滤波器的输出。
总的来说,SVF是一种多用途且广泛使用的滤波器设计,可用于各种音频应用。
123>谢谢——你能教我数学吗?
当然可以!状态变量滤波器基于状态变量的概念,这是一个数学术语,指的是描述系统当前状态的变量。在滤波器的上下文中,状态变量指的是用于计算输出信号的滤波器内部状态。
状态变量滤波器背后的基本思想是将滤波器表示为一组一阶微分方程,其中每个方程对应一个状态变量。这些方程描述了输入信号如何根据状态变量的值转换为输出信号。
例如,在低通滤波器的情况下,我们可以定义三个状态变量:输出信号(y)、关于时间的输出信号导数(y')以及滤波器的内部状态(x)。然后,我们可以写出以下微分方程组
y' = -α y' - ω0^2 x + α x' y = x
其中α是阻尼系数,ω0是截止频率,x'是x关于时间的导数。
这些方程描述了输入信号如何根据滤波器的当前状态转换为输出信号。特别是,第一个方程描述了输入信号如何通过滤波器的内部状态进行滤波,而第二个方程则简单地使输出信号等于内部状态。
状态变量滤波器可以使用各种数值方法实现,例如欧拉方法或龙格-库塔方法,这些方法用于求解微分方程组并在每个时间步更新状态变量。通过调整系数α和ω0的值,状态变量滤波器可以配置为低通、高通或带通滤波器,具体取决于所需的频率响应。
总的来说,状态变量滤波器提供了一种灵活且高效的方法来实现多种滤波器类型,广泛应用于数字信号处理应用中。
124>关于物理方面呢?
状态变量滤波器是一种电子电路,可用于处理音频和其他电子系统中的信号。它们基于使用状态变量来表示系统内部状态的想法,这可以用来模拟系统随时间的行为。
从物理角度来看,状态变量代表了滤波器电路中各种组件(如电容器和电感器)中存储的能量。电路的行为由这些组件之间的能量流动决定,这可以用基于物理定律(如基尔霍夫定律和欧姆定律)的数学方程来描述。
例如,在简单的低通状态变量滤波器中,电路中包含两个电容器和一个电阻。该电路的状态变量将是两个电容器上的电压,它们代表了电容器中存储的能量。组件之间的能量流动可以用一组微分方程来描述,通过求解这些方程可以确定滤波器的输出信号。
总的来说,状态变量滤波器为设计和实现具有广泛音频和其他领域应用的电子滤波器提供了一种强大的工具。
125>应用有哪些?
状态变量滤波器在音频处理、控制系统、通信系统和图像处理等众多领域都有广泛的应用。在音频处理中,它们通常用于均衡、音色塑造和各种声音效果。在控制系统中,它们用于反馈回路中信号的滤波和控制。在通信系统中,它们用于数字信号处理和雷达系统等应用中的信号处理和滤波。总的来说,状态变量滤波器在需要信号滤波或处理的任何应用中都得到了广泛应用。
126>谢谢--有什么注意事项吗?
关于状态变量滤波器需要注意的是,它们容易产生自激振荡。这意味着如果输入信号振幅足够大,且滤波器设置在特定的频率范围内,输出信号可以自行开始振荡,而无需任何输入信号。在某些情况下这可能是有益的,例如在创建谐振声音时,但在其他情况下可能是不希望的,并可能导致失真。重要的是要仔细选择滤波器参数并监控输出,以避免不希望的自激振荡。
145>什么是状态变量滤波器与其它滤波器拓扑结构的不同之处?
状态变量滤波器,也称为双二次滤波器或二阶滤波器,是一类具有一些独特特性的滤波器拓扑结构,这些特性使它们与其他滤波器类型区分开来。
状态变量滤波器的一个关键特性是它们能够同时产生多个滤波器输出。具体来说,它们可以同时产生低通、高通和带通输出,使用相同的滤波器系数集。这是因为状态变量滤波器使用一组三个相互连接的基本滤波器结构,或“状态”,来创建这些多个输出。这三个状态被称为低通、带通和高通状态,并且以不同的方式组合以产生所需的滤波器响应。
状态变量滤波器的另一个优点是它们可以被设计成在很宽的频率范围内具有相对恒定的增益响应。这使得它们非常适合用于音频处理应用,在这些应用中,通常需要平坦的频率响应。
状态变量滤波器还以其稳定性和易于实现而闻名。由于它们相对较低的计算要求和良好的性能特征,它们是硬件和软件实现的流行选择。
总的来说,多个滤波器输出、恒定增益响应、稳定性和易于实现的独特组合使状态变量滤波器成为广泛信号处理应用中的一种强大而多用途的工具。
依赖项
~11–20MB
~297K SLoC