audio-buffer-from
Version:
Create AudioBuffer from any source
93 lines (66 loc) • 4.35 kB
Markdown
# audio-buffer-from [](https://travis-ci.org/audiojs/audio-buffer-from) [](http://github.com/badges/stability-badges) [](https://greenkeeper.io/)
Create [AudioBuffer](https://github.com/audiojs/audio-buffer) from any source.
## Usage
[](http://npmjs.org/package/audio-buffer-from)
```js
var createBuffer = require('audio-buffer-from')
//mono-buffer 1024 samples
var abuf = createBuffer(1024)
//stereo-buffer 1024 samples
var abuf2 = createBuffer(1024, 2)
//buffer from data with bound audio context
var abuf3 = createBuffer(floatArray, {context: audioContext})
//empty 1-sample mono buffer with default context
var abuf4 = createBuffer()
//0-length no-context buffer
var abuf5 = createBuffer(0)
//from duration
var abuf6 = createBuffer({duration: 1})
//from pcm data
var abuf7 = createBuffer(new Uint8Array([0, 0, 255, 255]), 'interleaved 96000')
//from data-uri
var abuf8 = createBuffer('data:application/octet-stream;base64,AP8A/w==', 'uint8')
//from base64 string
var abuf9 = createBuffer('AAAAAAAAAAAAAIA/AACAPw==', 'float32 stereo planar')
//from node Buffer
var abuf10 = createBuffer(Buffer.from([0, 255, 0, 127]), 'interleaved')
```
## API
### audioBuffer = createBuffer(source|length, channels|format|options)
Create audio buffer from any `source` data or a number indicating `length`, pass `options` to ensure output buffer parameters. A `channels` number or `format` string can be used to shorthand options argument.
#### Source:
| Type | Interpretation |
|---|---|
| `null` | Blank 1-sample length buffer. |
| `Number` | Length of resulting buffer. |
| `Array` of `Arrays` | Every subarray is considered a channel data. |
| `AudioBuffer` | Clone other AudioBuffer. |
| `AudioBufferList` | Coalesce [AudioBufferList](https://github.com/audiojs/audio-buffer-list) to AudioBuffer. |
| `Audio` | Retrieve AudioBuffer from [Audio](https://github.com/audiojs/audio). |
| `Object` | Create based on `length`/`duration`, `channels`/`numberOfChannels` and `sampleRate` properties. |
| `Array` of `Numbers` | Raw data, interpreted by `options.format`, defaults to `float64`. |
| `Float32Array` | Raw `float32` data, amplitude range is `-1..+1`. |
| `Float64Array` | Raw `float64` data, amplitude range is `-1..+1`. |
| `Int8Array` | Raw `int8` data, amplitude range is `-128..+127`. |
| `Uint8Array` | Raw `uint8` data, amplitude range is `0..255`. |
| `TypedArray` | Any other typed array, described by `options.format` argument (see [pcm-convert](https://github.com/audiojs/pcm-convert)). |
| `ArrayBuffer` | Raw data, interpreted by `options.format`. |
| `Buffer` | Raw data, interpreted by `options.format`. |
| `base64` string | [Base64](https://developer.mozilla.org/en/docs/Web/API/WindowBase64/Base64_encoding_and_decoding)-encoded data. |
| `dataURI` string | [DataURI](https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/Data_URIs) string. |
| `ndarray` | Create from [ndarray](https://npmjs.org/package/ndarray) instance. The `shape` property is considered as `[length, channels]`. |
| `ndsamples` | Create from [ndsamples](https://npmjs.org/package/ndsamples) instance, similar to ndarray. |
#### Options:
Property | Default | Meaning
|---|---|---
`length` | `1` | Buffer length. If `0`, buffer is unbound from context.
`context` | [`audio-context`](https://github.com/audiojs/audio-context) | Audio context to bind. `null`-context creates context-free audio buffer.
`channels`, `numberOfChannels` | `1` | Buffer number of channels.
`sampleRate`, `rate` | `44100` | Buffer sample rate.
`format` | `null` | Source pcm format string or object, see [audio-format](https://github.com/audio-format). If `null`, it will be detected from the `source`.
### Related
* [audio-buffer](https://github.com/audiojs/audio-buffer)
* [audio-buffer-utils](https://github.com/audiojs/audio-buffer-utils)
* [pcm-convert](https://github.com/audiojs/pcm-convert)
## License
© 2017 Dmitry Yv. MIT License