Convert data from one pcm-format to another.
Usage
const convert = require('pcm-convert')
//convert data from float32 to uint8 array
let uint8arr = convert([0, 0.1, 0.1, 0], 'float32', 'uint8')
//convert interleaved uint8 to planar float32 array
let float32arr = convert(new Uint8Array([127, 200, 127, 200]), 'uint8 stereo interleaved', 'float32 planar')
//deinterleave keeping the same data type
let int8arr = convert(new Int8Array([-100,100,-100,100]), 'interleaved', 'planar')
//change endianness keeping the same data type
let float32be = convert(new Float32Array([1,.5,-.5,-1]), 'le', 'be')
//use objects as formats
let float64 = convert(float32be, {
dtype: 'float32',
channels: 2,
interleaved: false,
endianness: 'be'
}, {
dtype: 'float64',
interleaved: true,
endianness: 'le'
})
//skip source format string, convert directly to data format
let uint16 = convert(new Uint8Array([0,255]), 'uint16')
//put data into target container skipping format strings
convert(new Uint8Array([0,255]), new Uint16Array(2))
//full arguments case
let uint16arr = convert([0, 0, 1, 1], 'float32 le stereo planar', 'uint16 interleaved be', new Uint16Array(4))
API
convert(src, srcFormat?, dstFormat?, dst?)
Takes data in src
container and converts from srcFormat
to dstFormat
. Format can be whether a string with markers or an object with properties, see audio-format module. If srcFormat
is skipped, it is detected from src
. Optionally a destination container can be provided as dst
, and in case if dstFormat
is skipped, it will be detected from dst
.
Source
Source format is inferred from source
data type, and extended with srcFormat
properties. By default source is considered to have planar mono le
properties. Every source type is handled as having the following data type:
Type | Dtype |
---|---|
Array |
float32 |
Float32Array |
float32 |
Float64Array |
float64 |
ArrayBuffer |
uint8 |
Buffer |
uint8 |
Uint8Array |
uint8 |
Uint8ClampedArray |
uint8 |
Uint16Array |
uint16 |
Uint32Array |
uint32 |
Int8Array |
int8 |
Int16Array |
int16 |
Int32Array |
int32 |
Format
Format can be defined as dtype
string with markers, eg. 'uint8 interleaved mono le'
, or 'float64 planar quad'
(markers can be skipped), or an object with the following properties:
Property | Meaning |
---|---|
dtype |
Data type string: uint8 , uint16 , uint32 , int8 , int16 , int32 , float32 , float64 , array (only dstFormat ), arraybuffer (only dstFormat ). |
interleaved |
Boolean indicating if data has interleaved or planar layout. |
channels |
Number of channels in source: mono , stereo , quad , 5.1 . |
endianness |
be or le , defaults to OS endianness. |
Related
- audio-format - audio format notation parser/stringifier.
- audio-speaker - output data to speaker in node.
- dtype - list of standard data types.
License
© 2017 Dima Yv. MIT License