我正在使用网络音频API做这个小实验,我希望垂直轴影响振荡器的增益值(参见下面的小提琴)。我需要将画布顶部和画布底部之间的值缩放到0到1之间,以便Y轴上的mousemove事件可听见地影响增益。我认为这是一个通用的数学问题,可以应用于任何数字范围,但我只是不知道该怎么做。
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;
});
答案 0 :(得分:1)
您可以将值除以最大值。
假设你的值是50,值的范围是0到100,然后是50/100 = 0.5。
同样,如果您的值为0,则0/100 = 0.
如果您的值为100,则100/100 = 1.
答案 1 :(得分:0)
让我们说屏幕的宽度是w,高度是h。
你的回答:
currentXPosition / w的 currentYPosition / h的
您可以根据自己的要求对其进行舍入。对于Y,你可能需要否定它,因为Y Pos是负的,即 - (currentYPosition / h)