Javascript Web音频Api,设置增益
我一直在看网络音频API,但无法让音频增益发挥作用。我在这里设置了一把小提琴,因此您可以了解该函数的应用: 我希望在点击事件中动态创建一个音调,但无法使该音调消失。以下是相关代码:Javascript Web音频Api,设置增益,javascript,web-audio-api,Javascript,Web Audio Api,我一直在看网络音频API,但无法让音频增益发挥作用。我在这里设置了一把小提琴,因此您可以了解该函数的应用: 我希望在点击事件中动态创建一个音调,但无法使该音调消失。以下是相关代码: var audioCtx = new AudioContext(); var osc = {}; // set up an object for all the oscillators var gainNodes = {}; // set up an object for all the gains var no
var audioCtx = new AudioContext();
var osc = {}; // set up an object for all the oscillators
var gainNodes = {}; // set up an object for all the gains
var now;
function tone(id,freq) {
// create osc / set gain / connect osc
gainNodes.id = audioCtx.createGain();
osc.id = audioCtx.createOscillator();
osc.id.connect(audioCtx.destination);
// set frequency
osc.id.frequency.value = freq;
// set gain at 1 and fade to 0 in one second
gainNodes.id.gain.value = 1.0;
gainNodes.id.gain.setValueAtTime(0, audioCtx.currentTime + 1);
// start and connect
osc.id.start(0);
osc.id.connect(audioCtx.destination);
}
关于是否可以这样做有什么想法吗?在您的代码中,您将振荡器连接到
目的地两次。
而不是连接振荡器->增益->目的地
gainNodes.id = audioCtx.createGain();
osc.id = audioCtx.createOscillator();
osc.id.connect(gainNodes.id);
// set frequency and gain
osc.id.frequency.value = freq;
gainNodes.id.gain.value = 1.0;
gainNodes.id.gain.setValueAtTime(0, audioCtx.currentTime + 1);
// start and connect
osc.id.start(0);
gainNodes.id.connect(audioCtx.destination);
再次单击互动程序时,需要断开audioCtx.destination的连接
你看到了吗?还包括关于如何使用滑块进行vinculate的代码(注释良好)。
function dismissTone(id,freq) {
gainNodes.id.gain.value = 0;
osc.id.disconnect(audioCtx.destination);
}
if($(this).hasClass('xx'))
tone(thisId,thisFreq);
else
dismissTone(thisId,thisFreq);