2012-02-24 16 views
10

क्या मुझे एक बार ध्वनि चलाने के लिए AudioBufferSourceNode का उपयोग करने में सक्षम होना चाहिए? किसी कारण से, noteGrainOn दूसरी बार कॉलिंग ऑडियो नहीं चलाता है, यहां तक ​​कि हस्तक्षेप noteOff के साथ भी।एक ऑडियोबफर सॉर्स नोड दो बार चलाएं?

इस कोड को केवल एक बार ध्वनि निभाता है:

var node = audioContext.createBufferSource() 
node.buffer = audioBuffer 
node.connect(audioContext.destination) 

var now = audioContext.currentTime 
node.noteGrainOn(now, 0, 2) 
node.noteOff(now + 2) 
node.noteGrainOn(now + 3, 0, 2) 
node.noteOff(now + 5) 

उत्तर

16

एक बार जब आप वापस एक स्रोत नोड खेला है, तो आप इसे पुन: उपयोग नहीं कर सकते। आपको एक ही बफर के साथ एक और AudioBufferSourceNode बनाने की आवश्यकता है। अधिक जानकारी के लिए Web Audio FAQ देखें (नोटऑन() प्रश्न देखें)। वर्तमान में http://www.b2bweb.fr/bonus/Braincer/ मैं:

+1

उत्तर और उत्तर के लिए धन्यवाद। – alltom

+1

जैसा कि आप कहते हैं, यह संभव नहीं लगता है http://www.html5rocks.com/en/tutorials/webaudio/intro/#toc-volume को पुनः लोड करने की आवश्यकता है। मुझे एक currentime // play = function() {source.noteOn (अब) का उपयोग करके पुनः लोड करने में भी परेशानी है; }, रोकें = फ़ंक्शन() {now = audioContext.currentTime; source.noteOff (0); } – molokoloco

2

मैं खेलने टॉगल करने के लिए कुछ हैक है/आसानी से रोकते हैं :) आप सीधे एक मौजूदा ऑडियो टैग करने के लिए ऑडियो मैप कर सकते हैं और यह

<audio id="sound" src="./test.mp3" controls="controls"></audio> 

var audioElement = document.getElementById('sound'); 
source = audioContext.createMediaElementSource(audioElement); 
/* ... */ 
audioElement.pause(); 

यहां चल मेरे उदाहरण पर नियंत्रण का उपयोग करें Chrome का उपयोग करने का निर्माण 18.0.xxxx

दूसरों refs:

संबंधित मुद्दे