Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

merge multiple audio buffer sources

Question about html5 webaudio: is it possible to merge multiple songs together?

I have different tracks that are all played at the same time using webaudio but I need to process the audio so I need all the audio inside one buffer in stead of each of the tracks having it's own buffer.

i've tried merging them by adding their channel data but I always get "Uncaught RangeError: Index is out of range. "

function mergeBuffers(recBuffers, recLength){

  var result = new Float32Array(recLength*2);
  var offset = 0;
  for (var i = 0; i < recBuffers.length; i++){
    result.set(recBuffers[0], offset);
    offset += recBuffers[0].length;
  }
  return result;
}

var recBuffersL = [];
for (var i=0;i<audioTracks.length; i++)
{
    recBuffersL[i] = audioTracks[i].currentBuffer.getChannelData(0);

}

var recBuffersR = [];
for (var i=0;i<audioTracks.length; i++)
{
    recBuffersR[i] = audioTracks[i].currentBuffer.getChannelData(1);

}


var buffers = [];
buffers.push( mergeBuffers(recBuffersL, recBuffersL.length) );
buffers.push( mergeBuffers(recBuffersR, recBuffersR.length) );
like image 782
Thomas Avatar asked Jun 18 '26 13:06

Thomas


1 Answers

Turns out it is possible: i had to sum the Float32Array

like image 171
Thomas Avatar answered Jun 21 '26 02:06

Thomas



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!