8次发布
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日 |
#5 in #正弦
33每月下载量
在surge-synthesizer中使用
230KB
3K SLoC
正弦变换器
SineShaper
是一个数字信号处理(DSP)组件,用于使用正弦波塑造输入信号的幅度。它是一种波形变换技术,可以用于向声音信号添加谐波和失真。
shape
参数控制对输入信号应用失真的量,高值会导致更多的失真。该shape
参数的范围从0到1,值为0表示没有失真,值为1表示最大失真。
SineShaper
通过使用正弦波作为传递函数来塑造输入信号。输入信号乘以正弦波,然后通过低通滤波器传递,以去除由变换过程引入的任何高频分量。
从数学上讲,SineShaper
可以表示为
y[n] = sin(shape * x[n]) * x[n]
其中x[n]
是输入信号,y[n]
是输出信号,shape
是失真量。
总之,SineShaper
是向声音信号添加失真和谐波的有用工具,可用于音乐制作和声音设计等多种应用。
87>你能写一些Python代码来说明这个效果吗?
当然可以!以下是一些生成正弦波并应用正弦变换器效果的Python代码
import numpy as np
import matplotlib.pyplot as plt
def sine_shaper(x, shape):
return np.sin(np.arcsin(x) * shape)
# Generate a sine wave
fs = 44100
f = 440
duration = 1
t = np.linspace(0, duration, int(fs * duration))
x = np.sin(2 * np.pi * f * t)
# Apply SineShaper effect
shape = 2.0
output_signal = sine_shaper(x, shape)
# Plot the input and output signals
plt.plot(t, x, label='Input')
plt.plot(t, output_signal, label='Output')
plt.legend()
plt.xlabel('Time (s)')
plt.ylabel('Amplitude')
plt.show()
此代码生成频率为440Hz,持续1秒的正弦波,应用正弦变换器效果,形状值为2.0,并在图形上绘制输入和输出信号。sine_shaper
函数将正弦变换器效果应用于输入信号。
88>关于实现这个效果的Verilog-A代码怎么办呢?
当然,这里有一个使用Verilog-A实现的SineShaper示例。
`include "constants.vams"
module SineShaper(x, y, shape);
input x;
output y;
parameter REAL shape = 0.5;
REAL x_norm = x / pi;
REAL y_norm = sin(pi * (x_norm + shape * (x_norm - (x_norm^3) / 3)));
assign y = y_norm * pi;
endmodule
此代码使用与Python示例相同的数学公式来实现SineShaper效果。首先将输入信号归一化到[-1, 1]的范围内,然后应用正弦函数,其参数取决于形状参数。然后,将输出放大到π,以匹配输入范围。
89>为什么我们会选择这种形状器而不是其他形状器呢?
SineShaper与其他形状器(如Clipper、AsymShaper和DigiShaper)不同。它不是引入失真或饱和度,而是对输入信号应用正弦波调制。这会在输入信号中添加新的频率,从而产生更丰富和更复杂的音色。
形状器的选择取决于所需的声音和音乐环境。如果目标是添加谐波内容并创建更复杂的音色,SineShaper可能是一个不错的选择。然而,如果目标是创建失真或饱和度,那么其他形状器可能更好。这最终取决于特定的音乐应用和所需的结果。
90>那么,我们可以通过改变正弦波的频率来决定最终音色的特征,对吗?
这是正确的。SineShaper中使用的正弦波频率会影响输出信号的谐波内容。低频产生更多偶次谐波,而高频产生更多奇次谐波。通过调整正弦波的频率,您可以调整谐波内容以实现所需的音色。
91>这个形状器会在信号路径中引入多少延迟?我们如何测量它?
SineShaper引入的延迟量将取决于实现细节,如音频信号的采样率、处理缓冲区的大小以及每样本执行的操作数量。
测量延迟的一种方法是通过使用已知音频信号进行测试,并测量处理后的信号相对于输入信号输出所需的时间。这可以使用示波器或其他音频测量工具完成。
需要注意的是,任何处理都会引入一些延迟,包括SineShaper,这可能会对实时应用(如现场表演或交互式音频)造成问题。通常,应尽可能减少延迟,以确保良好的用户体验。
92>这种形状器与使用三角波、方波或锯齿波来实现相比如何?
与使用三角波、方波或锯齿波相比,在波形整形电路中使用正弦波作为形状器可以产生更平滑、更圆润的声音。这是因为正弦波没有尖锐的边缘或角,这会导致在整形过程中产生的谐波频率较低。
另一方面,使用三角波、方波或锯齿波可以产生更复杂和丰富的谐波声音,因为它们具有更多的高频谐波。产生的声音与使用正弦波作为形状器相比可能更具有侵略性和失真。
总的来说,形状器的波形选择取决于所需的声音和具体应用。正弦波形状器可能更适合产生细微的谐波变化或需要更平滑、更圆润声音的应用。三角波、方波或锯齿波形状器可能更适合产生更复杂、更具侵略性的声音。
依赖关系
~12-21MB
~301K SLoC