你如何在网络音频api中使用waveshapernode?特别是曲线Float32Array属性?
解决方法
请随意查看示例
here.
详细地说,我用这个函数创建了一个wavehaper曲线:
WAAMorningStar.prototype.createWSCurve = function (amount,n_samples) { if ((amount >= 0) && (amount < 1)) { ND.dist = amount; var k = 2 * ND.dist / (1 - ND.dist); for (var i = 0; i < n_samples; i+=1) { // LINEAR INTERPOLATION: x := (c - a) * (z - y) / (b - a) + y // a = 0,b = 2048,z = 1,y = -1,c = i var x = (i - 0) * (1 - (-1)) / (n_samples - 0) + (-1); this.wsCurve[i] = (1 + k) * x / (1+ k * Math.abs(x)); } }
然后在wavehaper节点中“加载”它,如下所示:
this.createWSCurve(ND.dist,this.nSamples); this.sigmaDistortNode = this.context.createWaveShaper(); this.sigmaDistortNode.curve = this.wsCurve;
每当我需要更改失真参数时,我会重新创建wavehaper曲线:
WAAMorningStar.prototype.setDistortion = function (distValue) { var distCorrect = distValue; if (distValue < -1) { distCorrect = -1; } if (distValue >= 1) { distCorrect = 0.985; } this.createWSCurve (distCorrect,this.nSamples); }
(我使用distCorrect来使失真听起来更好,从价值上看是值得的).
您可以找到我用来创建wavehaper曲线here的算法
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。