Воспроизвести AudioBufferSourceNode дважды?

Должен ли я использовать один и тот же 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)

Ответ 1

После воспроизведения источника node его нельзя использовать повторно. Вам нужно создать еще один AudioBufferSourceNode с тем же буфером. Ознакомьтесь с Часто задаваемые вопросы по веб-аудио для получения дополнительной информации (см. Вопрос noteOn()).

Ответ 2

У меня есть возможность взломать игру/паузу легко:) Вы можете напрямую сопоставить звук с существующим звуковым тегом и использовать элемент управления на нем

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

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

Мой пример работает здесь: http://www.b2bweb.fr/bonus/Braincer/ В настоящее время я использую Chrome build 18.0.xxxx

Другие ссылки: