Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/389.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用于Web音频API的数学相关Javascript_Javascript_Web Audio Api - Fatal编程技术网

用于Web音频API的数学相关Javascript

用于Web音频API的数学相关Javascript,javascript,web-audio-api,Javascript,Web Audio Api,我搞不清楚这道数学题 我正在为一个项目使用插件 使用它,我试图模拟一个控制web音频api增益节点的音量拨号 插件可以使用以下命令返回刻度盘的度数: console.log("event.target.degree: "+event.target.degree); //between +220 and +140 console.log("event.target.rotation: "+ event.target.rotation); //between -140 and +140 它还

我搞不清楚这道数学题

我正在为一个项目使用插件

使用它,我试图模拟一个控制web音频api增益节点的音量拨号

插件可以使用以下命令返回刻度盘的度数:

console.log("event.target.degree: "+event.target.degree); 
//between +220 and +140 
console.log("event.target.rotation: "+ event.target.rotation);
//between -140 and +140
它还可以使用以下命令返回旋转:

console.log("event.target.degree: "+event.target.degree); 
//between +220 and +140 
console.log("event.target.rotation: "+ event.target.rotation);
//between -140 and +140
我发现旋转更容易操作

模拟来自Harman/Karmon接收器的真实现有刻度盘,下限在-140旋转时,中间在0旋转时,上限在140旋转时

这是拨号盘的实际图像,因此您可以直观地看到(忽略图像中的数字0和40):

我的增益节点限制为01,1表示100%音量,0表示静音

-140度,即体积为0%的位置。web音频api gainNode.gain.value将位于0

当刻度盘处于0度时,这将是中点。对于gainNode.gain,音量应为50%,或0.50

当刻度盘处于+140度时,音量应为100%,或web音频api的增益值为1

我很难找出一个公式,它将在我的中工作(“mousemove”,function(event){})

我试过这个:

var volumeDial = JogDial(document.getElementById('volume-knob'), {
    debug: true,
    wheelSize: '90%',
    zIndex: '100',
    touchMode: 'wheel',
    knobSize: '3%',
    minDegree: -140,
    maxDegree: 140,
    degreeStartAt: 0
}).on("mousemove", function(event){
    var volume = event.target.rotation;
    console.log("event.target.rotation: "+ event.target.rotation);
    console.log("event.target.degree: "+event.target.degree);
    var theGain;
    theGain = Math.abs(50-(volume*0.3575)-100) *0.01;
    gainNode.gain.value = theGain;
console.log("gainNode.gain.value: "+gainNode.gain.value);
    source.connect(gainNode);
}).on("mouseup", function(event){
    console.log("event.target.rotation: "+event.target.rotation);
    console.log("event.target.degree: "+event.target.degree);
});
问题是它不准确。这很接近,但不是理想的效果。在0%时仍有声音,从0%到100%时,声音差别不大

在0%时,我的增益值为“0.0005000000237487257”。这声音一点也不安静,声音很大

在50%时,我的增益值为0.5,这是正确的

100%时,我的增益值为1.000499963760376

你真正需要的是

(event.target.rotation + 140) / 280
我甚至不知道你是从哪里得到这个乘数的。

你真正需要的是

(event.target.rotation + 140) / 280
我甚至不知道你是从哪里得到这个乘数的。

你真正需要的是

(event.target.rotation + 140) / 280
我甚至不知道你是从哪里得到这个乘数的。

你真正需要的是

(event.target.rotation + 140) / 280

我甚至不知道你是从哪里得到这个乘数的。

这很有效。。。我还发现一个完全不同的问题影响了它。我必须断开以前的一个源。在正常工作之前,必须从另一个具有自己设置的静态增益级别的功能连接。将增益与旋钮的位置线性调整是个坏主意。当增益为0.5时,声音几乎和1.0一样大,而不是一半大。你真的想要旋钮位置的指数函数,除了当旋钮一直向下时增益应该一直到零(指数函数永远不会完全到零)。类似于:
if(旋转==-140)增益=0;否则增益=数学功率(10,(旋转-140)/200)(您可能想尝试除200之外的除数,看看什么听起来最好,但这是一般的想法)。这很有效。。。我还发现一个完全不同的问题影响了它。我必须断开以前的一个源。在正常工作之前,必须从另一个具有自己设置的静态增益级别的功能连接。将增益与旋钮的位置线性调整是个坏主意。当增益为0.5时,声音几乎和1.0一样大,而不是一半大。你真的想要旋钮位置的指数函数,除了当旋钮一直向下时增益应该一直到零(指数函数永远不会完全到零)。类似于:
if(旋转==-140)增益=0;否则增益=数学功率(10,(旋转-140)/200)(您可能想尝试除200之外的除数,看看什么听起来最好,但这是一般的想法)。这很有效。。。我还发现一个完全不同的问题影响了它。我必须断开以前的一个源。在正常工作之前,必须从另一个具有自己设置的静态增益级别的功能连接。将增益与旋钮的位置线性调整是个坏主意。当增益为0.5时,声音几乎和1.0一样大,而不是一半大。你真的想要旋钮位置的指数函数,除了当旋钮一直向下时增益应该一直到零(指数函数永远不会完全到零)。类似于:
if(旋转==-140)增益=0;否则增益=数学功率(10,(旋转-140)/200)(您可能想尝试除200之外的除数,看看什么听起来最好,但这是一般的想法)。这很有效。。。我还发现一个完全不同的问题影响了它。我必须断开以前的一个源。在正常工作之前,必须从另一个具有自己设置的静态增益级别的功能连接。将增益与旋钮的位置线性调整是个坏主意。当增益为0.5时,声音几乎和1.0一样大,而不是一半大。你真的想要旋钮位置的指数函数,除了当旋钮一直向下时增益应该一直到零(指数函数永远不会完全到零)。类似于:
if(旋转==-140)增益=0;否则增益=数学功率(10,(旋转-140)/200)(您可能想尝试除200之外的除数,看看什么听起来最好,但这是一般的想法)。