Воспроизвести AudioBufferSourceNode дважды? - PullRequest
10 голосов
/ 25 февраля 2012

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

Ответы [ 2 ]

16 голосов
/ 25 февраля 2012

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

2 голосов
/ 23 марта 2012

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

<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

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

...