audio-buffer-list
Extension of BufferList for AudioBuffers. Handy and performant to deal with sequence of audio buffers − accumulate, read, stream, modify, delete etc. It provides interfaces both of AudioBuffer and BufferList, as well as bunch of other useful methods.
Usage
const AudioBufferList = require('audio-buffer-list')
const AudioBuffer = require('audio-buffer')
let abl = new AudioBufferList(new AudioBuffer(1, [0, .1, .2, .3]), new AudioBuffer(1, 100))
abl.append(new AudioBuffer(1, 100))
abl.length
abl.slice()
API
new AudioBufferList(source, options?)
source
can be AudioBuffer, AudioBuffer array, AudioBufferList, AudioBufferList array or callback.
options
may provide numberOfChannels
, context
for web audio API context and sampleRate
.
new
is not strictly required.
list.insert(buffer, offset=0)
Put new AudioBuffer, AudioBufferList or array of them at the offset.
list.delete(count, offset=0)
Delete number of samples starting at the offset. count
can possibly be negative, then items are deleted on the left side from the offset. offset
can also be negative, meaning to start from the end.
list.repeat(count)
Repeats contents of the list specified number of times. Modifies list in-place.
AudioBuffer properties & methods
list.duration
Total duration of the audio list, i.e. sum of buffers durations.
list.numberOfChannels
Detected from the buffer with max number of channels in the list. Can be set by options.
list.sampleRate
Just for convenience with AudioBuffer interface
list.getChannelData(channel)
Return FloatArray with merged data for the channel.
list.copyFromChannel(destination, channel, startInChannel=0)
Put data from the channel to destination FloatArray. Optional startInChannel
defines offset in the channel to start from.
list.copyToChannel(source, channel, startInChannel=0)
Put data from the source
FloatArray into channel, optionally starting at startInChannel
offset.
BufferList properties and methods
list.length
Total length of list in samples, i.e. sum of inner buffer lengths.
list.append(buffer)
list.slice(start?, end?)
list.shallowSlice(start?, end?)
list.get(idx, channel)
list.duplicate()
list.copy(dest, destStart?, srcStart?, srcEnd?)
list.consume(length)
Stream methods
See also