2016-03-22 33 views
0

Bir davul makinesi/örnekleyici yapıyorum ve kullanıcının bir sürgü kullanarak çıktıdaki bozulma miktarını kontrol edebilmesini istiyorum. Bir WaveShaper düğümü hazırladım, uygun şekilde bağladım, eğriyi bu sitede bulunan bir denklem kullanarak ayarladım, tüm bunlar işe yarıyor.Bir WebAudio WaveShaper Düğümünün Eğrisinin Değiştirilmesi Oynarken

Ardından, girdinin yeni değerine göre daha fazla veya daha az bozulma sağlamak üzere eğriyi sıfırlamak için değişiklik olayında bir işlevi çağırmak için bir aralık girdisi istiyorum. oluyor gibi görünüyor ne

// Distortion: 
bussDistortion = audioContext.createWaveShaper(); 
bussDistortion.curve = makeDistortionCurve(0); 
bussDistortion.connect(audioContext.destination); 
// Slider: 
distortionAmountSlider = document.querySelector('#distortion_amount'); 
// Event listener: 
distortionAmountSlider.addEventListener('change', changeDistortionAmount, false); 

// Update function: 
function changeDistortionAmount() { 
    bussDistortion.curve = makeDistortionCurve(distortionAmountSlider.value); 
} 

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

sürgünün ilk değişiklik bozulma eğrisi şey değiştirmek neden olduğunu, ama bu başka değişikliklerden sonra hiçbir etkisi yoktur:

İşte ben budur. Herkes neler olduğunu açıklayabilir mi?

cevap

0

Bunun yanlış nereye gittiğini bu olduğunu düşünüyorum:

var k = typeof amount === 'number' ? amount : 50 

ifadenin değeri bir dize değil, ilk defa (o 50 değerlendirir) çalışır açıklıyor bir numaradır. Bu nedenle,

ürününü kullanabilmeniz için iyi olmanız gerekir! (Veya bir şamandıra ihtiyacınız varsa parseFloat kullanın.)

+0

Teşekkür ederiz! Tam olarak öyle. Daha önce üçlü operatörünü hiç kullanmadım, kodu kopyalamadan önce bakmalıydım :) –

İlgili konular