向信号中添加奇/偶谐波?


12

如何将奇数或偶数谐波添加到浮点信号?

我是否必须使用tanh或sin?

我正在尝试实现一些非常简单的失真效果,但是我很难找到确切的参考。我想要的是类似于文化秃鹰所做的事情,在其五极管和三极管设置中添加了奇数和偶数谐波。浮点值是样本流中的单个样本。


3
为什么要添加谐波?您要完成什么?您正在处理哪种信号?
Jim Clay

我正在尝试实现一些非常简单的失真效果,但是我很难找到确切的参考。我想要的是与文化秃鹰相似的东西,在五极管和三极管设置中添加奇偶谐波,浮点值是样本流中的单个样本。
卡洛斯·巴博萨

1
@CarlosBarbosa您应从问题的注释中编辑该信息。提供详细信息-问题对于社区而言越有趣,您可以期望得到的答案就越多,质量也就越高。
penelope

为什么奇数谐波比电源系统上的偶数谐波更具危险性

Answers:


17

失真框的作用是将非线性传递函数应用于信号:output = function(input)y = f(x)。您只是将相同的功能应用于每个单独的输入样本以获取相应的输出样本。

当您的输入信号为正弦波时,会产生一种特定类型的失真,称为谐波失真。失真产生的所有新音调都是输入信号的完美谐波:

  • 如果传递函数具有奇对称性(可以绕原点旋转180°),则它将仅产生奇次谐波(1f,3f,5f等)。具有奇数对称性的系统的一个示例是对称削波放大器。
  • 如果您的传递函数具有偶数对称性(可以在Y轴上反映),则生成的谐波将仅为偶数阶谐波(0f,2f,4f,6f等)。基波1f是奇次谐波,并且被删除。具有均匀对称性的系统的一个示例是全波整流器。

所以是的,如果您想添加奇次谐波,请通过奇对称传递函数(例如y = tanh(x)或)放置信号y = x^3

如果只想添加偶次谐波,请通过偶数对称的传递函数加一个标识函数来放置信号,以保持原始基波。像y = x + x^4y = x + abs(x)。该x +保留,否则将被破坏的根本,而x^4为偶数对称的,只能产生偶次谐波(包括DC,这你可能要与高通滤波器后删除)。

甚至对称:

具有均匀对称性的传递函数:

y = x ^ 6传递函数

原始信号为灰色,失真的信号为蓝色,失真的频谱仅显示均匀的谐波,没有基波:

y = x ^ 6光谱

奇数对称性:

具有奇对称性的传递函数:

y = x ^ 7传递函数

原始信号为灰色,失真的信号为蓝色,失真的频谱仅显示奇次谐波,包括基波:

y = x ^ 7光谱

甚至对称+基本:

具有均匀对称性的传递函数加上身份函数:

y = x + x ^ 4传递函数

原始信号为灰色,失真的信号为蓝色,失真的频谱显示均匀的谐波和基波:

y = x + x ^ 4光谱

这就是人们所说的失真盒“增加了奇次谐波”的意思,但这并不是很准确。问题在于谐波失真仅存在于正弦波输入中。大多数人演奏乐器,而不是正弦波,因此他们的输入信号具有多个正弦波分量。在这种情况下,您将得到互调失真,而不是谐波失真,并且关于奇数和偶数谐波的这些规则将不再适用。例如,对以下信号应用全波整流器(甚至对称):

  • 正弦波(仅适用于基本奇次谐波)→全波整流正弦波(仅适用于偶数谐波)
  • 方波(仅奇次谐波)→DC(仅偶数0次谐波)
  • 锯齿波(奇次和偶次谐波)→三角波(仅奇次谐波)
  • 三角波(仅奇次谐波)→2×三角波(仅奇次谐波)

因此,输出频谱在很大程度上取决于输入信号,而不是失真设备,每当有人说“ 我们的放大器/效果器产生更具音乐性的偶次谐波 ”时,您都应该带着一粒盐

(声称具有偶数谐波的声音比仅具有奇次谐波的声音“更具音乐性”,这是有道理的,但是如上所述,实际上并未在此处产生这些频谱,并且该主张仅在以下情况下有效:无论如何,都是西方音阶。在Bohlen-Pierce音乐音阶上,基于3:1的比例而不是2:1的八度音阶,谐音(方波,单簧管等)更谐调。

要记住的另一件事是,数字非线性过程会导致混叠,这可能很难听到。请参阅是否存在带限非线性失真之类的东西?


请注意,此处的示例函数使数学易于理解,但通常不用于音频方面。例如,对于x ^ 7,您增加增益的幅度越大,信号失真就越
endolith

8

您试图实现的目标称为失真。当您要向给定信号添加一些谐波时使用此技术。您有2种基本方法可以做到这一点:波动和振铃调制。我将首先解释一下。

波形整形

波形整形允许您通过使用特殊选择的功能来使失真。Chebyshev多项式是一种有用的方法。当通过它们归档具有单位振幅的谐波信号(例如正弦波)时,它们具有非常重要的性质,我们获得的信号相同,只是高出几倍。倍频将取决于多项式的阶数。所有多项式如下所示:

 y=f(x)=d0+d1x+d2x2+d3x3++dNxN;

在我们的例子中,每个元素都产生一个口琴,然后它们全部加起来。每个成员的视图由以下递归关系确定:

Tk+1(x)=2xTk(x)Tk1(x);

其中,每个成员都是根据前一个成员确定的,所有成员均以零开头,在我们的示例中,该成员等于1,第一个成员等于x(当然也可以更改)

T0(x)=1;

T1(x)=x;

了解了它们,您可以确定第三和第四位:

T2(x)=2xx1=2x21;

T3(x)=2x(2x21)x=4x33x;

您可能会猜到,第二项是第一次谐波,第三项是第二谐波,依此类推。

切比雪夫多项式的另一个特征是,当通过它们给出幅度小于单位的信号时,输出的谐波声音饱和度较小。这样可以产生过载效果。

毕竟,您的信号是一个浮点数组,您可以选择数组的任何部分并将其应用于Chebyshev多项式,这将产生更多的谐波。并且使用函数就足够了。sin


很好的答案,在这里学到了一些东西。但是,我不同意您对术语转移函数的使用。它的通用定义是线性时不变系统在频域中的输出与输入的关系。您的系统是非线性的。我宁愿称其为特征或仅在此处起作用
迪夫

@戴夫谢谢。是的,确实我使用了不正确的术语,只是功能足够好。我当时想写线性系统的例子,但是它很简单,所以术语一直留在我的思想中
sigrlami 2012年

哇,尽管如此,我还是要阅读所有这些东西,谢谢,尽管如此,还是有机会使用一些示例C代码吗?再次感谢
Carlos Barbosa 2012年

您,等式与原始方程的精确关系吗?...T0(x)T1(x)y
Spacey 2012年

@Mohammad它们并不完全相关,如果主题启动器不知道,这只是多项式函数的简单描述。
sigrlami 2012年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.