2011-10-20 14 views

उत्तर

6

उदाहरण here पर एक उदाहरण देखने के लिए स्वतंत्र महसूस करें।

विस्तार में, मैं इस समारोह के साथ एक waveshaper वक्र बनाने:

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)); 
    } 

} 

फिर "लोड" इस तरह की एक waveshaper नोड में यह:

this.createWSCurve(ND.dist, this.nSamples); 
this.sigmaDistortNode = this.context.createWaveShaper(); 
this.sigmaDistortNode.curve = this.wsCurve; 

हर मैं विरूपण पैरामीटर को बदलने की जरूरत , मैं waveshaper वक्र फिर से बना:

WAAMorningStar.prototype.setDistortion = function (distValue) { 
    var distCorrect = distValue; 
    if (distValue < -1) { 
     distCorrect = -1; 
    } 
    if (distValue >= 1) { 
     distCorrect = 0.985; 
    } 
    this.createWSCurve (distCorrect, this.nSamples); 
} 

(मैं dist बनाने के लिए distCorrect का उपयोग करता हूँ ऑर्डर ध्वनि निसर, मूल्यों को यूरोपीय रूप से मिला)। आप वेल्शपेर वक्र बनाने के लिए उपयोग किए गए एल्गोरिदम को देख सकते हैं here

संबंधित मुद्दे