gpt4 book ai didi

audio - WebAudio中的WaveShaper节点-如何模拟失真?

转载 作者:行者123 更新时间:2023-12-04 00:06:36 25 4
gpt4 key购买 nike

使用WebAudio API并尝试消除失真!问题是,我不确定如何进入WaveShaper的“曲线”参数。

简而言之,“oscidis”是在程序前面创建的WaveShaper节点。 Oscidisv是我暂时静态设置为0的值:

var wsCurve = new Float32Array();
if ((oscidisv >= -1) && (oscidisv < 1)) {

var k = 2 * oscidisv / (1 - oscidisv);
console.log
for (var i = 0; i < 16; 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)) / (16 - 0) + (-1);
wsCurve[i] = (1 + k) * x / (1+ k * Math.abs(x));
}
}
oscidis.curve.value = wsCurve;

问题-无论我在这里放什么声音,我都听不到声音的任何差异。即使最大失真为(1),我也没有注意到任何实际失真。你们是否了解更明显的失真波动功能?或者,如果我完全在WebAudio API中执行此操作?

最佳答案

我使用的是基于白皮书中发现的一些不同功能的东西,诸如此类:

function makeDistortionCurve( amount ) {
var k = typeof amount === 'number' ? amount : 50,
n_samples = 44100,
curve = new Float32Array(n_samples),
deg = Math.PI / 180,
i = 0,
x;
for ( ; i < n_samples; ++i ) {
x = i * 2 / n_samples - 1;
curve[i] = ( 3 + k ) * x * 20 * deg / ( Math.PI + k * Math.abs(x) );
}
return curve;
};

如果我告诉您我知道 3 + k20的来源,那我就在撒谎,但是它可以工作。
amount的值基本上可以是任何正数,但是我发现0-100是一个相当不错的范围,具体取决于您需要多少失真。

如果您有兴趣查看这些函数的外观,我构建了一个小工具来帮助我在此处可视化它们: http://kevincennis.github.io/transfergraph/

关于audio - WebAudio中的WaveShaper节点-如何模拟失真?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22312841/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com