UNPKG

sdl-speaker

Version:

Output PCM stream data to speaker with SDL2.

91 lines (56 loc) 2.01 kB
node-sdl-speaker ====== > Output PCM stream data to speaker with SDL2. Especially for realtime audio stream. [![Build Status](https://travis-ci.org/0neSe7en/node-sdl-speaker.svg?branch=master)](https://travis-ci.org/0neSe7en/node-sdl-speaker) [![NPM](https://nodei.co/npm/sdl-speaker.png)](https://www.npmjs.com/package/sdl-speaker) ## Features - Stream Support. You can pipe a pcm stream to audio channel. - Multi Channels Support. You can open multi channels, it will mix all channels via `SDL_MixAudioFormat`. - Low Latency. ## Installing / Getting started ```shell $ npm install sdl-speaker ``` ## Example ```javascript const Speaker = require('sdl-speaker'); // Init SDL Speaker. Speaker.init(); // Register a channel for write buf. const testChannel = Speaker.register('test'); // pipe a pcm data to stream; fs.createReadStream('test.pcm').pipe(testChannel); // When you are ready.. // Start play audio Speaker.start(); ``` ## Api Reference ## Speaker.init([ option ]) Init SDL. `option` is optional. - `channels`: Channel count. default: `2`. - `samplesRate`: Sample rate for every channel. default: `44100`. - `samplesPerFrame`: Samples per frame. default: `1024`. ### Speaker.start() Start play audio. Read audio data from a ring buffer. If data in ring buffer less than `samplesPerFrame`, fill 0. ### Speaker.stop() Close and Destroy SDL player. ### Speaker.pause() Pause SDL player. ### Speaker.resume() Resume SDL player. ### Speaker.detach(name) Detach audio source from SDL. ### Speaker.cleanAll() Clean all audio sources's buffer. #### Speaker.register(name) -> audioChannel Register a audio source for write buffer. The `name` must unique. #### audioChannel.write(buffer) Write audio buffer to ring buffer. You can write before speaker start. #### audioChannel.clean() Clean this audio source's buffer. ## TODO - [ ] More Test. - [x] Fix Travis-CI build failed. - [x] Pipe stream to `audioSource`. - [ ] Customise `rbuf` capability. - [x] Self contained `SDL2`.