2014-03-02 56 views
0

我正在做一個關於web音頻API的小實驗,我希望垂直軸影響振盪器的增益值(請參見下面的小提琴) 。我需要將畫布頂部到畫布底部之間的值縮放到值0和1之間,以便Y軸上的鼠標移動事件可聽地影響增益。我認爲這是一個普遍的數學問題,可以應用於任何範圍的數字,但我只是不知道該怎麼做。如何在JavaScript中將任何數字範圍縮放到0和1之間

http://jsfiddle.net/63Y54/

var audioContext = new webkitAudioContext(); 



oscillator = undefined ; 

$("#myCanvas").mousedown(function() { 
    var osc = audioContext.createOscillator(); 
    gainNode = audioContext.createGainNode(); 
    oscillator = osc; 
    oscillator.start(0); 

}); 


$("#myCanvas").mouseup(function() { 
    oscillator.stop(); 
}); 



$("#myCanvas").mousemove(function(event) { 
    console.log(event.pageX); 
    console.log(event.pageY); 
    oscillator.type = "sawtooth"; 
    gainNode.gain.value = (event.pageX); 
    oscillator.connect(gainNode); 
    gainNode.connect(audioContext.destination); 
    oscillator.frequency.value = event.pageX; 


}); 

回答

1

您可以通過的最大可能值除以你的價值。

假設你的值是50,值的範圍是0到100,那麼50/100 = 0.5。

類似地,如果您的值爲0,那麼0/100 = 0。

如果你的值是100,那麼100/100 = 1。

+0

雖然正確,但這更多的是評論而不是答案。也許你可以通過一個或兩個數學實現什麼來擴大一點? – Xotic750

+0

謝謝。現在我覺得自己很笨 – William

0

可以說屏幕的寬度是w,高度是h。

你的回答:

currentXPosition/W currentYPosition /小時

你能讓它根據您的需要。對於Y,您可能需要否定它,因爲Y Pos是負數,即 - (currentYPosition/h)

相關問題