WebAudioAPI:划分两个AudioNodes的输出

时间:2016-12-12 08:08:45

标签: javascript math signal-processing web-audio

背景信息:我正在尝试在WebAudioAPI中实现ADSR信封,其中Attack,Decay,Sustain和Release都是AudioParams,'note on'和'note off'由输入值1表示和0分别。我正在使用四个DynamicCompressor节点和大量的增益操作来实现这一点,因为压缩器在技术上是攻击释放包络。

一切都很顺利,除了我需要将一个信号的电平除以另一个信号的电平以获得达到电平偏移的增益量与产生衰减梯度的DynamicCompressor相结合。 / p>

如果有帮助,这是公式:

decayOffsetY = (1 - sustainLevel) * (attackDur + decayDur) / decayDur

请注意,sustainLevelattackDurdecayDur都是AudioParams。

使用一些ConstantSourceNodesGainNodes可以轻松实现加法,减法和乘法,但我该如何进行除法?

注意:我已经考虑过使用另一个DynamicCompressorNode来执行除法,因为压缩器在技术上将信号除以一个比率,但这个比率是对数标度,我最终得到的压缩比为

log(decayDur) / 5

以获得将1 / decayDur连接到另一个GainNode的值Math.log。但是,甚至可以仅使用AudioNodes执行$(document).ready(function() { $('#fullpage').fullpage({ anchors: ['firstPage', 'secondPage'], navigation: true, navigationPosition: 'left', navigationTooltips: ['Sản Phẩm Mới', 'Hoạt Náo'], showActiveTooltip: false, menu: '#menu', scrollingSpeed: 700 }); });吗?

1 个答案:

答案 0 :(得分:2)

使用WaveShaperNode计算逆或日志。您必须弄清楚如何处理输入接近零的情况以及制作波形整形曲线数组的时间,但这应该有效。