Home

Awesome

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

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

format.endianness marker

ValueMeaning
'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

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

format.sampleRate marker

ValueMeaning
NumberAny number, primarily default sample-rates

format.type marker

ValueMeaning
'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

License

(c) 2017 Dmitry Yvanov @ audiojs. MIT License