Воспроизвести 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
Другие ссылки: