我仍然在使用DynamicsCompressorNode
制作ADSR信封时遇到一些问题。
也许唯一阻碍我的是压缩机的攻击似乎会通过一个非常大但未知的因素来放大输入脉冲。
这是我的设置:
我有一个ConstantSourceNode
只要按下音符就会输出1,如果没有则输出0。这将是门输入。
现在门输入被馈送到压缩器的输入端,我希望从中获得攻击瞬态。压缩器设置如下:
let THRESHOLD = -60;
let KNEE = 3;
let COMP_RATIO = 18;
comp.threshold.value = THRESHOLD;
comp.knee.value = KNEE;
comp.ratio.value = COMP_RATIO;
comp.attack.value = 0;
comp.release.value = 0;
attackTime.connect(comp.attack);
其中comp
是DynamicsCompressorNode,而attackTime
是ConstantSourceNode,其持续时间是攻击持续时间的六分之一。
这里有一个奇怪的部分:除了comp
的峰值输出电平大约为50之外,一切都有效,而输入门的峰值电平只有1。
我是否必须通过反复试验找到奇怪的增益系数,或者是否有一些原因可以让这50倍左右的增益能够正确地计算和补偿这种增益?
编辑:我发现随机增益增加与攻击持续时间成正比。我将绘制一个图表并试着看看两者是如何相关的。