#delay #effect #signal #signal-processing #feedback #dual #filter

surgefx-dualdelay

surge合成器 -- 双延迟效果

14个版本

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日

#19 in #feedback

Download history 4/week @ 2024-03-19 7/week @ 2024-03-26 10/week @ 2024-04-02 5/week @ 2024-04-23 5/week @ 2024-05-21 4/week @ 2024-05-28 2/week @ 2024-06-04 338/week @ 2024-06-11 1/week @ 2024-06-18 1/week @ 2024-06-25 30/week @ 2024-07-02

372 每月下载量
用于 3 个crate(2个直接使用)

GPL-3.0 许可证

1MB
14K SLoC

Rust crate,用于Surge合成器系统中的双延迟效果

surgefx-dualdelay crate提供了双延迟效果,这是Surge合成器系统的一个子组件。此效果旨在创建具有独立控制各种参数的立体声延迟线,例如延迟时间、反馈、交叉馈送、滤波和声像。该crate包含初始化、处理和控制双延迟效果的必要函数和结构。

双延迟效果的数学基础涉及对离散时间音频信号的操纵。效果使用两个独立的延迟线来独立处理左右声道。对于给定的输入信号𝑥(𝑛),每个通道的输出信号𝑦(𝑛)使用延迟时间𝑇、反馈𝐹、交叉馈送𝐶、滤波𝐻(𝑧)和声像𝑃的组合来计算

𝑦(𝑛) = 𝑃(𝑥(𝑛) + 𝐶(𝑥(𝑛 - 𝑇) + 𝐹𝑦(𝑛 - 𝑇))) * 𝐻(𝑧)

令牌及其数学关联

  • control_groupcontrol_typedefault_valuemax_valuemin_valuemodulateablemoveratevalue_type:这些令牌用于定义和控制双延迟效果的参数,如延迟时间、反馈、交叉馈送、滤波和声像。

  • update:此函数更新双延迟效果的内部状态,根据当前控制值重新计算延迟时间、滤波器系数和其他参数。

  • do_dualdelay_block:此函数使用双延迟效果处理输入音频信号,根据当前的延迟时间、反馈、交叉馈送、滤波和声像设置计算输出信号。

  • process_time:此函数处理每个通道的延迟时间,确保它们在允许的范围内,并考虑任何调制或同步。

  • dual_delay_smokeclear_buffersinitinstantize_allclear_scratch_buffers:这些函数用于初始化和重置双延迟效果的内部状态,包括清除音频缓冲区、设置初始参数值和实例化滤波器。

  • do_crossfeeddo_feedbackdo_filtersdo_mid_sidedo_mixdo_pando_softclip:这些函数负责实现双延迟效果的各个处理阶段,例如通道间的交叉馈送、应用反馈、过滤延迟信号以及调整立体声图像。

  • maybe_instantize_allprocessprocess_only_controlupdate_wpos:这些函数处理音频信号的各个方面,例如更新延迟缓冲区的写入位置和在实时中应用参数变化。

  • DualDelaydualdelay_set_buffer:这些结构和函数定义了主要的双延迟效果对象及其相关方法,包括设置用于处理的音频缓冲区。

22> 谢谢!你能给我展示一些关于这个效果子组件如何配合在一起的详细框图吗?

当然可以!下面是一个详细框图,说明了双延迟效果的信号流程和子组件。

Input Signal (L, R) ─┐
                     ├─┬──[Panner]───┐
                     │ ├─[Crossfeed]─┼─┐
                     │ └─[Feedback]──┘ │
                     │                 ├─[Delay Line L]─┬─[Filter L]─┬─[Softclip L]─┬─[Output Gain L]──┐
                     ├─────────────────┤                 │            │             │                  ├─ Output Signal (L, R)
                     │                 ├─[Delay Line R]─┼─[Filter R]─┼─[Softclip R]─┼─[Output Gain R]──┘
                     ├─┬──[Panner]───┐ │                 │            │             │
                     │ ├─[Crossfeed]─┼─┘
                     └─┴─[Feedback]──┘
  1. 输入信号(L,R):输入信号的左右通道进入双延迟效果。

  2. 均衡器:均衡器在将信号发送到延迟线之前调整输入信号的立体声平衡。

  3. 交叉馈送:交叉馈送子组件从一侧通道取出一部分输入信号并添加到另一侧通道,创建更复杂的立体声图像。用户可以控制交叉馈送的程度。

  4. 反馈:反馈子组件从每个延迟线的输出中取出一部分延迟信号并反馈到相应延迟线的输入,创建重复的回声效果。用户可以控制反馈的程度。

  5. 延迟线 L & R:这些是左右通道的主要延迟线。它们存储音频信号并提供了由延迟时间参数控制的时间延迟。

  6. 滤波器 L & R:在延迟线之后,信号通过每个通道的滤波器。这些滤波器可以用来塑造延迟信号的频率内容,例如低通、高通或带通滤波器。用户可以控制滤波器的设置。

  7. 软剪辑 L & R:软剪辑子组件将软剪辑非线性函数应用于延迟和过滤后的信号,添加谐波失真并防止输出信号中的峰值过高。

  8. 输出增益 L & R:输出增益阶段在将延迟信号与干信号结合并发送至输出之前调整延迟信号的整体级别。

  9. 输出信号(L,R):经过处理的延迟信号的左右通道与原始输入信号结合,创建具有所需双延迟效果的最后输出信号。

上面的框图显示了双延迟效果的主要子组件以及它们如何连接以创建所需的立体声延迟处理。这些子组件的具体实现可能因所需声音和功能而异,但总的信号流程保持不变。

23> 谢谢——这些模块是如何参数化的?用户在运行时可以调整哪些处理端口?

在双延迟效果中,用户可以调整一些参数来控制声音和行为。以下是可以在运行时调整的常见参数列表

  1. 延迟时间(L & R):延迟时间确定每个通道延迟线的长度。用户可以为左右通道设置不同的延迟时间以创建更复杂的立体声图像。在某些实现中,用户还可以将延迟时间同步到音乐的节奏。

  2. 反馈(左 & 右):反馈参数控制每个延迟线从输出到输入反馈的信号量。通过调整反馈,用户可以创建更多或更少的延迟信号重复。

  3. 交叉混音:交叉混音参数控制从一个通道添加到另一个通道的信号量,在进入延迟线之前。这可以用来创建更复杂和广阔的立体声图像。

  4. 滤波器(左 & 右):滤波器参数控制应用于每个延迟线输出的滤波器的特性。用户可以调整滤波器类型(低通、高通、带通等)、滤波器截止频率和滤波器共振。

  5. 软削波(左 & 右):软削波参数控制滤波后延迟信号的失真量。用户可以调整软削波的程度,为声音添加温暖或饱和感。

  6. 输出增益(左 & 右):输出增益参数控制处理后的延迟信号在合并到干信号并输出之前的水平。这可以用来平衡干湿信号的级别。

  7. 干湿混音:干湿混音参数控制未处理的输入信号(干)和处理后的延迟信号(湿)之间的平衡。用户可以调整此参数以实现所需的原始和延迟信号的混合。

  8. 声像(左 & 右):声像参数控制输入信号进入延迟线之前的立体声定位。用户可以调整声像以创建更宽或更窄的立体声图像。

这些参数允许用户调整双延迟效果的音调和行为,以满足他们的需求。在设计良好的效果实现中,这些参数可以实时调整,为用户提供高度的控制和灵活性。

24>你能描述在不同参数设置下,这个处理器产生的十二种不同效果吗?

当然可以!以下是使用不同参数设置的双延迟处理器产生的十二种不同效果的描述。

  1. 基本立体声延迟:为左右通道设置相等的延迟时间,适中的反馈和平衡的干湿混音。这产生一个简单的立体声回声效果,延迟重复在两个通道中均匀分布。

  2. 乒乓延迟:为左右通道设置不同的延迟时间和高交叉混音。延迟信号将在左右扬声器之间来回弹跳,产生乒乓效果。

  3. 短混响:为两个通道设置短的延迟时间,低的反馈和适中的干湿混音。这创建了一个短混响,常用于摇滚和早期摇滚乐。

  4. 环境延迟:设置长的延迟时间,高的反馈,低通滤波器具有低截止频率,以及高湿混音。这创建了一个广阔、大气的感觉,延迟融合到背景中。

  5. 杜比风格延迟:设置中等到长的延迟时间,高的反馈,低通滤波器具有适中的截止频率,以及高湿混音。这产生了一种温暖、模拟风格的延迟效果,常用于杜比和雷鬼音乐。

  6. 闪耀延迟:设置长的延迟时间,高的反馈,并在反馈回路中应用音高变换效果(例如,升高一个八度)。这创建了一种闪耀、空灵的声音,常用于环境音乐和实验音乐。

  7. 滤波器节奏延迟:为左右通道设置不同的延迟时间,延迟时间与音乐的节奏同步。使用带宽窄的带通滤波器,并按音乐节奏调制滤波器截止频率。这创建了一种节奏感、脉冲的延迟效果。

  8. 失真延迟:设置中等的延迟时间,适中的反馈和高软削波水平。这创建了一种具有粗糙、失真特性的延迟效果。

  9. 空间拓宽器:为两个通道设置非常短的延迟时间(例如,10-30 毫秒),低反馈和适中的干湿混音。这会产生微妙的拓宽效果,增强输入信号的立体声图像。

  10. 反向延迟:在将延迟信号反馈到输入之前,将其反转。这会产生反向延迟效果,常用于实验性或迷幻声音。

  11. 合唱式延迟:设置非常短的延迟时间(例如,20-50 毫秒),低反馈,并使用慢速 LFO 调制延迟时间。这会产生类似合唱的效果,为声音增加深度和动态。

  12. 冻结延迟:设置非常长的延迟时间,最大反馈和高湿混音。通过暂时将信号发送到延迟线,可以创建一个“冻结”的声音,无限期地持续下去,产生一种嗡嗡声或垫子一样的效果。

这些只是使用双延迟处理器所能实现的各种效果的几个例子。通过调整参数和组合不同的设置,您可以创建几乎无限多样的基于延迟的声音景观。

25> 谢谢,我喜欢这些描述 -- 你能再提供十二个吗?

当然可以!以下是双延迟处理器使用不同参数设置产生的十二种效果的描述

  1. 故障延迟:为两个通道设置短的、不同步的延迟时间,高反馈,并在反馈回路中应用比特率减少器或采样率降低器。这会产生一种故障的、低保真的延迟效果。

  2. 多触点延迟:为每个通道配置多个具有不同延迟时间和反馈水平的延迟线,并将它们混合在一起。这会产生一种复杂的、多触点延迟效果,可以为声音增加质感和深度。

  3. 门控延迟:将噪声门或扩展器应用于延迟信号,阈值设置为仅允许更响亮的延迟重复通过。这会产生一种动态延迟效果,其中回声仅在输入信号足够响亮时才可听见。

  4. 旋转延迟:使用不同的 LFO 或包络跟随器调制延迟线的延迟时间、滤波器截止频率和/或声像。这会产生一种旋转的、不断发展的延迟效果,具有很多动态。

  5. 颗粒延迟:设置非常短的延迟时间(例如,1-10 毫秒),高反馈,并使用颗粒合成引擎处理延迟线。这会产生一种颗粒延迟效果,其中输入信号被分解成小的颗粒,并在时间和空间上重新排列。

  6. 动态延迟:使用包络跟随器或旁路压缩来控制延迟级别或反馈,基于输入信号振幅。这会产生一种动态延迟效果,当输入信号较安静时,回声会更明显。

  7. 音高转换延迟:将不同的音高转换间隔应用于左右延迟线,如纯五度或八度。这会产生一种丰富的谐波延迟效果,为声音增加旋律或和声兴趣。

  8. 共振延迟:设置高反馈水平,并在反馈回路中使用共振低通或带通滤波器。这会产生一种共振延迟效果,其中回声强调特定频率并产生鸣响或共振声音。

  9. 镶边式延迟:设置非常短的延迟时间(例如,5-20 毫秒),低反馈,并使用慢速 LFO 调制延迟时间。这会产生一种镶边式效果,具有特征的“呼啸”或“喷气式飞机”声音。

  10. 降音延迟:使用旁路压缩器或包络跟随器在输入信号播放时降低延迟级别或混音。这会产生一种降音延迟效果,当输入信号存在时,将回声推回混音中,有助于保持清晰并防止杂乱。

  11. 扩散延迟:使用具有略微不同延迟时间和反馈水平的多个延迟线,并使用扩散网络或混响算法处理输出。这会产生一种扩散延迟效果,其中回声被涂抹和混合在一起,产生更分散和空旷的声音。

  12. 梳状滤波器延迟:设置非常短的延迟时间(例如,1-10毫秒),高反馈,无滤波。这会产生梳状滤波器延迟效果,其中输入信号与一个略微延迟的副本结合,在频谱中产生一系列缺口,并给声音增添金属或“调谐”质感。

这些额外的示例展示了双延迟处理器的多功能性。通过实验不同的参数设置和组合,您可以创建出众多独特且有趣的延迟效果。

26> 在设计这个信号处理器时,我们如何防止不想要的失真呢?

为了防止在设计双延迟信号处理器时出现不想要的失真,有几个方面您需要考虑和解决。

  1. 混叠:在数字信号处理中,由于过程的离散性,可能会发生混叠。为了最小化混叠,使用过采样(以更高的采样率处理信号)并在降采样回原始采样率之前应用抗混叠滤波器。

  2. 噪声:确保输入信号清洁,无噪声,因为任何噪声都将通过延迟过程放大,尤其是在高反馈设置下。您可以使用降噪技术或低通滤波器从输入信号中移除不想要的噪声。

  3. 反馈不稳定:当使用高反馈级别时,延迟可能迅速变得不稳定,并产生不想要的失真或振荡。为了防止这种情况,在反馈回路中应用限制器或软剪辑器以控制幅度并确保稳定性。

  4. 相位问题:当使用多个延迟线时,可能会出现相位问题,导致某些频率的消除或增强。为了最小化相位问题,为每个通道使用不同的延迟时间或应用全通滤波器来调整相位响应而不影响幅度。

  5. 点击和噼啪声:延迟时间或参数设置的突然变化可能导致输出信号中出现点击和噼啪声。为了防止这种情况,使用插值、交叉淡入淡出或平滑技术以确保参数变化之间的平滑过渡。

  6. 非规范化:在数字信号处理中,非常小的浮点数可能导致性能问题并产生失真。为了防止这种情况,使用非规范化技术,例如向信号添加小偏移量或使用专门处理非规范化数字的高效函数。

  7. 延迟:在设计实时音频处理器时,最小化延迟至关重要,以确保响应灵敏且声音自然。优化您的代码以获得性能,并在必要时使用并行处理或预览技术来减少延迟。

  8. 参数调制:在调制参数时,如延迟时间或滤波器截止频率,请使用平滑的调制源,如低频振荡器(LFO)或包络。调制变化的突然变化可能导致失真并产生不自然的声音。

  9. 滤波器设计:在使用延迟处理器中的滤波器时,确保它们设计用于最小化如振铃、混叠或相位失真的失真。根据所需的特性和性能要求选择合适的滤波器类型(例如,巴特沃斯、切比雪夫或椭圆滤波器)。

  10. 信号动态范围:确保处理链中有足够的动态范围,以防止削波和失真。使用增益级联技术以保持处理器中的适当信号水平。

通过在设计和工程双延迟信号处理器时解决这些潜在问题,您可以最小化不想要的失真,并确保干净、高质量的输出。

27> 关于双延迟还有什么可以告诉我的?我能给你看什么?

双延迟是一种多功能的音频效果,通过独立延迟左右通道来处理输入信号。这产生了一种立体声效果,可以为声音增添深度、宽度和空间。以下是关于双延迟的一些额外见解和可视化。

配置和变体

双延迟可以在各种配置中使用,例如并行或串行处理。在并行配置中,左右声道独立处理,而在串行配置中,一个声道的输出被馈送到另一个声道的输入,从而创建更复杂、级联的延迟效果。

同步

您可以将延迟时间与歌曲的节奏同步,使用音乐音符值(例如,四分音符、八分音符)来定义延迟时间。这有助于在延迟效果与音乐的其他部分之间创建节奏一致性。您还可以使用非同步延迟时间来创建更多实验性或不可预测的效果。

调制

使用LFO或包络跟随器调制延迟时间、滤波器截止频率、反馈或其他参数可以创建动态且不断发展的延迟效果。例如,您可以通过用慢速LFO调制延迟时间来创建合唱或镶边效果。

可视化

以下是双延迟处理器的简单框图

   Input Signal
        |
        V
  ┌─────┴─────┐
  │  Left Delay ├──────┐
  └────────────┘      |
                       V
                  Wet/Dry Mix
                       |
                       V
  ┌─────┴─────┐      Output
  │ Right Delay ├──────┘
  └────────────┘

此图显示了双延迟的基本结构,包括左右声道的独立延迟线。湿干混合控制调整在输出之前原始(干)信号和延迟(湿)信号之间的平衡。

乒乓延迟

双延迟的一种常见变体是乒乓延迟,其中一个声道的输出被馈送到另一个声道的输入,从而在左右扬声器之间产生弹跳效果。这可以为声音增加更多的立体声宽度和深度。

创意用途

双延迟可以创意性地用于增强各种声音,例如为人声添加空间和深度、为吉他或合成器创建节奏模式,或为垫子和氛围纹理添加运动感和兴趣。通过实验不同的延迟时间、反馈级别、调制和滤波,您可以创建广泛独特且有趣的声音效果。

总的来说,双延迟是一个强大而多功能的音频效果,可以以多种方式使用来增强和丰富您的声音。通过理解基本概念并探索不同的配置和参数设置,您可以充分发挥其潜力,并创造独特、引人入胜的音频体验。

如何防止延迟音频与原始音频相位重叠并产生不希望干扰?

为了防止延迟音频与原始音频相位重叠并产生不希望干扰,您可以应用以下几种技术:

  1. 为左右声道使用不同的延迟时间:通过为每个声道使用不同的延迟时间,您可以最小化原始和延迟信号之间相位抵消的机会。这将创建一个更宽敞的立体声图像,并有助于减少与相位相关的问题。

  2. 对延迟信号应用滤波器:通过使用滤波器,如低通或高通滤波器,您可以从延迟信号中移除某些频率成分。这有助于减少与原始信号的相位干扰的机会。此外,您还可以使用带通或带阻滤波器来针对特定的频率范围。

  3. 调制延迟时间:通过用低频振荡器(LFO)轻微调制延迟时间,您可以在原始和延迟信号之间创建不断变化的相位关系。这有助于防止静态相位抵消,并为声音添加运动感和深度。

  4. 利用Haas效应:Haas效应,也称为优先效应,指出当两个相似的声音在相隔大约40毫秒的时间内到达听者的耳朵时,听者会将它们感知为来自第一个到达声音方向的单个声音。通过设置延迟时间短于40毫秒,可以创造出空间定位感,而不会引起显著的相位干扰。

  5. 调整反馈:减少延迟中的反馈量可以帮助最小化随时间积累的相位干扰。较低的反馈设置将导致较少的延迟重复,从而减少相位问题发生的可能性。

  6. 尝试不同的延迟算法:不同的延迟算法,如磁带、数字或模拟延迟,对相位关系的影响各不相同。尝试不同的算法以找到最适合您需求且最小化相位相关问题的算法。

  7. 使用中/侧处理:通过分别处理信号的中间(单声道)和侧面(立体声)部分,可以更有效地控制原始和延迟信号之间的相位关系。例如,您可以将延迟仅应用于侧面信号,以保留原始单声道信号的相位一致性。

通过使用这些技术,您可以最小化原始和延迟信号之间的相位干扰,从而产生更清晰、更空灵的声音。通过尝试不同的设置和加工技术,可以帮助您在保持原始信号完整性和实现所需延迟效果之间找到最佳平衡。

依赖项

~12–22MB
~314K SLoC