Question

Devrais-je être capable d'utiliser le même AudioBufferSourceNode pour jouer un son à plusieurs reprises?Pour une raison quelconque, appeler noteGrainOn une deuxième fois, ne pas lire des fichiers audio, même avec un intervenant noteOff.

Ce code ne joue que le son une fois:

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)
Était-ce utile?

La solution

Une fois que vous avez joué à l'arrière d'un nœud source, vous ne pouvez pas réutiliser.Vous avez besoin de créer un autre AudioBufferSourceNode avec le même tampon.Découvrez l' Audio Web FAQ pour plus d'info (voir la noteOn() question).

Autres conseils

J'ai quelques astuces pour basculer play/pause facilement :) Vous pouvez mapper l'audio à une balise audio directement et utiliser le contrôle sur elle

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

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

Mon exemple en cours d'exécution ici : http://www.b2bweb.fr/bonus/Braincer/ J'utilise actuellement google Chrome construire 18.0.xxxx

D'autres refs :

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top