EDIT 3:Как подключить один или два музыкальных инструмента к API веб-аудио и разделить стереосигнал?
Это была только проблема с Firefox, работает в Chrome, поэтому проблема решена, см. Ответ ниже. Спасибо Крису за вашу помощь!
EDIT 2:
Следуя совету Криса я изменил одну линию на GetUserMedia вызов, но он не работает на данный момент, может быть, я использую неправильный синтаксис, но эта функция не документирована:
if(navigator.getUserMedia){
navigator.getUserMedia(
{ audio: { optional: [{ echoCancellation: false }] } }
,function(stream){ init_stream(stream); }
,function(err){ console.log('The following gUM error occured: ' + err); }
);
}
Кроме того, теперь вы можете следовать ходу здесь:
http://jsfiddle.net/stratboy/aapafrbu/1/
EDIT 1:
Я сейчас играю на клавиатуре> миксер> behringer UCA222> mac (usb). Мой текущий код, чтобы увидеть некоторые данные, следующий. Я вижу изменение данных для канала, но не для канала, и, несмотря на то, что я делаю на микшере. В чем причина?
window.AudioContext = window.AudioContext || window.webkitAudioContext;
navigator.getUserMedia = (navigator.getUserMedia ||
navigator.webkitGetUserMedia ||
navigator.mozGetUserMedia ||
navigator.msGetUserMedia);
var audiocontext = new (window.AudioContext || window.webkitAudioContext)();
var analyser_left = audiocontext.createAnalyser();
var analyser_right = audiocontext.createAnalyser();
var splitter = audiocontext.createChannelSplitter(2);
var index = 0;
function init_stream(stream){
window.audiosource = audiocontext.createMediaStreamSource(stream);
audiosource.connect(splitter);
splitter.connect(analyser_left,0);
splitter.connect(analyser_right,1);
listen();
}
function listen(){
requestAnimationFrame(listen);
analyser_left.fftSize = 256;
var leftBufferLength = analyser_left.frequencyBinCount;
var leftDataArray = new Uint8Array(leftBufferLength);
analyser_left.getByteTimeDomainData(leftDataArray);
$('.monitor_left').html(JSON.stringify(leftDataArray));
analyser_right.fftSize = 256;
var rightBufferLength = analyser_right.frequencyBinCount;
var rightDataArray = new Uint8Array(rightBufferLength);
analyser_right.getByteTimeDomainData(rightDataArray);
$('.monitor_right').html(JSON.stringify(rightDataArray));
}
if(navigator.getUserMedia){
navigator.getUserMedia(
{ audio: true }
,function(stream){ init_stream(stream); }
,function(err){ console.log('The following gUM error occured: ' + err); }
);
}
Я хотел бы сыграть свою гитару в компьютере и проанализировать звуки через API веб-аудио. Я знаю, что можно использовать микрофон, но как насчет реального инструмента?
Вы должны были бы получить предусилитель, подключить гитару к предусилителю, а затем взять выход из предварительного усилителя и подключить его к входу для микрофона. – idbehold