林試圖讓使用上gainNode自動化我振盪器的包絡發生器,我希望能夠觸發每當一個事件發生(在這種情況下,點擊按鈕)的信封。網絡音頻API增益節點包絡發生器
但好像它的工作只是我第一次點擊。 http://jsfiddle.net/ehsanziya/T9mV2/
var context = new webkitAudioContext();
var osc = context.createOscillator();
var gain = context.createGainNode();
var now = context.currentTime;
osc.frequency.value = 100;
osc.type = "sine";
osc.connect(gain);
osc.noteOn(0);
gain.connect(context.destination);
gain.gain.value = 0;
var trigger = document.getElementById('play');
trigger.addEventListener('click', function(){
gain.gain.setValueAtTime(gain.gain.value, now);
gain.gain.linearRampToValueAtTime(1.0, now + 2.0);
gain.gain.linearRampToValueAtTime (0.0, now + 4.0);
});
爲什麼會這樣呢?什麼是創建可以由事件觸發包絡發生器的最佳方式?