Я работаю с Web Audio API и пытаюсь создать JavaScriptNode, который выводит импульс.То есть мне нужен узел, который будет выводить 1, за которым следует целая куча нулей, и ничего больше.
Я думал, что приведенный ниже код будет разумным способом сделать это.Я инициализирую переменную с именем timeForAnImpulse значением true и использую эту переменную для запуска импульсивного вывода при обратном вызове аудио.В обратном вызове я затем устанавливаю «timeForAnImpulse» в false.
Кажется, что это должно работать, но это не так.Вместо одного импульса я получаю последовательность импульсов (1 в начале каждого буфера).Есть идеи, что я делаю не так?
<script type="text/javascript">
window.onload = init;
function impulseNodeCB(evt){
if(timeForAnImpulse){
var buf = evt.outputBuffer.getChannelData(0);
buf[0] = 1;
timeForAnImpulse = false;
}
}
var timeForAnImpulse = true;
function init() {
var context = new webkitAudioContext();
impulseNode = context.createJavaScriptNode(2048,0,1);
impulseNode.onaudioprocess = impulseNodeCB;
impulseNode.connect(context.destination);
}
</script>
</head>