我试图弄清楚如何读取AudioParam的当前值。当AudioNode通过AudioNode.connect(AudioParam)修改AudioParam时,似乎不影响AudioParam.value。
这是一个例子:
我有一个连接到gainNode(增益)的振荡器(源)。我有另一个振荡器(mod)路由到gainNode(modAmp)。然后将ModAmp连接到gain.gain。我也有一个meter.gain.gain,将文本框更改为显示gain.gain.value。当我们演奏振荡器时,听觉上,增益是上下移动的,但是该表保持恒定不变。如何获得AudioParam的实时阅读?
http://jsfiddle.net/eliotw/3o0d0ovs/4/
(请注意,每次要运行振荡器时,都必须运行脚本)
//create audio context
window.AudioContext = window.AudioContext || window.webkitAudioContext;
var context = new window.AudioContext();
//create source and gain, connect them
var source = context.createOscillator();
var gain = context.createGain();
source.connect(gain);
//create modulator and gain for it and connect them
var mod = context.createOscillator();
var modAmp = context.createGain();
mod.connect(modAmp);
//connect modulator gain node to audio param
modAmp.connect(gain.gain);
//connect to audio context
gain.connect(context.destination);
//source values
source.frequency.value = 220;
gain.gain.value = 0.5;
//mod values
mod.frequency.value = 6;
modAmp.gain.value = 0.5;
source.start(0);
mod.start(0);
setInterval(function() {
console.log(gain.gain.value);
},
600
);
最佳答案
你不能,真的。唯一的方法是将其连接到脚本处理器节点或分析器节点,然后查看输出位。后者(使用getFloatTimeDomainData)可能是我要做的。