29个发布版
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日 |
#9 in #幅度
在 4 crates中使用
410KB
5.5K SLoC
surge-adsr
AdsrEnvelope
是在声音合成上下文中的一个符号,代表一个常用的包络发生器,用于在时间上塑造声音波的幅度。"ADSR"代表"Attack(攻击)、Decay(衰减)、Sustain(持续)、Release(释放)",这是包络的四个阶段。
-
Attack
阶段代表声音被触发或启动时幅度的初始增加。 -
Decay
阶段是初始峰值后的幅度下降阶段,通常下降到一个稳定的水平,称为Sustain
水平。 -
Sustain
阶段代表一个稳定的幅度时期,只要声音被触发或保持,这个幅度就会被保持。 -
最后,
Release
阶段代表声音停止触发后,声音幅度逐渐减小到零的时期。
AdsrEnvelope
常用于电子音乐合成,特别是在为合成器和采样器等乐器创建声音时。通过使用包络发生器控制声音波的幅度,可以创造出更具动态和有趣的音乐纹理。
3> 感谢 -- 你能教我更多关于这种系统是如何设计的吗?
当然!我可以给你一个关于ADSR包络发生器通常如何在合成器或类似音频处理系统中实现的概览。
首先,包络发生器需要接收一个触发信号来指示何时开始生成包络。在合成器的情况下,这个触发信号可能是在按下键盘上的键时生成的。
一旦接收到触发信号,包络发生器就开始攻击阶段,在此期间,声音的幅度从零增加到其峰值。攻击阶段的持续时间由攻击时间参数控制,该参数决定了声音达到峰值幅度的速度。
攻击阶段之后,包络发生器进入衰减阶段,在此期间,声音的振幅逐渐减小到维持水平。衰减阶段的持续时间由衰减时间参数控制,该参数决定了声音达到维持水平所需的时间。
衰减阶段完成后,包络发生器进入维持阶段,在此期间,声音的振幅保持不变。维持阶段的水平由维持水平参数控制,该参数决定了声音将维持的振幅水平。
最后,当触发信号释放时(例如,在键盘上释放键),包络发生器进入释放阶段,在此期间,声音的振幅从维持水平降至零。释放阶段的持续时间由释放时间参数控制,该参数决定了声音返回静音所需的时间。
ADSR包络发生器可以使用多种技术实现,但一种常见的方法是使用一系列线性或指数斜坡发生器来控制声音波随时间的振幅。这些斜坡发生器可以使用数字信号处理技术或模拟电路来实现,具体取决于实现方式。
还有哪些实现方法?
实现ADSR包络发生器的技术有好几种,每种都有其优缺点。以下是一些示例:
-
查找表:一种方法是使用查找表存储预计算的包络曲线,根据需要实时访问和缩放。这可能是一种有效的方法,但它需要相对较大的内存来存储表格,并且可能不如其他方法灵活。
-
状态变量滤波器:另一种方法是使用状态变量滤波器来生成包络形状。这涉及使用滤波电路生成一个跟随所需包络形状的信号。这种方法的优势是它可以产生其他方法难以实现的复杂包络形状,但可能计算成本较高,并可能引入不希望的失真或噪声。
-
采样保持:另一种技术是使用采样保持电路来生成包络形状。这涉及在定期间隔内采样声音波的振幅,并在取下一个样本之前保持该值。这种方法的优势是相对简单易行,可以产生平滑、连续的包络形状,但可能不如其他方法精确或灵活。
-
函数发生器:函数发生器电路也可以用来实现ADSR包络发生器。这涉及使用生成特定波形形状的电路,如三角波或锯齿波,来创建包络形状。这种方法可以灵活且精确,但可能需要相对复杂的电路设计,并且可能计算成本较高。
最终,选择实现技术将取决于应用的具体要求和可用于实现的资源。
5>模拟和数字实现有何区别?
ADSR包络发生器的模拟和数字实现主要在底层电路和处理技术方面有所不同。以下是几个关键区别:
-
信号处理:ADSR包络发生器的模拟实现通常使用模拟电路来生成包络形状,而数字实现使用软件算法来生成包络形状。这可能会影响实现的精度、速度和复杂性。
-
控制参数:在模拟实现中,ADSR包络发生器(攻击时间、衰减时间、保持电平、释放时间)的各种控制参数通常实现为可调电阻或电位器。在数字实现中,这些参数通常通过软件控制,这允许对包络形状进行更精确和灵活的控制。
-
信号保真度:ADSR包络发生器的模拟实现通常更容易受到噪声、失真和其他信号退化源的影响。另一方面,只要用于将数字信号转换为模拟音频信号的数字到模拟转换器质量高,数字实现可以在生成包络形状时提供高保真度和精度。
-
成本和复杂性:ADSR包络发生器的模拟实现可以相对简单且成本低廉,但可能需要仔细调整和校准才能达到所需的包络形状。数字实现可能更复杂且成本更高,但可以在生成包络形状时提供更大的灵活性和精度。
总的来说,ADSR包络发生器模拟或数字实现的选择将取决于应用的具体要求,包括成本、复杂性、信号保真度和控制参数等因素。在某些情况下,可能采用混合方法,结合模拟和数字技术来实现所需的包络形状。
依赖关系
~11–20MB
~295K SLoC