Domanda

Dovrei essere in grado di usare lo stesso AudioBufferSourceNode per suonare un suono più volte? Per qualche motivo, chiamare noteGrainOn una seconda volta non gioca audio, anche con un interveniente noteOff.

Questo codice suona il suono solo una volta:

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)
È stato utile?

Soluzione

Una volta riprodotto un nodo di origine, non puoi riutilizzarlo. Devi crearne un altro AudioBufferSourceNode con lo stesso buffer. Dai un'occhiata al FAQ AUDIO Web Per maggiori informazioni (vedere la domanda NoteOn ()).

Altri suggerimenti

Ho un po 'di hack per attivare facilmente Play/Pause :) Puoi mappare direttamente l'audio su un tag audio esistente e utilizzare il controllo su di esso

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

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

Il mio esempio in esecuzione qui: http://www.b2bweb.fr/bonus/braincer/Attualmente uso Chrome build 18.0.xxxx

Altri Rifli:

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top