如何将奇数或偶数谐波添加到浮点信号?
我是否必须使用tanh或sin?
我正在尝试实现一些非常简单的失真效果,但是我很难找到确切的参考。我想要的是类似于文化秃鹰所做的事情,在其五极管和三极管设置中添加了奇数和偶数谐波。浮点值是样本流中的单个样本。
如何将奇数或偶数谐波添加到浮点信号?
我是否必须使用tanh或sin?
我正在尝试实现一些非常简单的失真效果,但是我很难找到确切的参考。我想要的是类似于文化秃鹰所做的事情,在其五极管和三极管设置中添加了奇数和偶数谐波。浮点值是样本流中的单个样本。
Answers:
失真框的作用是将非线性传递函数应用于信号:output = function(input)
或y = f(x)
。您只是将相同的功能应用于每个单独的输入样本以获取相应的输出样本。
当您的输入信号为正弦波时,会产生一种特定类型的失真,称为谐波失真。失真产生的所有新音调都是输入信号的完美谐波:
所以是的,如果您想添加奇次谐波,请通过奇对称传递函数(例如y = tanh(x)
或)放置信号y = x^3
。
如果只想添加偶次谐波,请通过偶数对称的传递函数加一个标识函数来放置信号,以保持原始基波。像y = x + x^4
或y = x + abs(x)
。该x +
保留,否则将被破坏的根本,而x^4
为偶数对称的,只能产生偶次谐波(包括DC,这你可能要与高通滤波器后删除)。
甚至对称:
具有均匀对称性的传递函数:
原始信号为灰色,失真的信号为蓝色,失真的频谱仅显示均匀的谐波,没有基波:
奇数对称性:
具有奇对称性的传递函数:
原始信号为灰色,失真的信号为蓝色,失真的频谱仅显示奇次谐波,包括基波:
甚至对称+基本:
具有均匀对称性的传递函数加上身份函数:
原始信号为灰色,失真的信号为蓝色,失真的频谱显示均匀的谐波和基波:
这就是人们所说的失真盒“增加了奇次谐波”的意思,但这并不是很准确。问题在于谐波失真仅存在于正弦波输入中。大多数人演奏乐器,而不是正弦波,因此他们的输入信号具有多个正弦波分量。在这种情况下,您将得到互调失真,而不是谐波失真,并且关于奇数和偶数谐波的这些规则将不再适用。例如,对以下信号应用全波整流器(甚至对称):
因此,输出频谱在很大程度上取决于输入信号,而不是失真设备,每当有人说“ 我们的放大器/效果器产生更具音乐性的偶次谐波 ”时,您都应该带着一粒盐。
(声称具有偶数谐波的声音比仅具有奇次谐波的声音“更具音乐性”,这是有道理的,但是如上所述,实际上并未在此处产生这些频谱,并且该主张仅在以下情况下有效:无论如何,都是西方音阶。在Bohlen-Pierce音乐音阶上,基于3:1的比例而不是2:1的八度音阶,谐音(方波,单簧管等)更谐调。
要记住的另一件事是,数字非线性过程会导致混叠,这可能很难听到。请参阅是否存在带限非线性失真之类的东西?
您试图实现的目标称为失真。当您要向给定信号添加一些谐波时使用此技术。您有2种基本方法可以做到这一点:波动和振铃调制。我将首先解释一下。
波形整形允许您通过使用特殊选择的功能来使失真。Chebyshev多项式是一种有用的方法。当通过它们归档具有单位振幅的谐波信号(例如正弦波)时,它们具有非常重要的性质,我们获得的信号相同,只是高出几倍。倍频将取决于多项式的阶数。所有多项式如下所示:
在我们的例子中,每个元素都产生一个口琴,然后它们全部加起来。每个成员的视图由以下递归关系确定:
其中,每个成员都是根据前一个成员确定的,所有成员均以零开头,在我们的示例中,该成员等于1,第一个成员等于x(当然也可以更改)
了解了它们,您可以确定第三和第四位:
您可能会猜到,第二项是第一次谐波,第三项是第二谐波,依此类推。
切比雪夫多项式的另一个特征是,当通过它们给出幅度小于单位的信号时,输出的谐波声音饱和度较小。这样可以产生过载效果。
毕竟,您的信号是一个浮点数组,您可以选择数组的任何部分并将其应用于Chebyshev多项式,这将产生更多的谐波。并且使用函数就足够了。