Socket
Socket
Sign inDemoInstall

audio-buffer-list

Package Overview
Dependencies
Maintainers
1
Versions
32
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

audio-buffer-list

Data structure for sequence of AudioBuffers


Version published
Weekly downloads
296
decreased by-32.42%
Maintainers
1
Weekly downloads
 
Created
Source

audio-buffer-list Build Status unstable

Extension of BufferList for AudioBuffers. Handy and performant to deal with (possibly long) sequence of audio buffers − accumulate, read, stream, modify, delete etc.

Usage

npm install audio-buffer-list

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 // 204
abl.slice() // <AudioBuffer 0, .1, .2, .3, 0...>

API

new AudioBufferList(source, options?)

Creates new audio buffer list instance, new is not strictly required.

source can be AudioBuffer, AudioBuffer array, AudioBufferList or AudioBufferList array.

options may provide numberOfChannels, context for web audio API context and sampleRate.

list.buffers

Sequence of audio buffers with actual data.

list.length

Total length of list in samples, i.e. sum of inner buffer lengths.

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.offset(sample)

Return [bufIdx, offset] pair for any sample number. bufIdx is the number of buffer in the list, offset is sample offset inside of that buffer.

list.append(buffer)

Insert new AudioBuffer, AudioBufferList or array of them to the end.

list.insert(offset=0, buffer)

Put new AudioBuffer, AudioBufferList or array of them at the offset.

list.delete(offset=0, count)

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. Retuns deleted AudioBufferList.

list.consume(count)

Delete data from the beginning.

list.slice(start=0, end=-0)

Return sublist of the initial list. The data is not copied but returned as subarrays. list.slice() just creates a duplicate that way.

list.clone(start=0, end=-0)

Return copy of the list, consisting of cloned buffers.

list.map((buffer, index, offset) => buffer|bool?, from=0, to=-0)

Create new list by mapping every buffer. Optionally pass offsets from and to to map only buffers covering the subset, keeping the rest unchanged. If no buffer returned from the mapper function then the old buffer will be preserved. If null returned then the buffer will be discarded. offset tracks buffer offset in new list, index reflects buffer count.

list = list.map((buf, idx, offset) => {
	for (let c = 0; c < channels; c++) {
		let data = buf.getChannelData(channel)

		//start buffer from the subset may start earlier than the subset
		//end buffer from the subset may end later than the subset
		for (let i = Math.max(from - offset, 0),
					l = Math.min(to - offset, buf.length);
					i < l; i++) {
			data[i] = process(data[i])
		}
	}
}, from, to)

list.each((buffer, index, offset) => {}, from=0, to=-0, {reversed}?)

Iterate over buffers from the indicated range. Buffers can be modified in-place during the iterating. Return false to break loop. Pass {reversed: true} as the last argument to iterate in reverse order.

list.reverse(start=0, end=-0)

Reverse part of the list.

list.repeat(count)

Repeats contents of the list specified number of times. Modifies list in-place.

list.getChannelData(channel, from=0, to=-0)

Return FloatArray with merged data for the channel.

list.copy(dest?, start=0, end=-0)

Put data into destination AudioBuffer or create one.

list.copyFromChannel(arr, channel, startInChannel=0)

Put data from the channel to destination FloatArray. Optional startInChannel defines offset in the channel to start from.

list.copyToChannel(arr, channel, startInChannel=0)

Put data from the source FloatArray into channel, optionally starting at startInChannel offset.

list.split(a, b, c, ...)

Split list at the indicated indexes, that just increases number of inner buffers and that's it.

list.join(start=0, end=-0)

Joins fragments for the indicated range together.

list.destroy()

Clean up list.

See also

  • audio — high-level class for audio
  • audio-buffer — audio buffer class for nodejs and browser
  • audio-buffer-utils — toolset for audio buffers
  • buffer-list — canonical BufferList implementation

Keywords

FAQs

Package last updated on 21 Apr 2017

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc