- From: Erik Werner <ew.rikner@gmail.com>
- Date: Sun, 22 Sep 2013 13:04:54 +0200
- To: Joseph Berkovitz <joe@noteflight.com>
- CC: public-audio-dev@w3.org
- Message-ID: <523ECED6.3020003@gmail.com>
Hello Joseph,
thanks for your advice. I will use the set() method in my future code.
Unfortunately this was not the reason for the problem I had. Also with
the set() method, no audio data
arrives in the otherNodeInput. Hope you or somebody else can me give any
further hints.
var audioContext = new AudioContext();
//get microphone input via getUserMedia
navigator.getUserMedia({audio: true}, function(stream) {
//set up source
var audioSource = audioContext.createMediaStreamSource(stream);
audioSource.buffer = stream;
//set up hanning window script processor node
var windowScriptProcessorNode =
audioContext.createScriptProcessor(BLOCKLENGTH,1,1);
windowScriptProcessorNode.onaudioprocess = function(e){
var windowNodeInput = e.inputBuffer.getChannelData(0);
var windowNodeOutput = e.outputBuffer.getChannelData(0);
if (windowfunction==true) {
windowNodeOutput.set(calc.applyDspWindowFunction(windowNodeInput));
}else{
windowNodeOutput.set(windowNodeInput);
}
}
//some other script processor node, just passing through
the signal
var otherScriptProcessorNode =
audioContext.createScriptProcessor(BLOCKLENGTH,1,1);
otherScriptProcessorNode.onaudioprocess = function(e){
var otherNodeInput = e.inputBuffer.getChannelData(0);
var otherNodeOutput = e.outputBuffer.getChannelData(0);
otherNodeOutput.set(otherNodeInput);
}
// this connnection works fine
audioSource.connect(windowScriptProcessorNode);
windowScriptProcessorNode.connect(audioContext.destination);
/* // this connnection does NOT work
audioSource.connect(windowScriptProcessorNode);
windowScriptProcessorNode.connect(otherScriptProcessorNode);
otherScriptProcessorNode.connect(audioContext.destination);
*/
}
Best regards,
Erik
Am 20.09.2013 19:12, schrieb Joseph Berkovitz:
> Looks like you have a couple of mistakes in the code:
>
>
>> //some other script processor node, just passing through
>> the signal
>> var otherScriptProcessorNode =
>> audioContext.createScriptProcessor(BLOCKLENGTH,1,1);
>> otherScriptProcessorNode.onaudioprocess = function(e){
>> var otherNodeInput = e.inputBuffer.getChannelData(0);
>> var otherNodeInput = e.outputBuffer.getChannelData(0);
>> otherNodeInput = otherNodeInput.subarray();
>
> 1. You probably meant to have two variables here: otherNodeInput and
> otherNodeOutput. Otherwise you'll be copying the output array back to
> itself.
>
> 2. Even after you have two variables, assigning an array to the local
> variable otherNodeOutput will not copy the data, it will just change
> what array that local variable points to. You'll need to do this instead:
>
> otherNodeOutput.set(otherNodeInput);
>
>
> Best,
>
> . . . . . ...Joe
>
> *Joe Berkovitz*
> President
>
> *Noteflight LLC*
> Boston, Mass.
> phone: +1 978 314 6271
> www.noteflight.com <http://www.noteflight.com>
> "Your music, everywhere"
>
Received on Sunday, 22 September 2013 11:05:28 UTC