audio-format

2.3.2 • Public • Published

audio-format Build Status unstable Greenkeeper badge

Audio data format parser/detector/serializer.

npm install audio-format

obj = format.parse(string)

Parse format properties from a string. Returns only guaranteed properties and does not try to guess them.

format.parse('interleaved uint8 le stereo 44100')
// {interleaved: true, type: 'uint8', endianness: 'le', channels: 2, sampleRate: 44100}
 
format.parse('stereo audiobuffer 96000')
// {channels: 2, type: 'audiobuffer', sampleRate: 96000, interleaved: false, endianness: 'le'}

str = format.stringify(obj, defaults?)

Get string identifying a format object. Optional defaults can indicate properties to skip if format value matches them.

format.stringify({channels: 2, interleaved: false})
// 'stereo planar'
 
format.stringify(
    {type: 'float32', endianness: 'le', interleaved: false, channels: 2},
    {endianness: 'le', type: 'float32'}
)
// 'stereo planar'
 
format.stringify(new AudioBuffer(null, {length: 10}))
// 'mono audiobuffer 44100'

obj = format.detect(obj)

Retrieve available format properties from an audio-like object.

format.detect(new AudioBuffer(null, {length: 10, numberOfChannels: 2}))
// {channels: 2, type: 'audiobuffer', sampleRate: 44100, endianness: 'le', interleaved: false}
 
format.detect(new Uint8ClampedArray([0, 255, 0, 255]))
// {type: 'uint8_clamped'}
 
format.detect(ndarray([0,0,0,0], [2,2]))
// {type: 'ndarray', interleaved: false, channels: 2}

str = format.type(obj)

Get type string identifying data container.

format.type(new AudioBuffer(ctx, {length: 1024})) // 'audiobuffer'
format.type(new Float32Array([-1, 1])) // 'float32'
format.type(new Float32Array([-1, 1]).buffer) // 'arraybuffer'
format.type(Array(100)) // 'array'
format.type(Buffer.from([0, 1, ...])) // 'buffer'
format.type(ndarray([0,0,0,0], [2,2])) // 'ndarray'

format.interleaved marker

Value Meaning
'interleaved', 'interleave' interleaved is true, channels is 2 or more.
'planar' interleaved is false, channels is 2 or more.

format.endianness marker

Value Meaning
'le' endianness is 'le' (little endian), type is not 'int8' or 'uint8'
'be' endianness is 'be' (big endian), type is not 'int8' or 'uint8'

format.channels marker

Value Meaning
'mono' 1 channel
'stereo' 2 channels
'2.1' 3 channels
'quad' 4 channels
'5.1' 5 channels
'*-channel' N channels

format.sampleRate marker

Value Meaning
Number Any number, primarily default sample-rates

format.type marker

Value Meaning
'uint8' Uint8Array
'uint8_clamped' Uint8ClampedArray
'uint16' Uint16Array
'uint32' Uint32Array
'int8' Int8Array
'int16' Int16Array
'int32' Int32Array
'float32', 'float' Float32Array
'float64' Float64Array
'array' Array
'arraybuffer' ArrayBuffer
'buffer' Buffer
'audiobuffer' AudioBuffer
'ndarray' ndarray
'ndsamples' ndsamples

See also

  • pcm-convert converts low-level pcm data from one format to another

License

(c) 2017 Dmitry Yvanov @ audiojs. MIT License

Package Sidebar

Install

npm i audio-format

Weekly Downloads

1,828

Version

2.3.2

License

MIT

Last publish

Collaborators

  • dfcreative