上下文:我正在尝试在网络上制作一个 100% 模块化合成器
到目前为止,我看到的制作包络的教程使用函数来触发包络的不同阶段,但是如果我想根据 AudioNode 的输出触发包络该怎么办?
例如,在方波振荡器的上升沿攻击,在下降沿释放?
我是否必须求助于使用脚本处理器节点(并会影响性能),或者是否有更好的方法来做到这一点,但我还没有找到?
提前致谢
澄清:
输入是一个简单的二元门。按住该键时为 1,未按住该键时为 0。
应该有一些音频参数参数,可以控制起音时间、衰减时间、持续电平和释放时间。假设衰减水平(ADSR 包络的峰值)为 1
输出是 ADSR 包络信号本身。
最佳答案
这是一种替代方法。如果您有模拟电路,您可以对方波进行微分,以获得前沿的正脉冲和后沿的负脉冲。将此脉冲串馈入 RC 电路。这将产生攻击和释放阶段。
在 WebAudio 中,您可以通过将信号延迟一个样本并将其从原始信号中减去来进行简单的微分。对于 RC 电路,您可以使用 BiquadFilterNode
或 IIRFilterNode
来产生所需的结果。
如果您想要更复杂的 ADSR 响应,我不太确定该怎么做。
关于javascript - 网络音频API : Trigger envelope based on input,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40955077/