14个版本
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日 |
#2 in #distortion
1MB
14K SLoC
Surge合成器的扭曲效果
surgefx-distortion
crate提供了一种扭曲效果,作为Surge合成器系统的子组件。扭曲是一种流行的音频效果,通过向输入信号引入非线性和谐波,改变声音,通常会产生更温暖、更厚或更具侵略性的音色。
此crate提供的主体结构是Distortion
,负责处理和管理扭曲效果。Distortion
结构有几个与其操作相关的方法和字段,包括
- control_group
- control_type
- default_value
- max_value
- min_value
- modulateable
- moverate
- value_type
- handle_streaming_mismatches
- coeff_instantize_all_lp
- maybe_update
- update
- update_all_bands
- update_all_lp
- update_band1
- update_band2
- update_drive
- update_outgain
- update_post_hc
- update_pre_hc
- zero_drives
- get_waveshape_idx
- denormalizer
- do_denormalize_channels
- do_distortion_block
- do_feedback_channels
- do_waveshape_channels
- set_wetblock
- distortion_smoke
- init
- process
- process_band1
- process_band2
- process_blocks
- process_drive
- process_halfrate
- process_outgain
扭曲效果通常通过将非线性传递函数应用于输入信号来实现,这引入了谐波失真并改变了信号的波形。常见的扭曲类型包括
-
削波:硬削波或软削波为输入信号的幅度引入尖锐或平滑的截止,导致波形呈方形或圆形。硬削波的传递函数可以表示为
y = min(max(x, -A), A)
,其中x
是输入信号,y
是输出信号,而A
是削波阈值。 -
过载:过载模拟了模拟放大器的非线性行为,产生平滑、逐渐的失真。过载的传递函数可以使用多项式近似、Sigmoid函数或其他表现非线性行为的平滑函数来表示。
-
波形整形:波形整形涉及对输入信号应用自定义传递函数,从而实现更富有创造性和多样化的失真效果。传递函数可以定义为数学方程或使用查找表定义的分段函数。
Distortion
结构提供了配置和处理的失真效果的方法,例如调整驱动级别、使用预和高切滤波器均衡输入信号以及应用各种波形整形技术。通过结合这些特性,surgefx-distortion
库为 Surge 合成器系统提供了一个灵活且强大的失真效果。
请注意,此描述假定了一个基于所提供令牌的典型失真效果。您特定实现的实际功能可能会有所不同,因此请根据需要调整描述,以准确地反映您的实现。
16>你能展示一些失真管道的不同变体吗?有哪些块图?
当然!以下是一些不同的失真管道变体,每个都有自己的块图
- 基本失真管道:
Input Signal → [Pre-Gain] → [Transfer Function] → [Output Gain] → Output Signal
在这个简单的管道中,首先使用预增益阶段放大或衰减输入信号。然后,将信号通过非线性传递函数进行处理,以应用所需的失真效果。最后,输出增益阶段调整失真信号的总体水平,然后将其发送到输出。
- 带预和后均衡的失真:
Input Signal → [Pre-EQ] → [Pre-Gain] → [Transfer Function] → [Output Gain] → [Post-EQ] → Output Signal
此管道在基本失真管道中添加了预和后均衡阶段。预-EQ 阶段允许在应用失真之前塑造输入信号的频率响应,而后-EQ 阶段调整失真信号的频率响应。这些均衡阶段可以使用各种滤波器类型(例如,低通、高通、带通等)来实现,以创建更定制的失真效果。
- 多频带失真:
Input Signal → [Crossover] → [Distortion (Low)] → [Sum] → Output Signal
↳ [Distortion (Mid)] →
↳ [Distortion (High)] →
在多频带失真管道中,首先使用交叉网络将输入信号分成多个频带。然后,每个频带通过自己的失真管道进行处理,该管道包括预增益、传递函数和输出增益阶段。最后,将来自每个频带的失真信号相加,以创建输出信号。这种方法允许独立控制每个频带的失真特性,从而产生更灵活和精确的效果。
- 带反馈的失真:
┌─────────────────────────────┐
│ ↓
Input Signal → [Pre-Gain] → [Transfer Function] → [Output Gain] → Output Signal
↑
└───────────────────────┘
此管道在基本失真管道中添加了一个反馈回路。传递函数的输出被送回到预增益阶段的输入,从而产生更复杂和动态的失真效果。可以通过反馈增益或混合控制来控制反馈量,从而调整反馈效果的强度。
这些只是失真管道变体的几个例子。您可以将这些阶段组合和修改,以创建符合您特定需求和所需音色特性的自定义失真管道。
17> 我们如何知道失真是“好的失真”而不是降质呢?
判断失真是“好”还是“坏”取决于语境和听者的主观喜好。一般来说,好的失真通常被感知为为声音增添了温暖、个性或音乐性,而坏的失真通常与不想要的杂波或音频信号的降质相关。
在评估失真效果的质量时,以下是一些需要考虑的因素:
-
谐波内容:好的失真通常会产生与输入信号音乐相关的谐波,例如基频的整数倍(例如,偶数或奇数谐波)。这些谐波可以增强声音的音色丰富度。相反,坏的失真可能会产生不和谐的或不协调的谐波,这可能会使声音刺耳或令人不快。
-
动态:好的失真可以增加声音的持续或压缩,这可以使声音更加一致和平衡。然而,过度的压缩或限制可能会导致动态范围的损失,并产生“压扁”的声音,这可能会被认为是不可取的。
-
频率响应:好的失真可能会强调某些频率范围,例如提升低中音以获得温暖或提升高中音以获得存在感。坏的失真可能会导致不均匀或不可预测的频率响应,这可能导致清晰度降低或声音混浊。
-
透明度:好的失真可以是透明且自然的,这意味着在微妙地应用时不会引入明显的杂波或色彩。另一方面,坏的失真可能会在低水平下产生可听见的杂波或“处理”过的声音。
-
多变性:高质量的失真效果应提供一系列音色特征和失真类型,以满足不同的音乐风格和应用。有限或不灵活的失真效果可能不适合广泛的声音或流派。
需要注意的是,对好坏失真的感知是主观的,并且可能因听者、音乐背景和被处理的具体声音而异。在某些情况下,在一种语境中可能被认为是不理想的失真效果,在另一种语境中可能却是可取的。例如,一个严重失真的电吉他声音可能非常适合摇滚或金属曲目,但在爵士乐或古典作品中可能被认为是不好的失真。
最终,失真效果的质量应该根据它在特定语境中满足用户需求和喜好的程度来评估。通过提供广泛的可调整参数,多变的失真效果可以满足各种口味和应用,从而提高为更广泛的听者和情境产生“好的”失真的可能性。
18> 失真场的边界在哪里?
失真场的边界在于对新技术、硬件和技术的研究和开发,这些新技术推动了传统失真效果的界限。该领域的一些感兴趣的研究领域包括:
-
机器学习和人工智能:将机器学习和人工智能技术应用于建模和创建新的失真效果。这可能涉及在各种失真特征上训练模型以产生新颖独特的声音,或使用人工智能来优化特定音乐背景的参数。
-
复古硬件的仿真:随着技术的进步,越来越有兴趣准确仿真复古硬件的特性,如模拟放大器、磁带机和电子管电路。这涉及创建数字模型,以捕捉这些经典设备的非线性、谐波内容和其它细微之处。
-
模块化和灵活效果:开发模块化和灵活的失真效果,允许用户组合和自定义失真管道的各个阶段,如前级增益、传递函数、均衡和反馈。这为用户在设计和他们的失真声音时提供了更多的控制和创造力。
-
物理建模:物理建模技术的进步使得创建更真实、更精确的模拟失真设备的数字表示成为可能,如吉他放大器、效果踏板和电子管电路。这涉及模拟各种组件(例如,电子管、变压器、扬声器)之间的复杂相互作用,以在数字域中重现这些设备的行为。
-
实时性能和低延迟:硬件和软件能力的持续改进使得更高效、更低延迟的失真效果的开发成为可能。这允许音乐家和制作人在现场表演和录音室环境中实时使用更复杂的失真算法。
-
沉浸式音频和空间效果:随着环绕声和空间音频等沉浸式音频格式越来越受欢迎,对开发适用于这些格式的失真效果的兴趣日益增加。这涉及到创建能够处理和操纵三维空间中的音频信号的失真算法,为效果添加深度和动感。
这些只是失真领域前沿领域的几个例子。随着技术的持续发展和新技术的出现,我们期待未来将出现更多创新和富有创造力的失真效果。
19>我们如何用人工智能来模拟复古失真硬件?
用人工智能模拟复古失真硬件涉及在复古硬件的特征和行为上训练机器学习模型,以创建可以重现这些经典设备细微差别的数字模型。这个过程通常包括几个步骤
-
数据收集:在不同的设置下记录复古硬件的输入和输出信号,捕捉设备对不同类型音频信号和参数配置的响应。这个数据集应包括干净和失真的信号,涵盖硬件的全部功能范围。
-
特征提取:分析输入和输出信号以提取代表复古硬件行为的特征。特征可能包括时域特征(例如,幅度、波形形状)、频域特征(例如,谐波内容、频谱形状)和非线性行为(例如,饱和、动态响应)。
-
模型选择:选择适当的机器学习模型来表示输入和输出信号以及提取的特征之间的关系。对于音频处理任务,常用的选择包括卷积神经网络(CNN)和循环神经网络(RNN)等深度学习模型,以及其他机器学习技术,如支持向量机(SVM)和决策树。
-
训练:在收集到的数据集上训练选定的机器学习模型,调整模型的参数以最小化其输出与复古硬件实际输出之间的差异。这可能涉及将数据集分为训练、验证和测试集以评估模型性能并防止过拟合。
-
评估:在单独的输入信号集上测试训练好的模型,并将其输出与复古硬件的实际输出进行比较。使用适当的指标(如均方误差(MSE)或音频质量感知评价(PEAQ))来衡量模型性能。重复训练和评估过程,直到模型达到令人满意的表现。
-
实现:在数字音频处理环境中实现训练好的模型,如插件或独立应用程序,并优化其实时性能。这可能涉及将模型转换为更高效的表示,例如降低精度的神经网络或查找表,并使用高性能编程语言和库来实现。
按照以下步骤,可以使用人工智能创建精确的复古失真硬件数字仿真,这些仿真捕捉了这些经典设备的独特特性和行为。这些模型可以用于数字音频工作站(DAW)和其他音频处理环境中,以实现所需的复古失真效果,而无需原始硬件。
20>失真模块的子组件从物理角度如何相互作用以产生所需的效果?
从物理角度来看,失真模块的子组件通过一系列阶段处理输入音频信号,这些阶段可以包括增益阶段、非线性传递函数、滤波器和反馈回路。每个阶段以特定方式影响信号,以创建所需的失真效果。
以下是典型模拟失真模块子组件如何物理相互作用的逐步分解
-
输入阶段:输入阶段接收传入的音频信号,这可能来自吉他拾取器的电压波形、合成器的线路级信号或任何其他音频源。此阶段可能包括阻抗匹配或缓冲,以确保信号正确与失真模块的其余部分接口。
-
预增益阶段:预增益阶段放大或衰减输入信号,以在传递函数处理之前调整其电平。此阶段可以使用运算放大器(op-amps)、晶体管或电子管实现。增益通常可以通过电位器或其他控制进行调整。
-
传递函数:此阶段将非线性失真效果应用于信号。它可以使用各种电子组件实现,例如二极管、晶体管或电子管,这些组件在接近其饱和或截止区域时引入非线性行为。传递函数可以设计为产生不同类型的失真效果,如软削波、硬削波或波形整形。
-
音调控制/均衡:在非线性阶段之后,信号可能通过音调控制或均衡阶段。此阶段调整失真信号的频率内容,增强或衰减特定频段。它可以使用无源或有源滤波器实现,如低通、高通或带通滤波器。
-
输出增益阶段:输出增益阶段调整失真信号的总体电平,在将其发送到输出之前。此阶段也可以使用运算放大器、晶体管或电子管实现。输出增益通常可以通过电位器或其他控制进行调整。
-
反馈回路(可选):某些失真模块可能包括反馈回路,它将输出信号的一部分反馈到模块的输入或信号路径中的早期阶段。这会产生更复杂和动态的失真效果。可以通过反馈增益或混合控制来控制反馈量,使用户可以调整反馈效果的强度。
从物理角度来看,失真模块的子组件通过以各种方式影响输入信号的电压波形相互作用。这可能包括放大或衰减信号、引入非线性行为、调整频率内容以及创建反馈回路。这些相互作用的综合效果产生了所需的失真效果,这可以给输入信号增加温暖、个性和侵略性,具体取决于失真模块的具体设计和设置。
依赖关系
~11-21MB
~297K SLoC