2014-02-19 66 views
1

我想發出振盪器音符2秒鐘。 但是接下來的時間,甚至再造一個新的振盪後,不播放聲音:網絡音頻:定時停止後重新創建振盪器

 oscillator = context.createOscillator(); 

     oscillator.frequency.value = 440;   
     oscillator.type = oscillator.SINE;   

     oscillator.connect(context.destination);   

     oscillator.start(0); 
     oscillator.stop(2); 

如果我忽略停止(2),而使用的setTimeout()來oscillator.stop()的函數,它的工作原理。 我讀過這個節點應該斷開連接,但disconnect()不接受一個時間作爲參數,只接受一個輸出索引。解決方案的任何指針?

回答

2

啓動和停止的「when」參數基於AudioContext.currentTime。 Zero表示「現在」 - 當創建AudioContext時,currentTime也從零開始。所以當你說「.start(0); .stop(2);」第二次,「停止」已經在過去(檢查AudioContext.currentTime - 它已經> 2),所以開始不會導致任何影響。

而不是你目前正在做的事情,這樣做:

oscillator.start(context.currentTime); 
    oscillator.stop(context.currentTime+2); 
+0

感謝在清除了,現在這個概念更加清晰給我。 – Robse