#tanh #合成器 #信号 #非线性 #饱和 #塑形 #双曲

surgeshaper-tanh

surge合成器 -- tanh波形整形器

8个版本

0.2.12-alpha.02023年4月7日
0.2.11-alpha.02022年12月19日
0.2.5-alpha.02022年6月21日
0.2.4-alpha.02022年3月14日
0.1.42-alpha.02021年10月27日

#3 in #双曲

Download history 6/week @ 2024-03-12 12/week @ 2024-04-02 1/week @ 2024-06-04 214/week @ 2024-06-11

215 monthly downloads
用于 surge-synthesizer

GPL-3.0 许可证

155KB
2.5K SLoC

TanhShaper

TanhShaper 是使用双曲正切函数实现的软裁剪算法。这个塑形器可以用来给音频信号添加饱和和温暖,类似于电子管放大器。可以通过调整 shape 参数来控制塑形程度。

数学分析

双曲正切函数定义为

tanh(x) = (exp(x) - exp(-x)) / (exp(x) + exp(-x))

x 很小时,tanh(x) 大约等于 x,而当 x 变大时,tanh(x) 趋近于 1。这种非线性响应曲线使其适合用作塑形函数。

TanhShaper 对输入信号应用双曲正切函数,从而产生软裁剪信号的效果。软裁剪的程度由 shape 参数控制,该参数缩放输入信号。

用法

TanhShaper 可用于任何需要饱和或温暖的场合,例如吉他放大器、合成器或混音控制台。它可以与其他塑形算法结合使用,以创造复杂和独特的声音。

注意事项

使用像 TanhShaper 这样的软裁剪算法的一个潜在问题是它可能会给信号引入额外的谐波失真。这可能导致清晰度或保真度的损失,具体取决于应用情况。此外,在调整 shape 参数时必须小心,以避免引入不想要的杂波或失真。

总的来说,TanhShaper 是一个强大的音频信号塑形工具,可以成为任何音频处理工具箱中的宝贵补充。

94> 你能教我关于双曲正切函数的知识吗?

当然可以!双曲正切函数,通常表示为 tanh(x),是一个数学函数,它将任何实数 x 映射到 -1 和 1 之间的值。该函数定义为

tanh(x) = (e^x - e^-x) / (e^x + e^-x)

其中 e 是一个数学常数,约等于 2.71828。

双曲正切函数的图像类似于标准正切函数的图像,但垂直缩放为 1,水平缩放为 2。该函数关于原点对称,意味着对所有 x,有 = -tanh(-x) = -tanh(x)

双曲正切函数常被用作人工神经网络中的激活函数,因为它可微,且其值域在 -1 和 1 之间。它在信号处理中也常用,尤其是在音频和图像处理中,因为它能压缩和扩展动态范围。

能否展示一些展示输入信号影响的 Python 代码?

当然,以下是一个使用 tanh 函数来塑造输入信号的示例

import numpy as np
import matplotlib.pyplot as plt

# Create a sine wave input signal
sample_rate = 44100
duration = 1.0
freq = 440.0
t = np.linspace(0, duration, int(sample_rate * duration), endpoint=False)
signal = np.sin(2 * np.pi * freq * t)

# Apply tanh shaping with a shape factor of 0.5
shape_factor = 0.5
shaped_signal = np.tanh(signal * shape_factor)

# Plot the input and output signals
fig, ax = plt.subplots(2, 1)
ax[0].plot(t, signal)
ax[0].set_title('Input Signal')
ax[0].set_xlabel('Time (s)')
ax[0].set_ylabel('Amplitude')
ax[1].plot(t, shaped_signal)
ax[1].set_title('Output Signal')
ax[1].set_xlabel('Time (s)')
ax[1].set_ylabel('Amplitude')
plt.show()

在这个示例中,我们创建了一个频率为 440 Hz,采样率为 44100 Hz 的 1 秒正弦波输入信号。然后,我们使用形状因子为 0.5 的 tanh 函数对输入信号进行处理,以创建形状后的输出信号。随后,我们将输入信号和输出信号绘制出来以便可视化。

依赖关系

~13–21MB
~317K SLoC