Я хочу воспроизводить аудиоданные из ArrayBuffer... поэтому я создаю свой массив и заполняю его микрофонным вводом.
Если я рисую эти данные на холсте, это выглядит как →
Итак, это работает!
Но если я хочу слушать эти данные с помощью
context.decodeAudioData(tmp, function(bufferN) { //tmp is a arrayBuffer
var out = context.createBufferSource();
out.buffer = bufferN;
out.connect(context.destination);
out.noteOn(0);
}, errorFunction);
Я ничего не слышу... потому что вызывается функция errorFunction. Но ошибка равна нулю!
Я также попытался получить такой буфер:
var soundBuffer = context.createBuffer(myArrayBuffer, true/*make mono*/);
Но я получаю сообщение об ошибке: Uncaught SyntaxError: указана недопустимая или недопустимая строка.
кто-нибудь, кто может дать мне подсказку?
EDIT 1 (больше кода и как я получаю микрофонный вход):
navigator.webkitGetUserMedia({audio: true}, function(stream) {
liveSource = context.createMediaStreamSource(stream);
// create a ScriptProcessorNode
if(!context.createScriptProcessor){
node = context.createJavaScriptNode(2048, 1, 1);
} else {
node = context.createScriptProcessor(2048, 1, 1);
}
node.onaudioprocess = function(e){
var tmp = new Uint8Array(e.inputBuffer.byteLength);
tmp.set(new Uint8Array(e.inputBuffer.byteLength), 0);
//Here comes the code from above.
Спасибо за вашу помощь!