Skip to content

Commit aa77893

Browse files
committed
Merge pull request mattdiamond#9 from cwilso/master
Fixed getBuffer to return a stereo set of buffers, and fixed README.
2 parents fcc3431 + 86de2c2 commit aa77893

File tree

2 files changed

+30
-12
lines changed

2 files changed

+30
-12
lines changed

README.md

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,21 @@ In addition, you may specify the type of Blob to be returned (defaults to 'audio
3939

4040
rec.getBuffer([callback])
4141

42-
This will pass the recorded buffer (as a Float32Array) to the callback. It can be played back by creating a new source buffer and setting this as its channel data (i.e. `newSource.buffer.getChannelData(0).set(recordedBuffer)`).
42+
This will pass the recorded stereo buffer (as an array of two Float32Arrays, for the separate left and right channels) to the callback. It can be played back by creating a new source buffer and setting these buffers as the separate channel data:
43+
44+
function getBufferCallback( buffers ) {
45+
var newSource = audioContext.createBufferSourceNode();
46+
var newBuffer = audioContext.createBuffer( 2, buffers[0].length, audioContext.sampleRate );
47+
newBuffer.getChannelData(0).set(buffers[0]);
48+
newBuffer.getChannelData(1).set(buffers[1]);
49+
newSource.buffer = newBuffer;
50+
51+
newSource.connect( audioContext.destination );
52+
newSource.start(0);
53+
}
54+
55+
This sample code will play back the stereo buffer.
56+
4357

4458
rec.configure(config)
4559

recorderWorker.js

Lines changed: 15 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
var recLength = 0,
2-
recBuffers = [],
2+
recBuffersL = [],
3+
recBuffersR = [],
34
sampleRate;
45

56
this.onmessage = function(e){
@@ -27,29 +28,32 @@ function init(config){
2728
}
2829

2930
function record(inputBuffer){
30-
var bufferL = inputBuffer[0];
31-
var bufferR = inputBuffer[1];
32-
var interleaved = interleave(bufferL, bufferR);
33-
recBuffers.push(interleaved);
34-
recLength += interleaved.length;
31+
recBuffersL.push(inputBuffer[0]);
32+
recBuffersR.push(inputBuffer[1]);
33+
recLength += inputBuffer[0].length;
3534
}
3635

3736
function exportWAV(type){
38-
var buffer = mergeBuffers(recBuffers, recLength);
39-
var dataview = encodeWAV(buffer);
37+
var bufferL = mergeBuffers(recBuffersL, recLength);
38+
var bufferR = mergeBuffers(recBuffersR, recLength);
39+
var interleaved = interleave(bufferL, bufferR);
40+
var dataview = encodeWAV(interleaved);
4041
var audioBlob = new Blob([dataview], { type: type });
4142

4243
this.postMessage(audioBlob);
4344
}
4445

4546
function getBuffer() {
46-
var buffer = mergeBuffers(recBuffers, recLength)
47-
this.postMessage(buffer);
47+
var buffers = [];
48+
buffers.push( mergeBuffers(recBuffersL, recLength) );
49+
buffers.push( mergeBuffers(recBuffersR, recLength) );
50+
this.postMessage(buffers);
4851
}
4952

5053
function clear(){
5154
recLength = 0;
52-
recBuffers = [];
55+
recBuffersL = [];
56+
recBuffersR = [];
5357
}
5458

5559
function mergeBuffers(recBuffers, recLength){

0 commit comments

Comments
 (0)