У меня есть следующий код: яваскриптScriptProcessorNode Skipping
var audio = null;
try {
window.AudioContext = window.AudioContext || window.webkitAudioContext;
audio = new AudioContext();
} catch (e) {
alert("Web Audio API is not supported in this browser");
}
var scriptNode = audio.createScriptProcessor(1024, 0, 1);
var pos = 0.0;
scriptNode.onaudioprocess = function(audioProcessingEvent) {
var output = audioProcessingEvent.outputBuffer;
for (var channel = 0; channel < output.numberOfChannels; channel++) {
var data = output.getChannelData(channel);
for (var i = 0; i < data.length; i++) {
data[i] = Math.sin(pos);
pos += 2.0 * 3.14159 * 440.0/audio.sampleRate;
while (pos >= 2.0 * 3.14159) {
pos -= 2.0 * 3.14159;
}
}
}
}
scriptNode.connect(audio.destination);
Я пытаюсь получить доступ к аудио цикла веба-аудио, много в том, что низкоуровневый потоковом аудио API будет работать в C. Это код должен непрерывно воспроизводить тональный сигнал 440 Гц, пока страница не будет закрыта. Код будет воспроизводить тон, но через секунду или два звук проскакивает несколько раз, предполагая, что у меня закончилось пространство с буфером, и сценарий не называется каждым периодом буфера.
Я уверен, что решение этого простое, но что на самом деле вызывает пропуски? Как я могу заставить этот скрипт работать непрерывно?
EDIT: Пропуск пропускается, если я обновляю страницу. Это ошибка браузера?
Подождите ... они отказались от чего-то, не сделав замену первым? Шутки в сторону? – NmdMystery
Я по-прежнему получаю пропуск, если даю 0, хотя:/ – NmdMystery
Да, это устарело. Не означает, что вы не можете использовать его прямо сейчас, но ожидайте, что он уйдет в конце концов. –