javascript - 网络音频API : Trigger envelope based on input

标签 javascript signal-processing web-audio-api

上下文:我正在尝试在网络上制作一个 100% 模块化合成器

到目前为止,我看到的制作包络的教程使用函数来触发包络的不同阶段,但是如果我想根据 AudioNode 的输出触发包络该怎么办?

例如,在方波振荡器的上升沿攻击,在下降沿释放?

我是否必须求助于使用脚本处理器节点(并会影响性能),或者是否有更好的方法来做到这一点,但我还没有找到?

提前致谢

澄清:

输入是一个简单的二元门。按住该键时为 1,未按住该键时为 0。

应该有一些音频参数参数,可以控制起音时间、衰减时间、持续电平和释放时间。假设衰减水平(ADSR 包络的峰值)为 1

输出是 ADSR 包络信号本身。

最佳答案

这是一种替代方法。如果您有模拟电路,您可以对方波进行微分,以获得前沿的正脉冲和后沿的负脉冲。将此脉冲串馈入 RC 电路。这将产生攻击和释放阶段。

在 WebAudio 中,您可以通过将信号延迟一个样本并将其从原始信号中减去来进行简单的微分。对于 RC 电路,您可以使用 BiquadFilterNodeIIRFilterNode 来产生所需的结果。

如果您想要更复杂的 ADSR 响应,我不太确定该怎么做。

关于javascript - 网络音频API : Trigger envelope based on input,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40955077/

相关文章:

javascript - 溶解标题的背景图像

javascript - jQuery - OnClick,在单击时始终更改表格单元格的背景颜色

audio - 声音压缩书

audio - 通过WebSocket流音频-Web音频

javascript - 声云波形

javascript - 使用 bootstrap/jQuery 修复了视口(viewport)中的页脚

javascript - 带有 Jquery UI 自动完成功能的 Leaflet GeoJSON

javascript - 为什么 ScriptProcessorNode 必须连接到目的地?

audio - 给定使用的SoundFont,是否可以尽可能准确地将音频分解为MIDI?

reactjs - AudioWorklet错误: DOMException: The user aborted a request