7
ウェブオーディオAPIでwaveshapernodeをどのように使用しますか?特にカーブのFloat32Array属性?ウェブオーディオAPI WaveShaperNode
ウェブオーディオAPIでwaveshapernodeをどのように使用しますか?特にカーブのFloat32Array属性?ウェブオーディオAPI WaveShaperNode
hereの例を自由に参照してください。具体的には
、私はこの機能で波形整形曲線を作成します。
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));
}
}
このようなウェーブシェイパーのノードで次に「負荷」それを:
this.createWSCurve(ND.dist, this.nSamples);
this.sigmaDistortNode = this.context.createWaveShaper();
this.sigmaDistortNode.curve = this.wsCurve;
私は歪みパラメータを変更する必要が毎回、波形シェイプカーブを再作成します。
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を使用してdist ortionの音がより良い、値がeuristically発見された)。 ウェーブシェイパーカーブの作成に使用するアルゴリズムを見つけることができますhere