What is audio-buffer?
The audio-buffer npm package provides a simple and efficient way to handle audio data in the form of buffers. It allows you to create, manipulate, and process audio buffers, which are essential for various audio processing tasks such as audio synthesis, effects, and analysis.
What are audio-buffer's main functionalities?
Creating an Audio Buffer
This feature allows you to create a new audio buffer with a specified number of channels and samples per channel. In this example, a stereo buffer with 44100 samples per channel is created.
const AudioBuffer = require('audio-buffer');
const buffer = new AudioBuffer(2, 44100); // 2 channels, 44100 samples per channel
Filling an Audio Buffer with Data
This feature allows you to fill an audio buffer with data. In this example, each channel of the buffer is filled with a sine wave.
const AudioBuffer = require('audio-buffer');
const buffer = new AudioBuffer(2, 44100);
for (let channel = 0; channel < buffer.numberOfChannels; channel++) {
const data = buffer.getChannelData(channel);
for (let i = 0; i < data.length; i++) {
data[i] = Math.sin(2 * Math.PI * i / 44100); // Example: filling with a sine wave
}
}
Copying Audio Buffer Data
This feature allows you to copy data from one audio buffer to another. In this example, data from buffer1 is copied to buffer2.
const AudioBuffer = require('audio-buffer');
const buffer1 = new AudioBuffer(2, 44100);
const buffer2 = new AudioBuffer(2, 44100);
buffer2.copyToChannel(buffer1.getChannelData(0), 0);
buffer2.copyToChannel(buffer1.getChannelData(1), 1);
Resampling an Audio Buffer
This feature allows you to resample an audio buffer to a different sample rate. In this example, the buffer is resampled from 44100 samples per channel to 22050 samples per channel.
const AudioBuffer = require('audio-buffer');
const resample = require('audio-buffer-resample');
const buffer = new AudioBuffer(2, 44100);
const resampledBuffer = resample(buffer, 22050); // Resample to 22050 samples per channel
Other packages similar to audio-buffer
audio-buffer-utils
The audio-buffer-utils package provides a set of utility functions for working with audio buffers, such as copying, slicing, and filling buffers. It offers more specialized functions compared to audio-buffer, making it a good complement for more advanced audio buffer manipulations.
audio-context
The audio-context package provides a simplified interface for creating and managing Web Audio API contexts. While it focuses more on the context management rather than buffer manipulation, it can be used in conjunction with audio-buffer for comprehensive audio processing tasks.
audio-buffer-list
The audio-buffer-list package allows you to manage a list of audio buffers, providing functionalities such as concatenation and splitting of buffers. It is useful for handling multiple audio buffers in a more organized manner, which can complement the basic buffer manipulation provided by audio-buffer.
audio-buffer
AudioBuffer - basic audio data container class.
Useful instead of Buffer in audio streams, @audiojs components, in webworkers, nodejs, other environments without audio context.
Implementation is compatible with Web Audio API AudioBuffer, can be used as ponyfill.
Usage
new AudioBuffer(options)
Create audio buffer from options
.
options.length
— number of samples, minimum is 1.options.sampleRate
— default sample rate is 44100.options.numberOfChannels
— default number of channels is 1.
buffer.duration
Duration of the underlying audio data, in seconds.
buffer.length
Number of samples per channel.
buffer.sampleRate
Default sample rate is 44100.
buffer.numberOfChannels
Default number of channels is 1.
buffer.getChannelData(channel)
Get array containing the data for the channel (not copied).
buffer.copyFromChannel(destination, channelNumber, startInChannel=0)
Place data from channel to destination Float32Array.
buffer.copyToChannel(source, channelNumber, startInChannel=0)
Place data from source Float32Array to the channel.
Similar
- ndsamples — audio-wrapper for ndarrays. A somewhat alternative approach to wrap audio data, based on ndarrays, used by some modules in livejs.
- 1, 2, 3, 4 — other AudioBuffer implementations.
- audiodata alternative data holder from @mohayonao.
🕉