用于Web音频API的数学相关Javascript
我搞不清楚这道数学题 我正在为一个项目使用插件 使用它,我试图模拟一个控制web音频api增益节点的音量拨号 插件可以使用以下命令返回刻度盘的度数:用于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 它还
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):
我的增益节点限制为0和1,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之外的除数,看看什么听起来最好,但这是一般的想法)。