Gioca due volte a AudioBuffeRourcenode?
-
12-11-2019 - |
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)
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: