Coder Social home page Coder Social logo

node-speaker's Introduction

node-speaker

Output PCM audio data to the speakers

Build Status

A Writable stream instance that accepts PCM audio data and outputs it to the speakers. The output is backed by mpg123's audio output modules, which in turn use any number of audio backends commonly found on Operating Systems these days.

Installation

Simply compile and install node-speaker using npm:

npm install speaker

On Debian/Ubuntu, the ALSA backend is selected by default, so be sure to have the alsa.h header file in place:

sudo apt-get install libasound2-dev

Example

Here's an example of piping stdin to the speaker, which should be 2 channel, 16-bit audio at 44,100 samples per second (a.k.a CD quality audio).

const Speaker = require('speaker');

// Create the Speaker instance
const speaker = new Speaker({
  channels: 2,          // 2 channels
  bitDepth: 16,         // 16-bit samples
  sampleRate: 44100     // 44,100 Hz sample rate
});

// PCM data from stdin gets piped into the speaker
process.stdin.pipe(speaker);

API

require('speaker') directly returns the Speaker constructor. It is the only interface exported by node-speaker.

new Speaker([ options ]) -> Speaker instance

Creates a new Speaker instance, which is a writable stream that you can pipe PCM audio data to. The optional options object may contain any of the Writable base class options, as well as any of these PCM formatting options:

  • channels - The number of audio channels. PCM data must be interleaved. Defaults to 2.
  • bitDepth - The number of bits per sample. Defaults to 16 (16-bit).
  • sampleRate - The number of samples per second per channel. Defaults to 44100.
  • signed - Boolean specifying if the samples are signed or unsigned. Defaults to true when bit depth is 8-bit, false otherwise.
  • float - Boolean specifying if the samples are floating-point values. Defaults to false.
  • samplesPerFrame - The number of samples to send to the audio backend at a time. You likely don't need to mess with this value. Defaults to 1024.
  • device - The name of the playback device. E.g. 'hw:0,0' for first device of first sound card or 'hw:1,0' for first device of second sound card. Defaults to null which will pick the default device.

"open" event

Fired when the backend open() call has completed. This happens once the first write() call happens on the speaker instance.

"flush" event

Fired after the speaker instance has had end() called, and after the audio data has been flushed to the speakers.

"close" event

Fired after the "flush" event, after the backend close() call has completed. This speaker instance is essentially finished after this point.

Audio Backend Selection

node-speaker is backed by mpg123's "output modules", which in turn use one of many popular audio backends like ALSA, OSS, SDL, and lots more. The default backends for each operating system are described in the table below:

Operating System Audio Backend Description
Linux alsa Output audio using Advanced Linux Sound Architecture (ALSA).
Mac OS X coreaudio Output audio using Mac OS X's CoreAudio.
Windows win32 Audio output for Windows (winmm).
Solaris sun Audio output for Sun Audio.

To manually override the default backend, pass the --mpg123-backend switch to npm/node-gyp:

npm install speaker --mpg123-backend=openal

node-speaker's People

Contributors

attract-project avatar bradjc avatar dy avatar fazendaaa avatar hlolli avatar itsjustmechris avatar jproulx avatar karlmikko avatar lakuapik avatar linusu avatar mildsunrise avatar mrinalvirnave avatar nacgarg avatar rgeraldporter avatar rtk avatar santigimeno avatar shelladdicted avatar sparkpunkd avatar tootallnate avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

node-speaker's Issues

throw new Error('open() failed: ' + r);

on Raspberry Pi, speaker runs fine, but regularly and frequently throws an error, which I try to catch, but dont ((

please advise

my script plays an mp3 on event:

                        fs.createReadStream("camera.mp3")
                        .pipe(new lame.Decoder())
                        .on('format', function (format) {
                            try {
                                this.pipe(new Speaker(format));
                            } catch (e) {
                                return false;
                            }
                        });

the sound is desirable but not critical.
the intermittent error thrown:

[../deps/mpg123/src/output/alsa.c:165] error: cannot open device default

/home/pi/node_modules/speaker/index.js:106
    throw new Error('open() failed: ' + r);
          ^
Error: open() failed: -1
    at Speaker._open (/home/pi/node_modules/speaker/index.js:106:11)
    at Speaker._write (/home/pi/node_modules/speaker/index.js:181:19)
    at doWrite (/home/pi/node_modules/speaker/node_modules/readable-stream/lib/_stream_writable.js:211:10)
    at writeOrBuffer (/home/pi/node_modules/speaker/node_modules/readable-stream/lib/_stream_writable.js:201:5)
    at Speaker.Writable.write (/home/pi/node_modules/speaker/node_modules/readable-stream/lib/_stream_writable.js:172:11)
    at write (/home/pi/node_modules/lame/node_modules/readable-stream/lib/_stream_readable.js:481:24)
    at flow (/home/pi/node_modules/lame/node_modules/readable-stream/lib/_stream_readable.js:491:7)
    at Decoder.pipeOnReadable (/home/pi/node_modules/lame/node_modules/readable-stream/lib/_stream_readable.js:523:5)
    at Decoder.EventEmitter.emit (events.js:93:17)
    at emitReadable (/home/pi/node_modules/lame/node_modules/readable-stream/lib/_stream_readable.js:343:10)

thanks for taking the time

~:"

Error installing speaker

Hi.

I've installed some packages before with no problems, but with this one, I've tried lot of things with same results.

user@laptop:~/Mayhem/server/node_modules$ npm install speaker
npm WARN package.json [email protected] No README.md file found!
npm http GET https://registry.npmjs.org/speaker
npm http 304 https://registry.npmjs.org/speaker
npm http GET https://registry.npmjs.org/nan
npm http GET https://registry.npmjs.org/bindings
npm http GET https://registry.npmjs.org/debug
npm http 304 https://registry.npmjs.org/bindings
npm http 304 https://registry.npmjs.org/debug
npm http 304 https://registry.npmjs.org/nan

> [email protected] install /home/user/Mayhem/server/node_modules/speaker
> node-gyp rebuild

npm WARN This failure might be due to the use of legacy binary "node"
npm WARN For further explanations, please read
/usr/share/doc/nodejs/README.Debian

npm ERR! [email protected] install: `node-gyp rebuild`
npm ERR! `sh "-c" "node-gyp rebuild"` failed with 1
npm ERR! 
npm ERR! Failed at the [email protected] install script.
npm ERR! This is most likely a problem with the speaker package,
npm ERR! not with npm itself.
npm ERR! Tell the author that this fails on your system:
npm ERR!     node-gyp rebuild
npm ERR! You can get their info via:
npm ERR!     npm owner ls speaker
npm ERR! There is likely additional logging output above.

npm ERR! System Linux 3.11.0-20-generic
npm ERR! command "/usr/bin/nodejs" "/usr/bin/npm" "install" "speaker"
npm ERR! cwd /home/user/Mayhem/server/node_modules
npm ERR! node -v v0.10.15
npm ERR! npm -v 1.2.18
npm ERR! code ELIFECYCLE
npm ERR! 
npm ERR! Additional logging details can be found in:
npm ERR!     /home/user/Mayhem/server/node_modules/npm-debug.log
npm ERR! not ok code 0

Any help please?

Note, i've got installed libasound2-dev

when i use npm install speaker,i met this error.Can anyone help me?

D:\web_frontend>npm install speaker
npm WARN package.json [email protected] No README data
\
> [email protected] install D:\web_frontend\node_modules\speaker
> node-gyp rebuild


D:\web_frontend\node_modules\speaker>node "C:\Program Files (x86)\nodejs\node_mo
dules\npm\bin\node-gyp-bin\\..\..\node_modules\node-gyp\bin\node-gyp.js" rebuild

生成启动时间 2015/3/25 10:33:52。
__________________________________________________
项目“D:\web_frontend\node_modules\speaker\build\binding.sln”(默认目标):

目标 ValidateSolutionConfiguration:
    正在生成解决方案配置“Release|Win32”。
目标 Build:
    目标 output:
        VCBuild.exe D:\web_frontend\node_modules\speaker\build\deps\mpg123\outpu
t.vcproj "Release|Win32"
        The following error has occurred during XML parsing:

        File: D:\web_frontend\node_modules\speaker\build\deps\mpg123\output.vcpr
oj
        Line: 1
        Column: 5683
        VCBUILD : error Message:
        系统错误: -2147154687。

        The file 'D:\web_frontend\node_modules\speaker\build\deps\mpg123\output.
vcproj' has failed to load.
    已完成在项目“binding.sln”中生成目标“output”-- 失败。
已完成在项目“binding.sln”中生成目标“Build”-- 失败。

已完成生成项目“binding.sln”-- 失败。

生成失败。
VCBUILD : error Message:
    0 个警告
    1 个错误

已用时间 00:00:04.62
gyp ERR! build error
gyp ERR! stack Error: `msbuild` failed with exit code: 1
gyp ERR! stack     at ChildProcess.onExit (C:\Program Files (x86)\nodejs\node_mo
dules\npm\node_modules\node-gyp\lib\build.js:267:23)
gyp ERR! stack     at ChildProcess.emit (events.js:98:17)
gyp ERR! stack     at Process.ChildProcess._handle.onexit (child_process.js:810:
12)
gyp ERR! System Windows_NT 6.1.7601
gyp ERR! command "node" "C:\\Program Files (x86)\\nodejs\\node_modules\\npm\\nod
e_modules\\node-gyp\\bin\\node-gyp.js" "rebuild"
gyp ERR! cwd D:\web_frontend\node_modules\speaker
gyp ERR! node -v v0.10.30
gyp ERR! node-gyp -v v0.13.1
gyp ERR! not ok
npm ERR! [email protected] install: `node-gyp rebuild`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the [email protected] install script.
npm ERR! This is most likely a problem with the speaker package,
npm ERR! not with npm itself.
npm ERR! Tell the author that this fails on your system:
npm ERR!     node-gyp rebuild
npm ERR! You can get their info via:
npm ERR!     npm owner ls speaker
npm ERR! There is likely additional logging output above.

npm ERR! System Windows_NT 6.1.7601
npm ERR! command "C:\\Program Files (x86)\\nodejs\\\\node.exe" "C:\\Program File
s (x86)\\nodejs\\node_modules\\npm\\bin\\npm-cli.js" "install" "speaker"
npm ERR! cwd D:\web_frontend
npm ERR! node -v v0.10.30
npm ERR! npm -v 1.4.21
npm ERR! code ELIFECYCLE
npm ERR!
npm ERR! Additional logging details can be found in:
npm ERR!     D:\web_frontend\npm-debug.log
npm ERR! not ok code 0

Examples do not work on Ubuntu 13.10 with Node.js 0.10.26

Hi. I can't get anything to work with this package including the examples that come with it. The sine.js example yields:
enerating a 440hz sine wave for 2 seconds

/home/rich/node/testalsa/node_modules/speaker/examples/sine.js:54
fn(null, buf);
^
TypeError: undefined is not a function
at Readable.read as _read
at Readable.read (_stream_readable.js:320:10)
at Readable.on (_stream_readable.js:701:14)
at Readable.pipe (_stream_readable.js:556:10)
at Object. (/home/rich/node/testalsa/node_modules/speaker/examples/sine.js:30:6)
at Module._compile (module.js:456:26)
at Object.Module._extensions..js (module.js:474:10)
at Module.load (module.js:356:32)
at Function.Module._load (module.js:312:12)
at Function.Module.runMain (module.js:497:10)

The stdin.js example gives the following error after I type a few keys:

events.js:72
throw er; // Unhandled 'error' event
^
Error: write() failed: 4
at afterWrite (/home/rich/node/testalsa/node_modules/speaker/index.js:204:12)
r

It is totally possible this is user error in some way. FWIW I haven't gotten any node.js audio module except for node-lame to work. I do have alsa on this Ubuntu install and audio applications like audacious can record and playback audio. My audio hardware looks like this (aplay -l):

card 0: PCH [HDA Intel PCH], device 0: ALC283 Analog [ALC283 Analog]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 0: PCH [HDA Intel PCH], device 3: ID 2882 Digital [ID 2882 Digital]
Subdevices: 1/1
Subdevice #0: subdevice #0

Failed to exec install script

Hey Nate!

I just tried to install timbre and I had this error.

> [email protected] install /Users/thomas/Desktop/synthme/node_modules/timbre/node_modules/speaker
> node-gyp rebuild

gyp info it worked if it ends with ok
gyp info using [email protected]
gyp info using [email protected] | darwin | x64
gyp info spawn python
gyp info spawn args [ '/usr/local/lib/node_modules/npm/node_modules/node-gyp/gyp/gyp_main.py',
gyp info spawn args   'binding.gyp',
gyp info spawn args   '-f',
gyp info spawn args   'make',
gyp info spawn args   '-I',
gyp info spawn args   '/Users/thomas/Desktop/synthme/node_modules/timbre/node_modules/speaker/build/config.gypi',
gyp info spawn args   '-I',
gyp info spawn args   '/usr/local/lib/node_modules/npm/node_modules/node-gyp/addon.gypi',
gyp info spawn args   '-I',
gyp info spawn args   '/Users/thomas/.node-gyp/0.11.12/common.gypi',
gyp info spawn args   '-Dlibrary=shared_library',
gyp info spawn args   '-Dvisibility=default',
gyp info spawn args   '-Dnode_root_dir=/Users/thomas/.node-gyp/0.11.12',
gyp info spawn args   '-Dmodule_root_dir=/Users/thomas/Desktop/synthme/node_modules/timbre/node_modules/speaker',
gyp info spawn args   '--depth=.',
gyp info spawn args   '--no-parallel',
gyp info spawn args   '--generator-output',
gyp info spawn args   'build',
gyp info spawn args   '-Goutput_dir=.' ]
gyp info spawn make
gyp info spawn args [ 'BUILDTYPE=Release', '-C', 'build' ]
  CC(target) Release/obj.target/output/deps/mpg123/src/output/coreaudio.o
  LIBTOOL-STATIC Release/liboutput.a
  CXX(target) Release/obj.target/binding/src/binding.o
In file included from ../src/binding.cc:8:
In file included from ../src/node_pointer.h:7:
../node_modules/nan/nan.h:342:74: error: too many arguments to function call, expected at most 3, have 4
    return v8::Signature::New(v8::Isolate::GetCurrent(), receiver, argc, argv);
           ~~~~~~~~~~~~~~~~~~                                            ^~~~
/Users/thomas/.node-gyp/0.11.12/deps/v8/include/v8.h:3585:3: note: 'New' declared here
  static Local<Signature> New(Handle<FunctionTemplate> receiver =
  ^
In file included from ../src/binding.cc:8:
In file included from ../src/node_pointer.h:7:
../node_modules/nan/nan.h:370:27: error: cannot initialize a parameter of type 'int' with an rvalue of type 'v8::Isolate *'
    return v8::Array::New(v8::Isolate::GetCurrent());
                          ^~~~~~~~~~~~~~~~~~~~~~~~~
/Users/thomas/.node-gyp/0.11.12/deps/v8/include/v8.h:2335:31: note: passing argument to parameter 'length' here
  static Local<Array> New(int length = 0);
                              ^
In file included from ../src/binding.cc:8:
In file included from ../src/node_pointer.h:7:
../node_modules/nan/nan.h:375:54: error: too many arguments to function call, expected at most single argument 'length', have 2 arguments
    return v8::Array::New(v8::Isolate::GetCurrent(), length);
           ~~~~~~~~~~~~~~                            ^~~~~~
/Users/thomas/.node-gyp/0.11.12/deps/v8/include/v8.h:2335:3: note: 'New' declared here
  static Local<Array> New(int length = 0);
  ^
In file included from ../src/binding.cc:8:
In file included from ../src/node_pointer.h:7:
../node_modules/nan/nan.h:380:53: error: too many arguments to function call, expected single argument 'time', have 2 arguments
    return v8::Date::New(v8::Isolate::GetCurrent(), time).As<v8::Date>();
           ~~~~~~~~~~~~~                            ^~~~
/Users/thomas/.node-gyp/0.11.12/deps/v8/include/v8.h:2866:3: note: 'New' declared here
  static Local<Value> New(double time);
  ^
In file included from ../src/binding.cc:8:
In file included from ../src/node_pointer.h:7:
../node_modules/nan/nan.h:380:70: error: expected '(' for function-style cast or type construction
    return v8::Date::New(v8::Isolate::GetCurrent(), time).As<v8::Date>();
                                                             ~~~~~~~~^
../node_modules/nan/nan.h:380:72: error: expected expression
    return v8::Date::New(v8::Isolate::GetCurrent(), time).As<v8::Date>();
                                                                       ^
../node_modules/nan/nan.h:385:53: error: too many arguments to function call, expected single argument 'time', have 2 arguments
    return v8::Date::New(v8::Isolate::GetCurrent(), time).As<v8::Date>();
           ~~~~~~~~~~~~~                            ^~~~
/Users/thomas/.node-gyp/0.11.12/deps/v8/include/v8.h:2866:3: note: 'New' declared here
  static Local<Value> New(double time);
  ^
In file included from ../src/binding.cc:8:
In file included from ../src/node_pointer.h:7:
../node_modules/nan/nan.h:385:70: error: expected '(' for function-style cast or type construction
    return v8::Date::New(v8::Isolate::GetCurrent(), time).As<v8::Date>();
                                                             ~~~~~~~~^
../node_modules/nan/nan.h:385:72: error: expected expression
    return v8::Date::New(v8::Isolate::GetCurrent(), time).As<v8::Date>();
                                                                       ^
../node_modules/nan/nan.h:388:15: error: no type named 'UnboundScript' in namespace 'v8'
  typedef v8::UnboundScript NanUnboundScript;
          ~~~~^
../node_modules/nan/nan.h:396:9: error: no member named 'ScriptCompiler' in namespace 'v8'
    v8::ScriptCompiler::Source source(s, origin);
    ~~~~^
../node_modules/nan/nan.h:397:16: error: no member named 'ScriptCompiler' in namespace 'v8'
    return v8::ScriptCompiler::CompileUnbound(
           ~~~~^
../node_modules/nan/nan.h:398:37: error: use of undeclared identifier 'source'; did you mean 'v8::Extension::source'?
        v8::Isolate::GetCurrent(), &source);
                                    ^~~~~~
                                    v8::Extension::source
/Users/thomas/.node-gyp/0.11.12/deps/v8/include/v8.h:3712:46: note: 'v8::Extension::source' declared here
  const String::ExternalAsciiStringResource* source() const {
                                             ^
In file included from ../src/binding.cc:8:
In file included from ../src/node_pointer.h:7:
../node_modules/nan/nan.h:398:36: error: must explicitly qualify name of member function when taking its address
        v8::Isolate::GetCurrent(), &source);
                                   ^~~~~~~
                                    Extension::
../node_modules/nan/nan.h:405:9: error: no member named 'ScriptCompiler' in namespace 'v8'
    v8::ScriptCompiler::Source source(s);
    ~~~~^
../node_modules/nan/nan.h:406:16: error: no member named 'ScriptCompiler' in namespace 'v8'
    return v8::ScriptCompiler::CompileUnbound(
           ~~~~^
../node_modules/nan/nan.h:407:37: error: use of undeclared identifier 'source'; did you mean 'v8::Extension::source'?
        v8::Isolate::GetCurrent(), &source);
                                    ^~~~~~
                                    v8::Extension::source
/Users/thomas/.node-gyp/0.11.12/deps/v8/include/v8.h:3712:46: note: 'v8::Extension::source' declared here
  const String::ExternalAsciiStringResource* source() const {
                                             ^
In file included from ../src/binding.cc:8:
In file included from ../src/node_pointer.h:7:
../node_modules/nan/nan.h:407:36: error: must explicitly qualify name of member function when taking its address
        v8::Isolate::GetCurrent(), &source);
                                   ^~~~~~~
                                    Extension::
../node_modules/nan/nan.h:432:36: error: too many arguments to function call, expected single argument 'value', have 2 arguments
        v8::Isolate::GetCurrent(), val).As<v8::NumberObject>();
                                   ^~~
/Users/thomas/.node-gyp/0.11.12/deps/v8/include/v8.h:2904:3: note: 'New' declared here
  static Local<Value> New(double value);
  ^
fatal error: too many errors emitted, stopping now [-ferror-limit=]
20 errors generated.
make: *** [Release/obj.target/binding/src/binding.o] Error 1
gyp ERR! build error 
gyp ERR! stack Error: `make` failed with exit code: 2
gyp ERR! stack     at ChildProcess.onExit (/usr/local/lib/node_modules/npm/node_modules/node-gyp/lib/build.js:267:23)
gyp ERR! stack     at ChildProcess.EventEmitter.emit (events.js:107:17)
gyp ERR! stack     at Process.ChildProcess._handle.onexit (child_process.js:1045:12)
gyp ERR! System Darwin 13.3.0
gyp ERR! command "node" "/usr/local/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild"
gyp ERR! cwd /Users/thomas/Desktop/synthme/node_modules/timbre/node_modules/speaker
gyp ERR! node -v v0.11.12
gyp ERR! node-gyp -v v0.13.1
gyp ERR! not ok 
npm info [email protected] Failed to exec install script
npm info /Users/thomas/Desktop/synthme/node_modules/timbre/node_modules/speaker unbuild
npm info preuninstall [email protected]
npm info uninstall [email protected]
npm info postuninstall [email protected]
npm info /Users/thomas/Desktop/synthme/node_modules/timbre unbuild
npm info preuninstall [email protected]
npm info uninstall [email protected]
npm info postuninstall [email protected]
npm ERR! [email protected] install: `node-gyp rebuild`
npm ERR! Exit status 1
npm ERR! 
npm ERR! Failed at the [email protected] install script.
npm ERR! This is most likely a problem with the speaker package,
npm ERR! not with npm itself.
npm ERR! Tell the author that this fails on your system:
npm ERR!     node-gyp rebuild
npm ERR! You can get their info via:
npm ERR!     npm owner ls speaker
npm ERR! There is likely additional logging output above.

npm ERR! System Darwin 13.3.0
npm ERR! command "node" "/usr/local/bin/npm" "install" "timbre"
npm ERR! cwd /Users/thomas/Desktop/synthme
npm ERR! node -v v0.11.12
npm ERR! npm -v 1.4.14
npm ERR! code ELIFECYCLE
npm ERR! 
npm ERR! Additional logging details can be found in:
npm ERR!     /Users/thomas/Desktop/synthme/npm-debug.log
npm ERR! not ok code 0

Missing end of file

Hi,

It seems that when playing an mp3 file the api skips some part of the file's end.

Try the code below to retrieve a mp3 from google.

var fs = require('fs');
var lame = require('lame');
var Speaker = require('speaker');
var http = require('http');

var options = {
  host: 'translate.google.com',
  path: '/translate_tts?tl=fr&q=salutcavabienoukoi',
  headers : {"user-agent":"Mozilla"}
};

var req = http.request(options, function(res) {
 var data = [];
  res.on('data', function (chunk) {
    data.push(chunk);
  }).on('end', function() {
    var buffer = Buffer.concat(data);
    fs.writeFile("/tmp/test.mp3", buffer, function(err) {
                if(err) {
                console.log(err);
                } 
            else {
                console.log("The file was saved!");
                    fs.createReadStream("/tmp/test.mp3")
                .pipe(new lame.Decoder())
                .on('format', function (format) {
                        this.pipe(new Speaker(format));
                }); 
                }
    });
  });
});
req.on('error', function(e) {
  console.log('problem with request: ' + e.message);
});
req.end();

Similar module for capturing pcm data?

This module is working for me very nicely. Now I need to capture pcm data to send out. Does anyone know of a module that may help me? I'm having a hard time finding a non-html5 solution for this.

The AudioContext and getUserMedia api's are just not stable enough yet for me to relibably use them. I'm looking for a native addon alternative.

How can I end a stream and start playing a new one?

I've got 2 input streams and I need to be able to switch them, but when I've tried stream1.unpipe(speaker); stream2.pipe(speaker), but stream1 continues playing, and stream2 is queued up. I'm assuming that is because it does not flush the already existing buffer that is to be written to the speakers.

close() and end() (obviously) won't allow me to write any more data.

How can I achieve this?

Segmentation fault (core dumped) with version 0.2.0

I've recently updated this module, and it crashed with new version.
Don't know exactly what happened, but I've solved it installing previous version.

I'm using Ubuntu 13.10 64bit edition.

Here is the log:

user@laptop:~/mayhem/server$ DEBUG=* nodejs server.js
  spotify-web:schemas loadMessage("mercury", "MercuryMultiGetRequest") [protobuf] +0ms
  spotify-web:schemas loadPackage("mercury") [protobuf] +4ms
  spotify-web:schemas loadMessage("mercury", "MercuryMultiGetReply") [protobuf] +1ms
  spotify-web:schemas loadPackage("mercury") [protobuf, cached] +0ms
  spotify-web:schemas loadMessage("mercury", "MercuryRequest") [protobuf] +0ms
  spotify-web:schemas loadPackage("mercury") [protobuf, cached] +0ms
  spotify-web:schemas loadMessage("metadata", "Artist") [protobuf] +1ms
  spotify-web:schemas loadPackage("metadata") [protobuf] +0ms
  spotify-web:schemas loadMessage("metadata", "Album") [protobuf] +2ms
  spotify-web:schemas loadPackage("metadata") [protobuf, cached] +0ms
  spotify-web:schemas loadMessage("metadata", "Track") [protobuf] +1ms
  spotify-web:schemas loadPackage("metadata") [protobuf, cached] +0ms
  spotify-web:schemas loadMessage("metadata", "Image") [protobuf] +0ms
  spotify-web:schemas loadPackage("metadata") [protobuf, cached] +1ms
  spotify-web:schemas loadMessage("metadata", "Restriction") [protobuf] +0ms
  spotify-web:schemas loadPackage("metadata") [protobuf, cached] +0ms
  spotify-web:schemas loadMessage("playlist4", "SelectedListContent") [protobuf] +1ms
  spotify-web:schemas loadPackage("playlist4") [protobuf] +0ms
  spotify-web:schemas loadMessage("bartender", "StoryRequest") [protobuf] +3ms
  spotify-web:schemas loadPackage("bartender") [protobuf] +0ms
  spotify-web:schemas loadMessage("bartender", "StoryList") [protobuf] +1ms
  spotify-web:schemas loadPackage("bartender") [protobuf, cached] +0ms
  lame:encoder processing prop "lame_get_id3v1_tag" as "id3v1Tag" +0ms
  lame:encoder processing prop "lame_get_id3v2_tag" as "id3v2Tag" +1ms
  lame:encoder processing prop "lame_get_num_samples" as "numSamples" +0ms
  lame:encoder processing prop "lame_set_num_samples" as "numSamples" +0ms
  lame:encoder processing prop "lame_get_in_samplerate" as "sampleRate" +1ms
  lame:encoder processing prop "lame_set_in_samplerate" as "sampleRate" +0ms
  lame:encoder processing prop "lame_get_num_channels" as "channels" +0ms
  lame:encoder processing prop "lame_set_num_channels" as "channels" +0ms
  lame:encoder processing prop "lame_get_scale" as "scale" +0ms
  lame:encoder processing prop "lame_set_scale" as "scale" +0ms
  lame:encoder processing prop "lame_get_scale_left" as "scaleLeft" +0ms
  lame:encoder processing prop "lame_set_scale_left" as "scaleLeft" +0ms
  lame:encoder processing prop "lame_get_scale_right" as "scaleRight" +0ms
  lame:encoder processing prop "lame_set_scale_right" as "scaleRight" +0ms
  lame:encoder processing prop "lame_get_out_samplerate" as "outSampleRate" +1ms
  lame:encoder processing prop "lame_set_out_samplerate" as "outSampleRate" +0ms
  lame:encoder processing prop "lame_get_analysis" as "analysis" +0ms
  lame:encoder processing prop "lame_set_analysis" as "analysis" +0ms
  lame:encoder processing prop "lame_get_bWriteVbrTag" as "writeVbrTag" +0ms
  lame:encoder processing prop "lame_set_bWriteVbrTag" as "writeVbrTag" +0ms
  lame:encoder processing prop "lame_get_quality" as "quality" +0ms
  lame:encoder processing prop "lame_set_quality" as "quality" +0ms
  lame:encoder processing prop "lame_get_mode" as "mode" +0ms
  lame:encoder processing prop "lame_set_mode" as "mode" +0ms
  lame:encoder processing prop "lame_get_brate" as "bitRate" +0ms
  lame:encoder processing prop "lame_set_brate" as "bitRate" +0ms
  lame:encoder processing prop "lame_get_compression_ratio" as "compressionRatio" +0ms
  lame:encoder processing prop "lame_set_compression_ratio" as "compressionRatio" +1ms
  lame:encoder processing prop "lame_get_copyright" as "copyright" +0ms
  lame:encoder processing prop "lame_set_copyright" as "copyright" +0ms
  lame:encoder processing prop "lame_get_original" as "original" +0ms
  lame:encoder processing prop "lame_set_original" as "original" +0ms
  lame:encoder processing prop "lame_get_error_protection" as "errorProtection" +0ms
  lame:encoder processing prop "lame_set_error_protection" as "errorProtection" +0ms
  lame:encoder processing prop "lame_get_extension" as "extension" +0ms
  lame:encoder processing prop "lame_set_extension" as "extension" +0ms
  lame:encoder processing prop "lame_get_strict_ISO" as "strictISO" +0ms
  lame:encoder processing prop "lame_set_strict_ISO" as "strictISO" +0ms
  lame:encoder processing prop "lame_get_disable_reservoir" as "disableReservoir" +0ms
  lame:encoder processing prop "lame_set_disable_reservoir" as "disableReservoir" +1ms
  lame:encoder processing prop "lame_get_quant_comp" as "quantComp" +0ms
  lame:encoder processing prop "lame_set_quant_comp" as "quantComp" +0ms
  lame:encoder processing prop "lame_get_quant_comp_short" as "quantCompShort" +1ms
  lame:encoder processing prop "lame_set_quant_comp_short" as "quantCompShort" +0ms
  lame:encoder processing prop "lame_get_exp_nspsytune" as "expNspsytune" +0ms
  lame:encoder processing prop "lame_set_exp_nspsytune" as "expNspsytune" +0ms
  lame:encoder processing prop "lame_get_VBR" as "VBR" +0ms
  lame:encoder processing prop "lame_set_VBR" as "VBR" +0ms
  lame:encoder processing prop "lame_get_VBR_q" as "VBRQ" +0ms
  lame:encoder processing prop "lame_set_VBR_q" as "VBRQ" +0ms
  lame:encoder processing prop "lame_get_VBR_quality" as "VBRQuality" +1ms
  lame:encoder processing prop "lame_set_VBR_quality" as "VBRQuality" +0ms
  lame:encoder processing prop "lame_get_VBR_mean_bitrate_kbps" as "VBRMeanBitrateKbps" +0ms
  lame:encoder processing prop "lame_set_VBR_mean_bitrate_kbps" as "VBRMeanBitrateKbps" +0ms
  lame:encoder processing prop "lame_get_VBR_min_bitrate_kbps" as "VBRMinBitrateKbps" +0ms
  lame:encoder processing prop "lame_set_VBR_min_bitrate_kbps" as "VBRMinBitrateKbps" +1ms
  lame:encoder processing prop "lame_get_VBR_max_bitrate_kbps" as "VBRMaxBitrateKbps" +0ms
  lame:encoder processing prop "lame_set_VBR_max_bitrate_kbps" as "VBRMaxBitrateKbps" +0ms
  lame:encoder processing prop "lame_get_VBR_hard_min" as "VBRHardMin" +0ms
  lame:encoder processing prop "lame_set_VBR_hard_min" as "VBRHardMin" +0ms
  lame:encoder processing prop "lame_get_lowpassfreq" as "lowpassfreq" +0ms
  lame:encoder processing prop "lame_set_lowpassfreq" as "lowpassfreq" +0ms
  lame:encoder processing prop "lame_get_lowpasswidth" as "lowpasswidth" +0ms
  lame:encoder processing prop "lame_set_lowpasswidth" as "lowpasswidth" +0ms
  lame:encoder processing prop "lame_get_highpassfreq" as "highpassfreq" +0ms
  lame:encoder processing prop "lame_set_highpassfreq" as "highpassfreq" +0ms
  lame:encoder processing prop "lame_get_highpasswidth" as "highpasswidth" +1ms
  lame:encoder processing prop "lame_set_highpasswidth" as "highpasswidth" +0ms
Violación de segmento (`core' generado)

npm install speaker fails on 0.12

$ npm install speaker
npm WARN package.json [email protected] No repository field.
\
> [email protected] install /Users/emile/Bitbucket/homey-client/node_modules/speaker
> node-gyp rebuild

child_process: customFds option is deprecated, use stdio instead.
Using overrides found in /Users/emile/.gyp/include.gypi
  CC(target) Release/obj.target/output/deps/mpg123/src/output/coreaudio.o
  LIBTOOL-STATIC Release/liboutput.a
  CXX(target) Release/obj.target/binding/src/binding.o
../src/binding.cc:131:3: error: no matching member function for call to 'Set'
  CONST_INT(MPG123_ENC_FLOAT_32);
  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../src/binding.cc:128:11: note: expanded from macro 'CONST_INT'
  target->Set(NanNew<v8::String>(#value), NanNew<v8::Integer>(value), \
  ~~~~~~~~^~~
/Users/emile/.node-gyp/0.12.0/deps/v8/include/v8.h:2112:8: note: candidate function not viable: requires 2 arguments, but 3 were provided
  bool Set(Handle<Value> key, Handle<Value> value);
       ^
/Users/emile/.node-gyp/0.12.0/deps/v8/include/v8.h:2114:8: note: candidate function not viable: requires 2 arguments, but 3 were provided
  bool Set(uint32_t index, Handle<Value> value);
       ^
../src/binding.cc:132:3: error: no matching member function for call to 'Set'
  CONST_INT(MPG123_ENC_FLOAT_64);
  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../src/binding.cc:128:11: note: expanded from macro 'CONST_INT'
  target->Set(NanNew<v8::String>(#value), NanNew<v8::Integer>(value), \
  ~~~~~~~~^~~
/Users/emile/.node-gyp/0.12.0/deps/v8/include/v8.h:2112:8: note: candidate function not viable: requires 2 arguments, but 3 were provided
  bool Set(Handle<Value> key, Handle<Value> value);
       ^
/Users/emile/.node-gyp/0.12.0/deps/v8/include/v8.h:2114:8: note: candidate function not viable: requires 2 arguments, but 3 were provided
  bool Set(uint32_t index, Handle<Value> value);
       ^
../src/binding.cc:133:3: error: no matching member function for call to 'Set'
  CONST_INT(MPG123_ENC_SIGNED_8);
  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../src/binding.cc:128:11: note: expanded from macro 'CONST_INT'
  target->Set(NanNew<v8::String>(#value), NanNew<v8::Integer>(value), \
  ~~~~~~~~^~~
/Users/emile/.node-gyp/0.12.0/deps/v8/include/v8.h:2112:8: note: candidate function not viable: requires 2 arguments, but 3 were provided
  bool Set(Handle<Value> key, Handle<Value> value);
       ^
/Users/emile/.node-gyp/0.12.0/deps/v8/include/v8.h:2114:8: note: candidate function not viable: requires 2 arguments, but 3 were provided
  bool Set(uint32_t index, Handle<Value> value);
       ^
../src/binding.cc:134:3: error: no matching member function for call to 'Set'
  CONST_INT(MPG123_ENC_UNSIGNED_8);
  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../src/binding.cc:128:11: note: expanded from macro 'CONST_INT'
  target->Set(NanNew<v8::String>(#value), NanNew<v8::Integer>(value), \
  ~~~~~~~~^~~
/Users/emile/.node-gyp/0.12.0/deps/v8/include/v8.h:2112:8: note: candidate function not viable: requires 2 arguments, but 3 were provided
  bool Set(Handle<Value> key, Handle<Value> value);
       ^
/Users/emile/.node-gyp/0.12.0/deps/v8/include/v8.h:2114:8: note: candidate function not viable: requires 2 arguments, but 3 were provided
  bool Set(uint32_t index, Handle<Value> value);
       ^
../src/binding.cc:135:3: error: no matching member function for call to 'Set'
  CONST_INT(MPG123_ENC_SIGNED_16);
  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../src/binding.cc:128:11: note: expanded from macro 'CONST_INT'
  target->Set(NanNew<v8::String>(#value), NanNew<v8::Integer>(value), \
  ~~~~~~~~^~~
/Users/emile/.node-gyp/0.12.0/deps/v8/include/v8.h:2112:8: note: candidate function not viable: requires 2 arguments, but 3 were provided
  bool Set(Handle<Value> key, Handle<Value> value);
       ^
/Users/emile/.node-gyp/0.12.0/deps/v8/include/v8.h:2114:8: note: candidate function not viable: requires 2 arguments, but 3 were provided
  bool Set(uint32_t index, Handle<Value> value);
       ^
../src/binding.cc:136:3: error: no matching member function for call to 'Set'
  CONST_INT(MPG123_ENC_UNSIGNED_16);
  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../src/binding.cc:128:11: note: expanded from macro 'CONST_INT'
  target->Set(NanNew<v8::String>(#value), NanNew<v8::Integer>(value), \
  ~~~~~~~~^~~
/Users/emile/.node-gyp/0.12.0/deps/v8/include/v8.h:2112:8: note: candidate function not viable: requires 2 arguments, but 3 were provided
  bool Set(Handle<Value> key, Handle<Value> value);
       ^
/Users/emile/.node-gyp/0.12.0/deps/v8/include/v8.h:2114:8: note: candidate function not viable: requires 2 arguments, but 3 were provided
  bool Set(uint32_t index, Handle<Value> value);
       ^
../src/binding.cc:137:3: error: no matching member function for call to 'Set'
  CONST_INT(MPG123_ENC_SIGNED_24);
  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../src/binding.cc:128:11: note: expanded from macro 'CONST_INT'
  target->Set(NanNew<v8::String>(#value), NanNew<v8::Integer>(value), \
  ~~~~~~~~^~~
/Users/emile/.node-gyp/0.12.0/deps/v8/include/v8.h:2112:8: note: candidate function not viable: requires 2 arguments, but 3 were provided
  bool Set(Handle<Value> key, Handle<Value> value);
       ^
/Users/emile/.node-gyp/0.12.0/deps/v8/include/v8.h:2114:8: note: candidate function not viable: requires 2 arguments, but 3 were provided
  bool Set(uint32_t index, Handle<Value> value);
       ^
../src/binding.cc:138:3: error: no matching member function for call to 'Set'
  CONST_INT(MPG123_ENC_UNSIGNED_24);
  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../src/binding.cc:128:11: note: expanded from macro 'CONST_INT'
  target->Set(NanNew<v8::String>(#value), NanNew<v8::Integer>(value), \
  ~~~~~~~~^~~
/Users/emile/.node-gyp/0.12.0/deps/v8/include/v8.h:2112:8: note: candidate function not viable: requires 2 arguments, but 3 were provided
  bool Set(Handle<Value> key, Handle<Value> value);
       ^
/Users/emile/.node-gyp/0.12.0/deps/v8/include/v8.h:2114:8: note: candidate function not viable: requires 2 arguments, but 3 were provided
  bool Set(uint32_t index, Handle<Value> value);
       ^
../src/binding.cc:139:3: error: no matching member function for call to 'Set'
  CONST_INT(MPG123_ENC_SIGNED_32);
  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../src/binding.cc:128:11: note: expanded from macro 'CONST_INT'
  target->Set(NanNew<v8::String>(#value), NanNew<v8::Integer>(value), \
  ~~~~~~~~^~~
/Users/emile/.node-gyp/0.12.0/deps/v8/include/v8.h:2112:8: note: candidate function not viable: requires 2 arguments, but 3 were provided
  bool Set(Handle<Value> key, Handle<Value> value);
       ^
/Users/emile/.node-gyp/0.12.0/deps/v8/include/v8.h:2114:8: note: candidate function not viable: requires 2 arguments, but 3 were provided
  bool Set(uint32_t index, Handle<Value> value);
       ^
../src/binding.cc:140:3: error: no matching member function for call to 'Set'
  CONST_INT(MPG123_ENC_UNSIGNED_32);
  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../src/binding.cc:128:11: note: expanded from macro 'CONST_INT'
  target->Set(NanNew<v8::String>(#value), NanNew<v8::Integer>(value), \
  ~~~~~~~~^~~
/Users/emile/.node-gyp/0.12.0/deps/v8/include/v8.h:2112:8: note: candidate function not viable: requires 2 arguments, but 3 were provided
  bool Set(Handle<Value> key, Handle<Value> value);
       ^
/Users/emile/.node-gyp/0.12.0/deps/v8/include/v8.h:2114:8: note: candidate function not viable: requires 2 arguments, but 3 were provided
  bool Set(uint32_t index, Handle<Value> value);
       ^
10 errors generated.
make: *** [Release/obj.target/binding/src/binding.o] Error 1
gyp ERR! build error 
gyp ERR! stack Error: `make` failed with exit code: 2
gyp ERR! stack     at ChildProcess.onExit (/usr/local/lib/node_modules/npm/node_modules/node-gyp/lib/build.js:267:23)
gyp ERR! stack     at ChildProcess.emit (events.js:110:17)
gyp ERR! stack     at Process.ChildProcess._handle.onexit (child_process.js:1067:12)
gyp ERR! System Darwin 12.2.0
gyp ERR! command "node" "/usr/local/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild"
gyp ERR! cwd /Users/emile/Bitbucket/homey-client/node_modules/speaker
gyp ERR! node -v v0.12.0
gyp ERR! node-gyp -v v1.0.2
gyp ERR! not ok 
npm ERR! Darwin 12.2.0
npm ERR! argv "node" "/usr/local/bin/npm" "install" "speaker"
npm ERR! node v0.12.0
npm ERR! npm  v2.5.1
npm ERR! code ELIFECYCLE

npm ERR! [email protected] install: `node-gyp rebuild`
npm ERR! Exit status 1
npm ERR! 
npm ERR! Failed at the [email protected] install script 'node-gyp rebuild'.
npm ERR! This is most likely a problem with the speaker package,
npm ERR! not with npm itself.
npm ERR! Tell the author that this fails on your system:
npm ERR!     node-gyp rebuild
npm ERR! You can get their info via:
npm ERR!     npm owner ls speaker
npm ERR! There is likely additional logging output above.

npm ERR! Please include the following file with any support request:
npm ERR!     /Users/emile/Bitbucket/homey-client/npm-debug.log

Err: Use of legacy binary 'node'

I'm currently trying to npm install speaker on Ubuntu 14.04 and i'm receiving the following error:

> [email protected] install [project-location]/node_modules/speaker
> node-gyp rebuild

/bin/sh: 1: node: not found
gyp: Call to 'node -e "require('nan')"' returned exit status 127. while trying to load binding.gyp
gyp ERR! configure error 
gyp ERR! stack Error: `gyp` failed with exit code: 1
gyp ERR! stack     at ChildProcess.onCpExit (/usr/share/node-gyp/lib/configure.js:431:16)
gyp ERR! stack     at ChildProcess.EventEmitter.emit (events.js:98:17)
gyp ERR! stack     at Process.ChildProcess._handle.onexit (child_process.js:797:12)
gyp ERR! System Linux 3.13.0-32-generic
gyp ERR! command "nodejs" "/usr/bin/node-gyp" "rebuild"
gyp ERR! cwd [project-location]/node_modules/speaker
gyp ERR! node -v v0.10.25
gyp ERR! node-gyp -v v0.10.10
gyp ERR! not ok 
npm WARN This failure might be due to the use of legacy binary "node"
npm WARN For further explanations, please read
/usr/share/doc/nodejs/README.Debian

npm ERR! weird error 1
npm ERR! not ok code 0

Stop a streaming mp3

Is there anyway of stopping output to a speaker? Am streaming a mp3 from an online music service. The mp3 comes as a signed url. Am using sockets.io and the app is set up on raspberry. I want users to be able to play and stop the mp3's. Playing isn't a problem but stopping is. Below is my code

socket.on('playcontrol', function(data){
if(data.action == 'play'){

            console.log('playing');

            speaker = new Speaker();
            decoder = new lame.Decoder();

            stream = request(data.songurl);
            stream.pipe(decoder).pipe(speaker);

    }
     if(data.action == 'stop'){
       stream.on('data', function(chunk){
              stream.unpipe(speaker)
            })
        console.log('stopping')
     }
 })

I've tried various options like using throttle but no of them seem to work. Any idea what I can try?

assertion failed

running the stdin example I get this error:

Assertion failed: (val->IsObject()), function Data, file /Users/julian/.node-gyp/0.10.20/src/node_buffer.h, line 76.

can only play music one time after the node.js script has started.

var Speaker = require('speaker'), fs = require('fs'), lame = require('lame');

playSong('closedoor.mp3'); //this function works only one time each runtime 

function playSong(song) {
        console.log("MUSIC START");
        var readStream = fs.createReadStream('/home/pi/moteino/' + song);
        $stream = readStream.pipe(new lame.Decoder())
          .on('format', function (format) {
            this.pipe(new Speaker(format));
          });

        $stream.on('close', function()
        { 
            console.log("MUSIC DONE"); //"MUSIC DONE" never gets printed to the console.
        });
}

I get a error message in my console:

node: /home/pi/.node-gyp/0.10.12/src/node_buffer.h:76: static char* node::Buffer::Data(v8::Handlev8::Value): Assertion `val->IsObject()' failed.

Error installing on OS X 10.8.2

→ npm install speaker
npm http GET https://registry.npmjs.org/speaker
npm http 304 https://registry.npmjs.org/speaker
npm http GET https://registry.npmjs.org/bindings
npm http GET https://registry.npmjs.org/debug
npm http GET https://registry.npmjs.org/readable-stream
npm http 304 https://registry.npmjs.org/debug
npm http 304 https://registry.npmjs.org/bindings
npm http 304 https://registry.npmjs.org/readable-stream

> [email protected] install /Users/scott/Code/player/node_modules/speaker
> node-gyp rebuild

  CC(target) Release/obj.target/output/deps/mpg123/src/output/coreaudio.o
  LIBTOOL-STATIC Release/liboutput.node
libtool: unrecognized option `-static'
libtool: Try `libtool --help' for more information.
  CXX(target) Release/obj.target/binding/src/binding.o
  SOLINK_MODULE(target) Release/binding.node
clang: error: no such file or directory: 'Release/liboutput.node'
make: *** [Release/binding.node] Error 1
gyp ERR! build error 
gyp ERR! stack Error: `make` failed with exit code: 2
gyp ERR! stack     at ChildProcess.onExit (/usr/local/lib/node_modules/npm/node_modules/node-gyp/lib/build.js:215:23)
gyp ERR! stack     at ChildProcess.EventEmitter.emit (events.js:91:17)
gyp ERR! stack     at Process._handle.onexit (child_process.js:674:10)
gyp ERR! System Darwin 12.2.0
gyp ERR! command "node" "/usr/local/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild"
gyp ERR! cwd /Users/scott/Code/player/node_modules/speaker
gyp ERR! node -v v0.8.5
gyp ERR! node-gyp -v v0.6.3
gyp ERR! not ok 
npm ERR! [email protected] install: `node-gyp rebuild`
npm ERR! `sh "-c" "node-gyp rebuild"` failed with 1
npm ERR! 
npm ERR! Failed at the [email protected] install script.
npm ERR! This is most likely a problem with the speaker package,
npm ERR! not with npm itself.
npm ERR! Tell the author that this fails on your system:
npm ERR!     node-gyp rebuild
npm ERR! You can get their info via:
npm ERR!     npm owner ls speaker
npm ERR! There is likely additional logging output above.

npm ERR! System Darwin 12.2.0
npm ERR! command "node" "/usr/local/bin/npm" "install" "speaker"
npm ERR! cwd /Users/scott/Code/player
npm ERR! node -v v0.8.5
npm ERR! npm -v 1.1.46
npm ERR! code ELIFECYCLE
npm ERR! 
npm ERR! Additional logging details can be found in:
npm ERR!     /Users/scott/Code/player/npm-debug.log
npm ERR! not ok code 0

require('bindings')('binding');

I'm trying to use this module on windows 7, after a little bit of fiddling about I found out that this line:
var binding = require('bindings')('binding'); in speaker/index.js
Blocks the execution of the program and therefor I cannot require('speaker');

check sum failed

npm http 200 https://registry.npmjs.org/speaker/-/speaker-0.1.1.tgz
npm ERR! Error: shasum check failed for /root/tmp/npm-3624-gapbZfR6/1401251088705-0.20875600446015596/tmp.tgz
npm ERR! Expected: 7d9e26ae1a2b3b07fb5ffcfa6c830ce56f52505a
npm ERR! Actual:   c17bf99f53e3b1510955711086c8a3ffb9ea93ab
npm ERR!     at /usr/lib/node_modules/sha/index.js:38:8
npm ERR!     at ReadStream.<anonymous> (/usr/lib/node_modules/sha/index.js:85:7)
npm ERR!     at ReadStream.EventEmitter.emit (events.js:117:20)
npm ERR!     at _stream_readable.js:919:16
npm ERR!     at process._tickCallback (node.js:419:13)
npm ERR! If you need help, you may report this log at:
npm ERR!     <http://github.com/isaacs/npm/issues>
npm ERR! or email it to:
npm ERR!     <[email protected]>

npm ERR! System Linux 3.14.4-200.fc20.x86_64
npm ERR! command "node" "/usr/bin/npm" "install" "speaker"
npm ERR! cwd /home/franklioxygen
npm ERR! node -v v0.10.28
npm ERR! npm -v 1.3.6
npm ERR! 
npm ERR! Additional logging details can be found in:
npm ERR!     /home/franklioxygen/npm-debug.log
npm ERR! not ok code 0

Buffer underflow event

Currently when the buffer underflows (e.g. our app is too slow providing data to play) it echoes [../deps/mpg123/src/output/coreaudio.c:81] warning: Didn't have any audio data in callback (buffer underflow) to the console.

It would be great if we instead could get an event so we can decide how to handle this and if to log it. For example we might want to pause and buffer up some data before playing, this could be good if we are playing an internet-stream.

Problems installing on OSX 10.8.5

I'm very new to node but I am trying to get coffee-collider running. Any help is greatly appreciated. Thanks!

npm install speaker
npm http GET https://registry.npmjs.org/speaker
npm http 304 https://registry.npmjs.org/speaker

> [email protected] install /Users/mbk5020a/node_modules/speaker
> node-gyp rebuild

gyp ERR! build error 
gyp ERR! stack Error: not found: make
gyp ERR! stack     at F (/usr/local/lib/node_modules/npm/node_modules/which/which.js:43:28)
gyp ERR! stack     at E (/usr/local/lib/node_modules/npm/node_modules/which/which.js:46:29)
gyp ERR! stack     at /usr/local/lib/node_modules/npm/node_modules/which/which.js:57:16
gyp ERR! stack     at Object.oncomplete (fs.js:107:15)
gyp ERR! System Darwin 12.5.0
gyp ERR! command "node" "/usr/local/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild"
gyp ERR! cwd /Users/mbk5020a/node_modules/speaker
gyp ERR! node -v v0.10.23
gyp ERR! node-gyp -v v0.12.1
gyp ERR! not ok 
npm ERR! [email protected] install: `node-gyp rebuild`
npm ERR! Exit status 1
npm ERR! 
npm ERR! Failed at the [email protected] install script.
npm ERR! This is most likely a problem with the speaker package,
npm ERR! not with npm itself.
npm ERR! Tell the author that this fails on your system:
npm ERR!     node-gyp rebuild
npm ERR! You can get their info via:
npm ERR!     npm owner ls speaker
npm ERR! There is likely additional logging output above.

npm ERR! System Darwin 12.5.0
npm ERR! command "node" "/usr/local/bin/npm" "install" "speaker"
npm ERR! cwd /Users/mbk5020a
npm ERR! node -v v0.10.23
npm ERR! npm -v 1.3.17
npm ERR! code ELIFECYCLE
npm ERR! 
npm ERR! Additional logging details can be found in:
npm ERR!     /Users/mbk5020a/npm-debug.log
npm ERR! not ok code 0

Sound misses 25% of the data when before piped to Speaker

I am using a Throttle module based mostly on yours to pass data to your node-speaker module. To test, I've used also to directly output to the speakers as well as a wav file with the following code:

pcm.!default {
    type plug
    slave.pcm writeFile
}

pcm.writeFile {
    type file
    slave {
        pcm speaker
    }
    file "/home/mike/deleteme/alsa.wav"
    format "wav"
}

pcm.speaker {
    type hw
    card 0
}

Also, I record the output with a microphone next to my Speakers. Also, the same module that is pushing the audio output to the speakers is pushing the same output to a file.

When I compare all three audio I find the following:

  1. When taking out the Throttle module, all three recordings match up perfectly.
  2. When using the Throttle module, the output recorded by alsa is 25% smaller than the output to the file by the Throttle module. The audio recoded by the microphone is the same length, but has noticeable gaps in the audio.

The throttle module sends 20ms of data to the Speakers at a time. I calculate how much data needs to be sent every 20ms by the following:

    this.beatMultiplier = this.sampleRate*this.bitDepth/8*this.channels;
    this.bytesPerBeat = this.beatMultiplier*this.milliseconds/1000;

Which seems to calculate correctly. I am testing with 8000Hz signed 16-bit PCM data. DEBUG reveals Speaker to be writing the correct amount:

  speaker wrote 320 bytes +1ms
  speaker done with this chunk +0ms
  speaker _write() (320 bytes) +19ms

What is causing this discrepancy in the output versus what is being sent to the Speaker?

failed to install v0.2.5 on OS X 10.10.3 with io.js v2.0.1

logs:

    909 verbose rebuildBundles [ 'bindings', 'debug', 'nan', 'readable-stream' ]
    910 info install [email protected]
    911 verbose unsafe-perm in lifecycle true
    912 info [email protected] Failed to exec install script
    913 verbose unlock done using /Users/liangwensen/.npm/_locks/speaker-426051877ea3cabd.lock for /Users/liangwensen/.nvm/versions/io.js/v2.0.1/lib/node_modules/speaker
    914 verbose stack Error: [email protected] install: `node-gyp rebuild`
    914 verbose stack Exit status 1
    914 verbose stack     at EventEmitter.<anonymous> (/Users/liangwensen/.nvm/versions/io.js/v2.0.1/lib/node_modules/npm/lib/utils/lifecycle.js:213:16)
    914 verbose stack     at emitTwo (events.js:87:13)
    914 verbose stack     at EventEmitter.emit (events.js:169:7)
    914 verbose stack     at ChildProcess.<anonymous> (/Users/liangwensen/.nvm/versions/io.js/v2.0.1/lib/node_modules/npm/lib/utils/spawn.js:24:14)
    914 verbose stack     at emitTwo (events.js:87:13)
    914 verbose stack     at ChildProcess.emit (events.js:169:7)
    914 verbose stack     at maybeClose (child_process.js:953:16)
    914 verbose stack     at Process.ChildProcess._handle.onexit (child_process.js:1020:5)
    915 verbose pkgid [email protected]
    916 verbose cwd /Users/liangwensen
    917 error Darwin 14.3.0
    918 error argv "/Users/liangwensen/.nvm/versions/io.js/v2.0.1/bin/iojs" "/Users/liangwensen/.nvm/versions/io.js/v2.0.1/bin/npm" "install" "speaker" "-g"
    919 error node v2.0.1
    920 error npm  v2.9.0
    921 error code ELIFECYCLE
    922 error [email protected] install: `node-gyp rebuild`
    922 error Exit status 1
    923 error Failed at the [email protected] install script 'node-gyp rebuild'.
    923 error This is most likely a problem with the speaker package,
    923 error not with npm itself.
    923 error Tell the author that this fails on your system:
    923 error     node-gyp rebuild
    923 error You can get their info via:
    923 error     npm owner ls speaker
    923 error There is likely additional logging output above.

environment:

  • mac osx 10.10.3
  • nvm - using io.js v2.0.1

need your help here, thanks!

Audio drifting over time

Using the node-speaker module in v0.10.30. I'm getting huge amounts of audio drifting.

Steps to reproduce
1. Have a .wav audio recording to use for sampling.
2. Have an audio recording program to record the output from the speakers and point a microphone on the speakers for direct recording.
3. First, record the .wav being played using a normal audio player application. Analyze the two files and note that there is no audio drift in the two.
4 Create the following script in Node.js

var process = require( 'process' );
var argv = require('minimist')( process.argv.slice(2) );
var Speaker = require( 'speaker' );
var fs = require( 'fs' );
var wav = require( 'wav' );

var wavReader = fs.createReadStream( String( argv._[ 0 ] ) )
.pipe( wav.Reader() );

var buffer = null;

wavReader.on( 'format', function( format ) {
    console.log( "Playing wav.", format );
    wavReader.on( 'data', function( chunk ) {
        if( buffer )
            buffer = Buffer.concat( [ buffer, chunk ] );
        else
            buffer = chunk;
    } )
    .on( 'end', function() { 
        new Speaker( format ).write( buffer );
    } );
} );

5. Do the same recording process as before, but this time record the output of the Node.js script. Note the audio drifts in the recorded versus original file.

This is what I see when I do the above in step 5. In my screenshot, the top is the original .wav file and the bottom is its recorded version after aligning properly at the beginning.
shot6

Raspberry Pi - only plays part of MP3 then hangs up

I am trying to play a short MP3 (111264) bytes using lame (v1.0.3) and speaker(v 0.0.10). It runs on my Mac but not on the Pi using the same versions as on the Mac.
Here is the code

var lame = require("lame");
var Speaker = require("speaker");
var fs = require("fs");

var playMP3 = function(mp3){

    fs.createReadStream(mp3)
    .pipe(new lame.Decoder())
    .on('format', function (format) {
       console.log('Format');
       try {
         var speaker = new Speaker(format);
         this.pipe(speaker);
       } catch(e){
         console.log(e);
       }
       speaker.on('open', function(){console.log('open')});
       speaker.on('close', function(){console.log('close')});
       speaker.on('flush', function(){console.log('flush')});
     });
}
playMP3(__dirname+'/public/CAPlogo.mp3');

The on tests are to see where it fails. Here is the output from the Pi

pi@launchpad ~/OversizedLaunchpad $ node testlame.js
Format
open
list length=1 length=18432

/home/pi/OversizedLaunchpad/node_modules/lame/node_modules/readable-stream/lib/_stream_readable.js:858
ret = Buffer.concat(list, length);
^
TypeError: Object function Buffer(subject, encoding, offset) {
if (!(this instanceof Buffer)) {
return new Buffer(subject, encoding, offset);
}

var type;

// Are we slicing?
if (typeof offset === 'number') {
this.length = coerce(encoding);
this.parent = subject;
this.offset = offset;
} else {
// Find the length
switch (type = typeof subject) {
case 'number':
this.length = coerce(subject);
break;

  case 'string':
    this.length = Buffer.byteLength(subject, encoding);
    break;

  case 'object': // Assume object is an array
    this.length = coerce(subject.length);
    break;

  default:
    throw new Error('First argument needs to be a number, ' +
                    'array or string.');
}

if (this.length > Buffer.poolSize) {
  // Big buffer, just alloc one.
  this.parent = new SlowBuffer(this.length);
  this.offset = 0;

} else {
  // Small buffer.
  if (!pool || pool.length - pool.used < this.length) allocPool();
  this.parent = pool;
  this.offset = pool.used;
  pool.used += this.length;
  if (pool.used & 7) pool.used = (pool.used + 8) & ~7;
}

// Treat array-ish objects as a byte array.
if (isArrayIsh(subject)) {
  for (var i = 0; i < this.length; i++) {
    this.parent[i + this.offset] = subject[i];
  }
} else if (type == 'string') {
  // We are a string
  this.length = this.write(subject, 0, encoding);
}

}

SlowBuffer.makeFastBuffer(this.parent, this, this.offset, this.length);
} has no method 'concat'
at fromList (/home/pi/OversizedLaunchpad/node_modules/lame/node_modules/readable-stream/lib/_stream_readable.js:858:20)
at Decoder.read (/home/pi/OversizedLaunchpad/node_modules/lame/node_modules/readable-stream/lib/_stream_readable.js:367:11)
at flow (/home/pi/OversizedLaunchpad/node_modules/lame/node_modules/readable-stream/lib/_stream_readable.js:763:26)
at Speaker. (/home/pi/OversizedLaunchpad/node_modules/lame/node_modules/readable-stream/lib/_stream_readable.js:623:7)
at Speaker.emit (events.js:64:17)
at onwriteDrain (/home/pi/OversizedLaunchpad/node_modules/speaker/node_modules/readable-stream/lib/_stream_writable.js:331:12)
at afterWrite (/home/pi/OversizedLaunchpad/node_modules/speaker/node_modules/readable-stream/lib/_stream_writable.js:319:5)
at onwrite (/home/pi/OversizedLaunchpad/node_modules/speaker/node_modules/readable-stream/lib/_stream_writable.js:312:7)
at /home/pi/OversizedLaunchpad/node_modules/speaker/node_modules/readable-stream/lib/_stream_writable.js:105:5
at afterWrite (/home/pi/OversizedLaunchpad/node_modules/speaker/index.js:210:7)
pi@launchpad ~/OversizedLaunchpad $

I modified stream_readable.js to print the values of list and length just before it failed

Please let me know what further debug info you require.
Thanks,
Graham Lawrence

raspberry pi

Compiles fine once all requirements installed.

speaker-test command plays static through speakers.

running the basic example in the readme markdown does not fail but produces no sound out.

Building on windows...

(this might be more appropriate for the wiki instead of a bug)

When building on windows I see the error:

C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\Platforms\x64\Microsoft.Cpp.x 64.Targets(514,5): error MSB8008: Specified platform toolset (v110) is not inst alled or invalid. Please make sure that a supported PlatformToolset value is se lected. [C:\Users\Rob\2\node_modules\speaker\build\deps\mpg123\output.vcxproj]

This can be fixed in two ways:

  1. Set an environment variable (before calling npm install speaker)

set VisualStudioVersion=11.0

  1. Pass the parameter: /p:VisualStudioVersion=11.0 when calling msbuild.

Not sure if you can control either during npm's install.

Cheers,

-Rob

Unable to install speaker.js on ubuntu

getting this error!! do check it ..

make: Entering directory /media/Java/speaker/Delivery.js-master/node_modules/speaker/build' CC(target) Release/obj.target/output/deps/mpg123/src/output/alsa.o ../deps/mpg123/src/output/alsa.c:19:28: fatal error: alsa/asoundlib.h: No such file or directory compilation terminated. make: *** [Release/obj.target/output/deps/mpg123/src/output/alsa.o] Error 1 make: Leaving directory/media/Java/speaker/Delivery.js-master/node_modules/speaker/build'
gyp ERR! build error
gyp ERR! stack Error: make failed with exit code: 2
gyp ERR! stack at ChildProcess.onExit (/home/chetand/nvm/v0.8.11/lib/node_modules/npm/node_modules/node-gyp/lib/build.js:219:23)
gyp ERR! stack at ChildProcess.EventEmitter.emit (events.js:96:17)
gyp ERR! stack at Process._handle.onexit (child_process.js:678:10)
gyp ERR! System Linux 2.6.38-8-generic
gyp ERR! command "node" "/home/chetand/nvm/v0.8.11/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild"
gyp ERR! cwd /media/Java/speaker/Delivery.js-master/node_modules/speaker
gyp ERR! node -v v0.8.11
gyp ERR! node-gyp -v v0.6.11
gyp ERR! not ok
npm ERR! [email protected] install: node-gyp rebuild
npm ERR! sh "-c" "node-gyp rebuild" failed with 1
npm ERR!
npm ERR! Failed at the [email protected] install script.
npm ERR! This is most likely a problem with the speaker package,
npm ERR! not with npm itself.
npm ERR! Tell the author that this fails on your system:
npm ERR! node-gyp rebuild
npm ERR! You can get their info via:
npm ERR! npm owner ls speaker
npm ERR! There is likely additional logging output above.

npm ERR! System Linux 2.6.38-8-generic
npm ERR! command "/home/chetand/nvm/v0.8.11/bin/node" "/home/chetand/nvm/v0.8.11/bin/npm" "install" "speaker"
npm ERR! cwd /media/Java/speaker/Delivery.js-master
npm ERR! node -v v0.8.11
npm ERR! npm -v 1.1.62
npm ERR! code ELIFECYCLE
npm ERR!
npm ERR! Additional logging details can be found in:
npm ERR! /media/Java/speaker/Delivery.js-master/npm-debug.log
npm ERR! not ok code 0

Failed to install in manjaro 0.8.9 (Arch Linux )

sure to have alsa already.

the log is as below

gyp info it worked if it ends with ok
gyp info using [email protected]
gyp info using [email protected] | linux | x64
gyp info spawn python2
gyp info spawn args [ '/home/liu/.nvm/v0.11.12/lib/node_modules/node-gyp/gyp/gyp_main.py',
gyp info spawn args   'binding.gyp',
gyp info spawn args   '-f',
gyp info spawn args   'make',
gyp info spawn args   '-I',
gyp info spawn args   '/home/liu/build/config.gypi',
gyp info spawn args   '-I',
gyp info spawn args   '/home/liu/.nvm/v0.11.12/lib/node_modules/node-gyp/addon.gypi',
gyp info spawn args   '-I',
gyp info spawn args   '/home/liu/.node-gyp/0.11.12/common.gypi',
gyp info spawn args   '-Dlibrary=shared_library',
gyp info spawn args   '-Dvisibility=default',
gyp info spawn args   '-Dnode_root_dir=/home/liu/.node-gyp/0.11.12',
gyp info spawn args   '-Dmodule_root_dir=/home/liu',
gyp info spawn args   '--depth=.',
gyp info spawn args   '--no-parallel',
gyp info spawn args   '--generator-output',
gyp info spawn args   'build',
gyp info spawn args   '-Goutput_dir=.' ]
gyp: binding.gyp not found (cwd: /home/liu) while trying to load binding.gyp
gyp ERR! configure error 
gyp ERR! stack Error: `gyp` failed with exit code: 1
gyp ERR! stack     at ChildProcess.onCpExit (/home/liu/.nvm/v0.11.12/lib/node_modules/node-gyp/lib/configure.js:340:16)
gyp ERR! stack     at ChildProcess.EventEmitter.emit (events.js:107:17)
gyp ERR! stack     at Process.ChildProcess._handle.onexit (child_process.js:1045:12)
gyp ERR! System Linux 3.10.33-2-MANJARO
gyp ERR! command "node" "/home/liu/.nvm/v0.11.12/bin/node-gyp" "rebuild" "speaker"
gyp ERR! cwd /home/liu
gyp ERR! node -v v0.11.12
gyp ERR! node-gyp -v v0.13.0
gyp ERR! not ok 
../src/binding.cc:76:19: error: variable or field ‘write_after’ declared void
 void write_after (uv_work_t *);
                   ^
../src/binding.cc:76:19: error: ‘uv_work_t’ was not declared in this scope
../src/binding.cc:76:30: error: expected primary-expression before ‘)’ token
 void write_after (uv_work_t *);
                              ^
../src/binding.cc:78:28: error: ‘Arguments’ does not name a type
 Handle<Value> Write (const Arguments& args) {
                            ^
../src/binding.cc:78:39: error: ISO C++ forbids declaration of ‘args’ with no type [-fpermissive]
 Handle<Value> Write (const Arguments& args) {
                                       ^
In file included from ../src/binding.cc:4:0:
/home/liu/.node-gyp/0.11.12/deps/v8/include/v8.h: In function ‘v8::Handle<v8::Value> {anonymous}::Write(const int&)’:
/home/liu/.node-gyp/0.11.12/deps/v8/include/v8.h:768:13: error: ‘v8::HandleScope::HandleScope()’ is private
   V8_INLINE HandleScope() {}
             ^
../src/binding.cc:79:15: error: within this context
   HandleScope scope;
               ^
../src/binding.cc:80:79: error: invalid types ‘const int[int]’ for array subscript
   audio_output_t *ao = reinterpret_cast<audio_output_t *>(UnwrapPointer(args[0]));
                                                                               ^
../src/binding.cc:81:81: error: invalid types ‘const int[int]’ for array subscript
   unsigned char *buffer = reinterpret_cast<unsigned char *>(UnwrapPointer(args[1]));
                                                                                 ^
../src/binding.cc:82:19: error: invalid types ‘const int[int]’ for array subscript
   int len = args[2]->Int32Value();
                   ^
../src/binding.cc:83:58: error: invalid types ‘const int[int]’ for array subscript
   Local<Function> callback = Local<Function>::Cast(args[3]);
                                                          ^
../src/binding.cc:90:53: error: no matching function for call to ‘v8::Persistent<v8::Function, v8::NonCopyablePersistentTraits<v8::Function> >::New(v8::Local<v8::Function>&)’
   req->callback = Persistent<Function>::New(callback);
                                                     ^
../src/binding.cc:90:53: note: candidate is:
In file included from ../src/binding.cc:4:0:
/home/liu/.node-gyp/0.11.12/deps/v8/include/v8.h:5591:4: note: static T* v8::Persistent<T, M>::New(v8::Isolate*, T*) [with T = v8::Function; M = v8::NonCopyablePersistentTraits<v8::Function>]
 T* Persistent<T, M>::New(Isolate* isolate, T* that) {
    ^
/home/liu/.node-gyp/0.11.12/deps/v8/include/v8.h:5591:4: note:   candidate expects 2 arguments, 1 provided
../src/binding.cc:92:8: error: ‘struct {anonymous}::write_req’ has no member named ‘req’
   req->req.data = req;
        ^
/home/liu/.node-gyp/0.11.12/deps/v8/include/v8.h:5591:4: note:   candidate expects 2 arguments, 1 provided
../src/binding.cc:92:8: error: ‘struct {anonymous}::write_req’ has no member named ‘req’
   req->req.data = req;
        ^
../src/binding.cc:94:33: error: ‘uv_default_loop’ was not declared in this scope
   uv_queue_work(uv_default_loop(), &req->req, write_async, (uv_after_work_cb)write_after);
                                 ^
../src/binding.cc:94:42: error: ‘struct {anonymous}::write_req’ has no member named ‘req’
   uv_queue_work(uv_default_loop(), &req->req, write_async, (uv_after_work_cb)write_after);
                                          ^
../src/binding.cc:94:47: error: ‘write_async’ was not declared in this scope
   uv_queue_work(uv_default_loop(), &req->req, write_async, (uv_after_work_cb)write_after);
                                               ^
../src/binding.cc:94:61: error: ‘uv_after_work_cb’ was not declared in this scope
   uv_queue_work(uv_default_loop(), &req->req, write_async, (uv_after_work_cb)write_after);
                                                             ^
../src/binding.cc:94:89: error: ‘uv_queue_work’ was not declared in this scope
   uv_queue_work(uv_default_loop(), &req->req, write_async, (uv_after_work_cb)write_after);
                                                                                         ^
../src/binding.cc: At global scope:
../src/binding.cc:99:19: error: variable or field ‘write_async’ declared void
 void write_async (uv_work_t *req) {
                   ^
../src/binding.cc:99:19: error: ‘uv_work_t’ was not declared in this scope
../src/binding.cc:99:30: error: ‘req’ was not declared in this scope
 void write_async (uv_work_t *req) {
                              ^
../src/binding.cc:104:19: error: variable or field ‘write_after’ declared void
 void write_after (uv_work_t *req) {
                   ^
../src/binding.cc:104:19: error: ‘uv_work_t’ was not declared in this scope
../src/binding.cc:104:30: error: ‘req’ was not declared in this scope
 void write_after (uv_work_t *req) {
                              ^
In file included from ../src/binding.cc:5:0:
/home/liu/.node-gyp/0.11.12/src/node.h:361:3: error: expected ‘}’ at end of input
   }
   ^
/home/liu/.node-gyp/0.11.12/src/node.h:383:3: note: in expansion of macro ‘NODE_MODULE_X’
   NODE_MODULE_X(modname, regfunc, NULL, 0)
   ^
../src/binding.cc:159:1: note: in expansion of macro ‘NODE_MODULE’
 NODE_MODULE(binding, Initialize)
 ^
binding.target.mk:95: recipe for target 'Release/obj.target/binding/src/binding.o' failed
make: *** [Release/obj.target/binding/src/binding.o] Error 1
make: Leaving directory '/home/liu/.nvm/v0.11.12/lib/node_modules/speaker/build'
gyp ERR! build error 
gyp ERR! stack Error: `make` failed with exit code: 2
gyp ERR! stack     at ChildProcess.onExit (/home/liu/.nvm/v0.11.12/lib/node_modules/npm/node_modules/node-gyp/lib/build.js:267:23)
gyp ERR! stack     at ChildProcess.EventEmitter.emit (events.js:107:17)
gyp ERR! stack     at Process.ChildProcess._handle.onexit (child_process.js:1045:12)
gyp ERR! System Linux 3.10.33-2-MANJARO
gyp ERR! command "node" "/home/liu/.nvm/v0.11.12/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild"
gyp ERR! cwd /home/liu/.nvm/v0.11.12/lib/node_modules/speaker
gyp ERR! node -v v0.11.12
gyp ERR! node-gyp -v v0.12.2
gyp ERR! not ok 
npm ERR! [email protected] install: `node-gyp rebuild`
npm ERR! Exit status 1
npm ERR! 
npm ERR! Failed at the [email protected] install script.
npm ERR! This is most likely a problem with the speaker package,
npm ERR! not with npm itself.
npm ERR! Tell the author that this fails on your system:
npm ERR!     node-gyp rebuild
npm ERR! You can get their info via:
npm ERR!     npm owner ls speaker
npm ERR! There is likely additional logging output above.

npm ERR! System Linux 3.10.33-2-MANJARO
npm ERR! command "/home/liu/.nvm/v0.11.12/bin/node" "/home/liu/.nvm/v0.11.12/bin/npm" "install" "-g" "speaker"
npm ERR! cwd /home/liu/.nvm/v0.11.12/lib/node_modules
npm ERR! node -v v0.11.12
npm ERR! npm -v 1.4.3
npm ERR! code ELIFECYCLE
npm ERR! 
npm ERR! Additional logging details can be found in:
npm ERR!     /home/liu/.nvm/v0.11.12/lib/node_modules/npm-debug.log
npm ERR! not ok code 0

unable to build on 0.11.3

In file included from ../src/binding.cc:6:
../src/node_pointer.h:23:9: error: unexpected namespace name 'Buffer': expected expression
  node::Buffer *buf = node::Buffer::New((char *)ptr, length, wrap_pointer_cb, user_data);
        ^
../src/node_pointer.h:23:17: error: use of undeclared identifier 'buf'
  node::Buffer *buf = node::Buffer::New((char *)ptr, length, wrap_pointer_cb, user_data);
                ^
../src/node_pointer.h:24:10: error: use of undeclared identifier 'buf'
  return buf->handle_;
         ^
../src/binding.cc:17:3: error: unknown type name 'uv_work_t'
  uv_work_t req;

unable to install on ubuntu 13.04

i wasnt able to complete the build for speaker because a alsa header file was missing.

--> npm install speaker --save-dev

outputs:

> [email protected] install /home/moolen/projekte/audio-player/node_modules/speaker
> node-gyp rebuild

make: Entering directory `/home/moolen/projekte/audio-player/node_modules/speaker/build'
  CC(target) Release/obj.target/output/deps/mpg123/src/output/alsa.o
../deps/mpg123/src/output/alsa.c:19:28: fatal error: alsa/asoundlib.h: No such file or directory
compilation terminated.
make: *** [Release/obj.target/output/deps/mpg123/src/output/alsa.o] Error 1
make: Leaving directory `/home/moolen/projekte/audio-player/node_modules/speaker/build'
gyp ERR! build error 
gyp ERR! stack Error: `make` failed with exit code: 2
gyp ERR! stack     at ChildProcess.onExit (/usr/lib/node_modules/npm/node_modules/node-gyp/lib/build.js:267:23)
gyp ERR! stack     at ChildProcess.EventEmitter.emit (events.js:98:17)
gyp ERR! stack     at Process.ChildProcess._handle.onexit (child_process.js:789:12)
gyp ERR! System Linux 3.8.0-30-generic
gyp ERR! command "node" "/usr/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild"
gyp ERR! cwd /home/moolen/projekte/audio-player/node_modules/speaker
gyp ERR! node -v v0.10.10
gyp ERR! node-gyp -v v0.10.9
gyp ERR! not ok 
npm ERR! weird error 1
npm ERR! not ok code 0

solved with:
sudo apt-get install libasound2-dev

PulseAudio binding fails on Raspbian jessie

After installing node-speaker npm install speaker --mpg123-backend=pulse on a Raspberry Pi with Raspbian jessie, the following error is given after require('speaker'):

node: symbol lookup error: /root/pa/node_modules/speaker/build/Release/binding.node: undefined symbol: pa_simple_new

All pulseaudio packages have been installed, and pa_simple_new can be found in libpulse.

Plays from local file, but errors when streaming same data over http

Hey, this is an awesome lib, but I'm getting an odd error when I try to play a stream over HTTP. This code:

var watson = require('watson-developer-cloud');
var Speaker = require('speaker');

var speaker = new Speaker({
    channels: 1,
    bitDepth: 16,
    sampleRate: 48000
});

var text_to_speech = watson.text_to_speech({
  username: '0eaef628-d28e-4365-b0db-069046f37fef',
  password: 'Mm1DWPHFC7sq',
  version: 'v1'
});

var params = {
  text: 'Hello from IBM Watson',
  accept: 'audio/wav' //ogg; codec=opus'
};

text_to_speech.synthesize(params).pipe(speaker).on('error', function(err) {
    console.error(err.stack);
});

fails with the error:

Error: write() failed: 1018
    at onwrite (/home/pi/nodeplayer/node_modules/speaker/index.js:269:12)

Do you know what that means? If I replace the end with a version that downloads the entire file before playing, it works but it takes a lot longer for any significant amount of text:

var fs = require('fs');
text_to_speech.synthesize(params)
    .pipe(fs.createWriteStream('out.wav'))
    .on('close', function() {
        fs.createReadStream('out.wav').pipe(speaker);
    });

Any ideas?

Memory leak

Something is leaking when piping to the speaker module. This first example will run on forever without problems (well, til your out of free space). The second example will output an warning after ~22 seconds.

(node) warning: possible EventEmitter memory leak detected. 11 listeners added. Use emitter.setMaxListeners() to increase limit.
Trace
    at RandStream.EventEmitter.addListener (events.js:160:15)
    at RandStream.Readable.on (/tmp/node_modules/randstream/node_modules/readable-stream/lib/_stream_readable.js:589:33)
    at RandStream.EventEmitter.once (events.js:179:8)
    at Speaker._pipe (/tmp/node_modules/speaker/index.js:228:10)
    at Speaker.EventEmitter.emit (events.js:95:17)
    at RandStream.Readable.pipe (/tmp/node_modules/randstream/node_modules/readable-stream/lib/_stream_readable.js:446:8)
    at null._onTimeout (/tmp/test.js:17:14)
    at Timer.listOnTimeout [as ontimeout] (timers.js:110:15)

test-1.js

var fs = require('fs');
var RandStream = require('randstream');

var s = null;
var firehose = new RandStream();

var repipe = function () {
  if(s) {
    console.log('unpipe');
    firehose.unpipe(s);
    s.end();
  }
  setTimeout(function () {
    s = fs.createWriteStream('/tmp/' + +(new Date));
    console.log('pipe');
    firehose.pipe(s);
  }, 1000);
};

setInterval(repipe, 2000);

test-2.js

var Speaker = require('speaker');
var RandStream = require('randstream');

var s = null;
var firehose = new RandStream();

var repipe = function () {
  if(s) {
    console.log('unpipe');
    firehose.unpipe(s);
    s.end();
  }
  setTimeout(function () {
    s = new Speaker();
    console.log('pipe');
    firehose.pipe(s);
  }, 1000);
};

setInterval(repipe, 2000);

node-speaker does not load in Windows 8

When requiring node-speaker, nothing happens. The program is stuck at the require('speaker').
I'm using Windows 8.1 with Visual Studio 2013 and node 0.10.26

Does not build speaker module on widows8

I try to install speaker module but it does not build and throws error as following:

c:\users\ichetandhembre\.node-gyp\0.10.5\deps\uv\include\uv-private/uv-win.h(32): fatal error C1083: Cannot open include file: 'winsock2.h': No such file or directory [D:
\songs\demo\node_modules\speaker\build\binding.vcxproj]
gyp ERR! build error
gyp ERR! stack Error: `msbuild` failed with exit code: 1
gyp ERR! stack     at ChildProcess.onExit (C:\Program Files\nodejs\node_modules\npm\node_modules\node-gyp\lib\build.js:267:23)
gyp ERR! stack     at ChildProcess.EventEmitter.emit (events.js:98:17)
gyp ERR! stack     at Process.ChildProcess._handle.onexit (child_process.js:784:12)
gyp ERR! System Windows_NT 6.2.9200
gyp ERR! command "node" "C:\\Program Files\\nodejs\\node_modules\\npm\\node_modules\\node-gyp\\bin\\node-gyp.js" "rebuild"
gyp ERR! cwd D:\songs\demo\node_modules\speaker
gyp ERR! node -v v0.10.5
gyp ERR! node-gyp -v v0.9.5
gyp ERR! not ok
npm ERR! [email protected] install: `node-gyp rebuild`
npm ERR! `cmd "/c" "node-gyp rebuild"` failed with 1
npm ERR!
npm ERR! Failed at the [email protected] install script.
npm ERR! This is most likely a problem with the speaker package,
npm ERR! not with npm itself.
npm ERR! Tell the author that this fails on your system:
npm ERR!     node-gyp rebuild
npm ERR! You can get their info via:
npm ERR!     npm owner ls speaker
npm ERR! There is likely additional logging output above.

npm ERR! System Windows_NT 6.2.9200
npm ERR! command "C:\\Program Files\\nodejs\\\\node.exe" "C:\\Program Files\\nodejs\\node_modules\\npm\\bin\\npm-cli.js" "install" "speaker"
npm ERR! cwd D:\songs\demo
npm ERR! node -v v0.10.5
npm ERR! npm -v 1.2.18
npm ERR! code ELIFECYCLE
npm ERR!
npm ERR! Additional logging details can be found in:
npm ERR!     D:\songs\demo\npm-debug.log
npm ERR! not ok code 0

please look into issue
I am using windows 8

Error occurs occasionally in Mac OSX. "libc++abi.dylib: Pure virtual function called !"

Hi, I am very grateful to node-speaker. I have some questions. When repeatedly play music, error occurs occasionally in Mac OSX. (It does not occur in linux.) The error occurs in the following. Is this a problem of xcode? Or will the problem of node-speaker? Please give me some advice.

https://github.com/teegh/speakerErrorCase

./node_modules/speaker/index.js 353

binding.close(this.audio_handle);

Error occurs in the above codes. Error message was following.

libc++abi.dylib: Pure virtual function called!

Speaker.prototype.close = function (flush) {
  debug('close(%o)', flush);
  if (this._closed) return debug('already closed...');

  if (this.audio_handle) {
    if (false !== flush) {
      // TODO: async most likely…
      debug('invoking flush() native binding');
      binding.flush(this.audio_handle);
    }

    // TODO: async maybe?
    debug('invoking close() native binding');

    console.log("binding.close start");
    binding.close(this.audio_handle);  //Error occurs occasionally in Mac OSX. "libc++abi.dylib: Pure virtual function called !"
    console.log("binding.close complete");

    this.audio_handle = null;
  } else {
    debug('not invoking flush() or close() bindings since no `audio_handle`');
  }

  this._closed = true;
  this.emit('close');
};

get ERR when install with npm_config_arch=ia32

export npm_config_arch=ia32
export npm_config_target=0.11.10
nvm use 0.11.10
npm install speaker

error log:

/home/hata/.node-gyp/0.11.10/deps/v8/include/v8.h:5816:31: warning: typedef ‘I’ locally defined but not used [-Wunused-local-typedefs]
   typedef internal::Internals I;
                               ^
  SOLINK_MODULE(target) Release/obj.target/binding.node
/usr/bin/ld: cannot find -lasound
/usr/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-linux-gnu/4.8/libstdc++.so when searching for -lstdc++
/usr/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-linux-gnu/4.8/libstdc++.a when searching for -lstdc++
/usr/bin/ld: cannot find -lstdc++
collect2: error: ld returned 1 exit status
make: *** [Release/obj.target/binding.node] Error 1
make: Leaving directory `/home/hata/node_modules/speaker/build'
gyp ERR! build error 
gyp ERR! stack Error: `make` failed with exit code: 2
gyp ERR! stack     at ChildProcess.onExit (/home/hata/.nvm/v0.11.10/lib/node_modules/npm/node_modules/node-gyp/lib/build.js:267:23)
gyp ERR! stack     at ChildProcess.EventEmitter.emit (events.js:104:17)
gyp ERR! stack     at Process.ChildProcess._handle.onexit (child_process.js:862:12)
gyp ERR! System Linux 3.13.0-24-generic
gyp ERR! command "node" "/home/hata/.nvm/v0.11.10/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild"
gyp ERR! cwd /home/hata/node_modules/speaker
gyp ERR! node -v v0.11.10
gyp ERR! node-gyp -v v0.12.1
gyp ERR! not ok 
npm ERR! [email protected] install: `node-gyp rebuild`
npm ERR! Exit status 1
npm ERR! 
npm ERR! Failed at the [email protected] install script.
npm ERR! This is most likely a problem with the speaker package,
npm ERR! not with npm itself.
npm ERR! Tell the author that this fails on your system:
npm ERR!     node-gyp rebuild
npm ERR! You can get their info via:
npm ERR!     npm owner ls speaker
npm ERR! There is likely additional logging output above.

npm ERR! System Linux 3.13.0-24-generic
npm ERR! command "/home/hata/.nvm/v0.11.10/bin/node" "/home/hata/.nvm/v0.11.10/bin/npm" "install" "speaker"
npm ERR! cwd /home/hata
npm ERR! node -v v0.11.10
npm ERR! npm -v 1.3.22
npm ERR! code ELIFECYCLE
npm ERR! 
npm ERR! Additional logging details can be found in:
npm ERR!     /home/hata/npm-debug.log
npm ERR! not ok code 0


Hardcoded 0.5 seconds of lag in ALSA backend

Hey, I'm using this module in a node-backed music/dj server (developing on linux) and it's been treating me pretty well so far. The only issue that I've had is that mpg123's alsa output driver contains a hardcoded #DEFINE forcing half a second of lag. I swapped this number out for 0.05 in my local copy of the module and achieved stable output with almost no noticeable control lag.

Is is possible for this #DEFINE to be made a dynamic setting, or will I need to fork node-speaker and change it in the fork?

I have not checked if any other backends have such a buffer hardcoded.

Error: shasum check failed when installing on OSX

Hi,

I'm getting the following blow up when installing speaker on my Mac:

sigh$ sudo npm install speaker -g
Password:
npm http GET https://registry.npmjs.org/speaker
npm http 304 https://registry.npmjs.org/speaker
npm http GET https://registry.npmjs.org/speaker/-/speaker-0.1.1.tgz
npm http 200 https://registry.npmjs.org/speaker/-/speaker-0.1.1.tgz
npm ERR! Error: shasum check failed for /Users/sigh/tmp/npm-56824-Mg1XHadn/1401553528815-0.8744359612464905/tmp.tgz
npm ERR! Expected: 7d9e26ae1a2b3b07fb5ffcfa6c830ce56f52505a
npm ERR! Actual:   c17bf99f53e3b1510955711086c8a3ffb9ea93ab
npm ERR! From:     https://registry.npmjs.org/speaker/-/speaker-0.1.1.tgz
npm ERR!     at /usr/local/lib/node_modules/npm/node_modules/sha/index.js:38:8
npm ERR!     at ReadStream.<anonymous> (/usr/local/lib/node_modules/npm/node_modules/sha/index.js:85:7)
npm ERR!     at ReadStream.EventEmitter.emit (events.js:117:20)
npm ERR!     at _stream_readable.js:920:16
npm ERR!     at process._tickCallback (node.js:415:13)
npm ERR! If you need help, you may report this *entire* log,
npm ERR! including the npm and node versions, at:
npm ERR!     <http://github.com/npm/npm/issues>
npm ERR! System Darwin 13.1.0
npm ERR! command "node" "/usr/local/bin/npm" "install" "speaker" "-g"
npm ERR! cwd /Users/sigh/src
npm ERR! node -v v0.10.26
npm ERR! npm -v 1.4.3
npm ERR! 
npm ERR! Additional logging details can be found in:
npm ERR!     /Users/sigh/src/npm-debug.log
npm ERR! not ok code 0

Here's the contents of npm-debug.log:

0 info it worked if it ends with ok
1 verbose cli [ 'node', '/usr/local/bin/npm', 'install', 'speaker', '-g' ]
2 info using [email protected]
3 info using [email protected]
4 verbose cache add [ 'speaker', null ]
5 verbose cache add name=undefined spec="speaker" args=["speaker",null]
6 verbose parsed url { protocol: null,
6 verbose parsed url   slashes: null,
6 verbose parsed url   auth: null,
6 verbose parsed url   host: null,
6 verbose parsed url   port: null,
6 verbose parsed url   hostname: null,
6 verbose parsed url   hash: null,
6 verbose parsed url   search: null,
6 verbose parsed url   query: null,
6 verbose parsed url   pathname: 'speaker',
6 verbose parsed url   path: 'speaker',
6 verbose parsed url   href: 'speaker' }
7 silly lockFile 9ee31843-speaker speaker
8 verbose lock speaker /Users/sigh/.npm/9ee31843-speaker.lock
9 silly lockFile 9ee31843-speaker speaker
10 silly lockFile 9ee31843-speaker speaker
11 verbose addNamed [ 'speaker', '' ]
12 verbose addNamed [ null, '*' ]
13 silly lockFile 38e0e7f2-speaker speaker@
14 verbose lock speaker@ /Users/sigh/.npm/38e0e7f2-speaker.lock
15 silly addNameRange { name: 'speaker', range: '*', hasData: false }
16 verbose url raw speaker
17 verbose url resolving [ 'https://registry.npmjs.org/', './speaker' ]
18 verbose url resolved https://registry.npmjs.org/speaker
19 info trying registry request attempt 1 at 17:25:27
20 verbose etag "1BONEK7WDDYZS8AM7AWS164AB"
21 http GET https://registry.npmjs.org/speaker
22 http 304 https://registry.npmjs.org/speaker
23 silly registry.get cb [ 304,
23 silly registry.get   { date: 'Sat, 31 May 2014 16:25:28 GMT',
23 silly registry.get     server: 'Apache',
23 silly registry.get     via: '1.1 varnish',
23 silly registry.get     'last-modified': 'Sat, 31 May 2014 16:25:28 GMT',
23 silly registry.get     'cache-control': 'max-age=1',
23 silly registry.get     etag: '"1BONEK7WDDYZS8AM7AWS164AB"',
23 silly registry.get     'x-served-by': 'cache-lcy1129-LCY',
23 silly registry.get     'x-cache': 'MISS',
23 silly registry.get     'x-cache-hits': '0',
23 silly registry.get     'x-timer': 'S1401553528.718837,VS0,VE250',
23 silly registry.get     vary: 'Accept',
23 silly registry.get     'content-length': '0',
23 silly registry.get     'keep-alive': 'timeout=10, max=50',
23 silly registry.get     connection: 'Keep-Alive' } ]
24 verbose etag speaker from cache
25 silly addNameRange number 2 { name: 'speaker', range: '*', hasData: true }
26 silly addNameRange versions [ 'speaker',
26 silly addNameRange   [ '0.0.1',
26 silly addNameRange     '0.0.2',
26 silly addNameRange     '0.0.3',
26 silly addNameRange     '0.0.4',
26 silly addNameRange     '0.0.5',
26 silly addNameRange     '0.0.6',
26 silly addNameRange     '0.0.7',
26 silly addNameRange     '0.0.8',
26 silly addNameRange     '0.0.9',
26 silly addNameRange     '0.0.10',
26 silly addNameRange     '0.1.0',
26 silly addNameRange     '0.1.1' ] ]
27 verbose addNamed [ 'speaker', '0.1.1' ]
28 verbose addNamed [ '0.1.1', '0.1.1' ]
29 silly lockFile 02c6db3f-speaker-0-1-1 [email protected]
30 verbose lock [email protected] /Users/sigh/.npm/02c6db3f-speaker-0-1-1.lock
31 silly lockFile 7ea18829-js-org-speaker-speaker-0-1-1-tgz https://registry.npmjs.org/speaker/-/speaker-0.1.1.tgz
32 verbose lock https://registry.npmjs.org/speaker/-/speaker-0.1.1.tgz /Users/sigh/.npm/7ea18829-js-org-speaker-speaker-0-1-1-tgz.lock
33 verbose addRemoteTarball [ 'https://registry.npmjs.org/speaker/-/speaker-0.1.1.tgz',
33 verbose addRemoteTarball   '7d9e26ae1a2b3b07fb5ffcfa6c830ce56f52505a' ]
34 info retry fetch attempt 1 at 17:25:28
35 verbose fetch to= /Users/sigh/tmp/npm-56824-Mg1XHadn/1401553528815-0.8744359612464905/tmp.tgz
36 http GET https://registry.npmjs.org/speaker/-/speaker-0.1.1.tgz
37 http 200 https://registry.npmjs.org/speaker/-/speaker-0.1.1.tgz
38 silly lockFile 7ea18829-js-org-speaker-speaker-0-1-1-tgz https://registry.npmjs.org/speaker/-/speaker-0.1.1.tgz
39 silly lockFile 7ea18829-js-org-speaker-speaker-0-1-1-tgz https://registry.npmjs.org/speaker/-/speaker-0.1.1.tgz
40 silly lockFile 02c6db3f-speaker-0-1-1 [email protected]
41 silly lockFile 02c6db3f-speaker-0-1-1 [email protected]
42 silly lockFile 38e0e7f2-speaker speaker@
43 silly lockFile 38e0e7f2-speaker speaker@
44 error Error: shasum check failed for /Users/sigh/tmp/npm-56824-Mg1XHadn/1401553528815-0.8744359612464905/tmp.tgz
44 error Expected: 7d9e26ae1a2b3b07fb5ffcfa6c830ce56f52505a
44 error Actual:   c17bf99f53e3b1510955711086c8a3ffb9ea93ab
44 error From:     https://registry.npmjs.org/speaker/-/speaker-0.1.1.tgz
44 error     at /usr/local/lib/node_modules/npm/node_modules/sha/index.js:38:8
44 error     at ReadStream.<anonymous> (/usr/local/lib/node_modules/npm/node_modules/sha/index.js:85:7)
44 error     at ReadStream.EventEmitter.emit (events.js:117:20)
44 error     at _stream_readable.js:920:16
44 error     at process._tickCallback (node.js:415:13)
45 error If you need help, you may report this *entire* log,
45 error including the npm and node versions, at:
45 error     <http://github.com/npm/npm/issues>
46 error System Darwin 13.1.0
47 error command "node" "/usr/local/bin/npm" "install" "speaker" "-g"
48 error cwd /Users/sigh/src
49 error node -v v0.10.26
50 error npm -v 1.4.3
51 verbose exit [ 1, true ]

Any ideas what might be causing this error?

Thanks

Chris

Failed at the [email protected] install script.

node-gyp rebuild

npm http GET https://registry.npmjs.org/bindings
npm http GET https://registry.npmjs.org/debug
npm http GET https://registry.npmjs.org/readable-stream
make: Entering directory `/usr/lib/node_modules/douban.fm/node_modules/player/node_modules/speaker                                                              /build'
  CC(target) Release/obj.target/output/deps/mpg123/src/output/alsa.o
npm http 304 https://registry.npmjs.org/debug
npm http 304 https://registry.npmjs.org/readable-stream
npm http 304 https://registry.npmjs.org/bindings

> [email protected] install /usr/lib/node_modules/douban.fm/node_modules/player/node_modules/lame
> node-gyp rebuild

  AR(target) Release/obj.target/deps/mpg123/liboutput.a
  CXX(target) Release/obj.target/binding/src/binding.o
make: execvp: g++: Not a directory
make: *** [Release/obj.target/binding/src/binding.o] Error 127
make: Leaving directory `/usr/lib/node_modules/douban.fm/node_modules/player/node_modules/speaker/                                                              build'
gyp ERR! build error
gyp ERR! stack Error: `make` failed with exit code: 2
gyp ERR! stack     at ChildProcess.onExit (/usr/lib/node_modules/npm/node_modules/node-gyp/lib/bui                                                              ld.js:255:23)
gyp ERR! stack     at ChildProcess.emit (events.js:70:17)
gyp ERR! stack     at maybeExit (child_process.js:362:16)
gyp ERR! stack     at Process.onexit (child_process.js:398:5)
gyp ERR! System Linux 3.0.62
gyp ERR! command "node" "/usr/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild                                                              "
gyp ERR! cwd /usr/lib/node_modules/douban.fm/node_modules/player/node_modules/speaker
gyp ERR! node -v v0.6.19
gyp ERR! node-gyp -v v0.8.2
gyp ERR! not ok
npm ERR! [email protected] install: `node-gyp rebuild`
npm ERR! `sh "-c" "node-gyp rebuild"` failed with 1
npm ERR!
npm ERR! Failed at the [email protected] install script.
npm ERR! This is most likely a problem with the speaker package,
npm ERR! not with npm itself.
npm ERR! Tell the author that this fails on your system:
npm ERR!     node-gyp rebuild
npm ERR! You can get their info via:
npm ERR!     npm owner ls speaker
npm ERR! There is likely additional logging output above.

npm ERR! System Linux 3.0.62
npm ERR! command "node" "/usr/bin/npm" "install" "douban.fm" "-g"
npm ERR! cwd /root
npm ERR! node -v v0.6.19
npm ERR! npm -v 1.1.71
npm ERR! code ELIFECYCLE
gyp ERR! UNCAUGHT EXCEPTION
gyp ERR! stack Error: ENOENT, no such file or directory
gyp ERR! stack     at Object.resolve (path.js:280:52)
gyp ERR! stack     at configure (/usr/lib/node_modules/npm/node_modules/node-gyp/lib/configure.js:                                                              27:23)
gyp ERR! stack     at Object.configure (/usr/lib/node_modules/npm/node_modules/node-gyp/lib/node-g                                                              yp.js:56:37)
gyp ERR! stack     at Array.run [as 0] (/usr/lib/node_modules/npm/node_modules/node-gyp/bin/node-g                                                              yp.js:72:30)
gyp ERR! stack     at EventEmitter._tickCallback (node.js:190:39)
gyp ERR! System Linux 3.0.62
gyp ERR! command "node" "/usr/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild                                                              "
gyp ERR! Completion callback never invoked!
gyp ERR! System Linux 3.0.62
gyp ERR! command "node" "/usr/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild                                                              "
gyp ERR! UNCAUGHT EXCEPTION
gyp ERR! stack Error: ENOENT, no such file or directory
gyp ERR! stack     at errorMessage (/usr/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.j                                                              s:119:28)
gyp ERR! stack     at issueMessage (/usr/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.j                                                              s:125:3)
gyp ERR! stack     at EventEmitter.<anonymous> (/usr/lib/node_modules/npm/node_modules/node-gyp/bi                                                              n/node-gyp.js:101:5)
gyp ERR! stack     at EventEmitter.emit (events.js:64:17)
gyp ERR! System Linux 3.0.62
gyp ERR! command "node" "/usr/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild                                                              "
npm ERR!
npm ERR! Additional logging details can be found in:
npm ERR!     /root/npm-debug.log
npm ERR! not ok code undefined
npm ERR! not ok code 1
root@localhost:~# Failed at the [email protected] install script.
-bash: Failed: command not found

Installation fails on Raspbian

While installing on Raspbian I get
gyp WARN EACCES user "root" does not have permission to access the dev dir "/root/.node-gyp/0.10.33"
gyp WARN EACCES attempting to reinstall using temporary dev dir "/home/pi/nodefiles/node_modules/speaker/.node-gyp"
make: Entering directory '/home/pi/nodefiles/node_modules/speaker/build' CC(target) Release/obj.target/output/deps/mpg123/src/output/alsa.o ../deps/mpg123/src/output/alsa.c:19:28: fatal error: alsa/asoundlib.h: No such file or directory compilation terminated.
deps/mpg123/output.target.mk:97: recipe for target 'Release/obj.target/output/deps/mpg123/src/output/alsa.o' failed
make: *** [Release/obj.target/output/deps/mpg123/src/output/alsa.o] Error 1
make: Leaving directory '/home/pi/nodefiles/node_modules/speaker/build'
gyp ERR! build error
gyp ERR! stack Error:makefailed with exit code: 2
gyp ERR! stack at ChildProcess.onExit (/usr/local/lib/node_modules/npm/node_modules/node-gyp/lib/build.js:267:23)
gyp ERR! stack at ChildProcess.emit (events.js:98:17)
gyp ERR! stack at Process.ChildProcess._handle.onexit (child_process.js:810:12)
gyp ERR! System Linux 3.12.30+
gyp ERR! command "node" "/usr/local/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild"
gyp ERR! cwd /home/pi/nodefiles/node_modules/speaker
gyp ERR! node -v v0.10.33
gyp ERR! node-gyp -v v1.0.1
gyp ERR! not ok

Though this seems not be directly related to speaker module, it prevents from installing it.
I tried with sudo npm install --unsafe-perm -g speaker without success.

Fails to install on Mac OS X

$ npm install speaker 
\
> [email protected] install /Users/me/Development/app/node_modules/speaker
> node-gyp rebuild

  CC(target) Release/obj.target/output/deps/mpg123/src/output/coreaudio.o
  LIBTOOL-STATIC Release/liboutput.a
  CXX(target) Release/obj.target/binding/src/binding.o
In file included from ../src/binding.cc:8:
In file included from ../src/node_pointer.h:7:
In file included from ../node_modules/nan/nan.h:80:
In file included from ../node_modules/nan/nan_new.h:190:
../node_modules/nan/nan_implementation_12_inl.h:181:66: error: too many arguments to function call, expected at most 2, have 4
  return v8::Signature::New(v8::Isolate::GetCurrent(), receiver, argc, argv);
         ~~~~~~~~~~~~~~~~~~                                      ^~~~~~~~~~
/Users/moogs/.node-gyp/2.4.0/deps/v8/include/v8.h:4188:3: note: 'New' declared here
  static Local<Signature> New(
  ^
1 error generated.
make: *** [Release/obj.target/binding/src/binding.o] Error 1
gyp ERR! build error 
gyp ERR! stack Error: `make` failed with exit code: 2
gyp ERR! stack     at ChildProcess.onExit (/usr/local/lib/node_modules/npm/node_modules/node-gyp/lib/build.js:269:23)
gyp ERR! stack     at emitTwo (events.js:87:13)
gyp ERR! stack     at ChildProcess.emit (events.js:172:7)
gyp ERR! stack     at Process.ChildProcess._handle.onexit (internal/child_process.js:200:12)
gyp ERR! System Darwin 14.3.0
gyp ERR! command "/usr/local/bin/iojs" "/usr/local/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild"
gyp ERR! cwd /app/node_modules/speaker
gyp ERR! node -v v2.4.0
gyp ERR! node-gyp -v v2.0.1
gyp ERR! not ok 
npm ERR! Darwin 14.3.0
npm ERR! argv "/usr/local/bin/iojs" "/usr/local/bin/npm" "install" "speaker"
npm ERR! node v2.4.0
npm ERR! npm  v2.13.0
npm ERR! code ELIFECYCLE

npm ERR! [email protected] install: `node-gyp rebuild`
npm ERR! Exit status 1
npm ERR! 
npm ERR! Failed at the [email protected] install script 'node-gyp rebuild'.
npm ERR! This is most likely a problem with the speaker package,
npm ERR! not with npm itself.
npm ERR! Tell the author that this fails on your system:
npm ERR!     node-gyp rebuild
npm ERR! You can get their info via:
npm ERR!     npm owner ls speaker
npm ERR! There is likely additional logging output above.

npm ERR! Please include the following file with any support request:
npm ERR!     /Users/me/Development/app/npm-debug.log

$ sw_vers
ProductName:    Mac OS X
ProductVersion: 10.10.3
BuildVersion:   14D136

$ node -v
v2.4.0

$ npm -v
2.13.0

Set volume from 0 -> 100%

First thanks for this package, it's awesome !

During one of my project, I play music and use tts features for orders validation as 'playing next song', 'stop music'...
It would be better if I could set tts volume to 40% for example and then if the music volume is high, it will not surprise me sometimes.

So, a 'volume' parameter on Speaker instantiation would be great.

Unable to install in Windows 7

Tried to install under windows 7 64 with no success. Here's the log i get from npm:

0 info it worked if it ends with ok
1 verbose cli [ 'C:\\Program Files\\nodejs\\\\node.exe',
1 verbose cli   'C:\\Program Files\\nodejs\\node_modules\\npm\\bin\\npm-cli.js',
1 verbose cli   'install',
1 verbose cli   'speaker' ]
2 info using [email protected]
3 info using [email protected]
4 verbose node symlink C:\Program Files\nodejs\\node.exe
5 verbose read json C:\Users\ovsleep\package.json
6 verbose read json C:\Users\ovsleep\package.json
7 verbose cache add [ 'speaker', null ]
8 verbose cache add name=undefined spec="speaker" args=["speaker",null]
9 verbose parsed url { protocol: null,
9 verbose parsed url   slashes: null,
9 verbose parsed url   auth: null,
9 verbose parsed url   host: null,
9 verbose parsed url   port: null,
9 verbose parsed url   hostname: null,
9 verbose parsed url   hash: null,
9 verbose parsed url   search: null,
9 verbose parsed url   query: null,
9 verbose parsed url   pathname: 'speaker',
9 verbose parsed url   path: 'speaker',
9 verbose parsed url   href: 'speaker' }
10 silly lockFile 9ee31843-speaker speaker
11 verbose lock speaker C:\Users\ovsleep\AppData\Roaming\npm-cache\9ee31843-speaker.lock
12 silly lockFile 9ee31843-speaker speaker
13 silly lockFile 9ee31843-speaker speaker
14 verbose addNamed [ 'speaker', '' ]
15 verbose addNamed [ null, '' ]
16 silly lockFile 38e0e7f2-speaker speaker@
17 verbose lock speaker@ C:\Users\ovsleep\AppData\Roaming\npm-cache\38e0e7f2-speaker.lock
18 silly addNameRange { name: 'speaker', range: '', hasData: false }
19 verbose url raw speaker
20 verbose url resolving [ 'https://registry.npmjs.org/', './speaker' ]
21 verbose url resolved https://registry.npmjs.org/speaker
22 info trying registry request attempt 1 at 00:38:44
23 verbose etag "74SQK55ABEWDMO71F31E58E6U"
24 http GET https://registry.npmjs.org/speaker
25 http 304 https://registry.npmjs.org/speaker
26 silly registry.get cb [ 304,
26 silly registry.get   { server: 'CouchDB/1.2.1 (Erlang OTP/R15B03)',
26 silly registry.get     etag: '"74SQK55ABEWDMO71F31E58E6U"',
26 silly registry.get     date: 'Tue, 19 Mar 2013 03:39:03 GMT',
26 silly registry.get     'content-length': '0' } ]
27 verbose etag speaker from cache
28 silly addNameRange number 2 { name: 'speaker', range: '', hasData: true }
29 silly addNameRange versions [ 'speaker',
29 silly addNameRange   [ '0.0.1',
29 silly addNameRange     '0.0.2',
29 silly addNameRange     '0.0.3',
29 silly addNameRange     '0.0.4',
29 silly addNameRange     '0.0.5',
29 silly addNameRange     '0.0.6',
29 silly addNameRange     '0.0.7',
29 silly addNameRange     '0.0.8',
29 silly addNameRange     '0.0.9' ] ]
30 verbose addNamed [ 'speaker', '0.0.9' ]
31 verbose addNamed [ '0.0.9', '0.0.9' ]
32 silly lockFile 0a357fa9-speaker-0-0-9 [email protected]
33 verbose lock [email protected] C:\Users\ovsleep\AppData\Roaming\npm-cache\0a357fa9-speaker-0-0-9.lock
34 verbose read json C:\Users\ovsleep\AppData\Roaming\npm-cache\speaker\0.0.9\package\package.json
35 silly lockFile 0a357fa9-speaker-0-0-9 [email protected]
36 silly lockFile 0a357fa9-speaker-0-0-9 [email protected]
37 silly lockFile 38e0e7f2-speaker speaker@
38 silly lockFile 38e0e7f2-speaker speaker@
39 silly resolved [ { name: 'speaker',
39 silly resolved     description: 'Output PCM audio data to the speakers',
39 silly resolved     keywords:
39 silly resolved      [ 'pcm',
39 silly resolved        'audio',
39 silly resolved        'music',
39 silly resolved        'output',
39 silly resolved        'speaker',
39 silly resolved        'headphone',
39 silly resolved        'alsa',
39 silly resolved        'coreaudio',
39 silly resolved        'openal',
39 silly resolved        'sdl',
39 silly resolved        'portaudio',
39 silly resolved        'jack',
39 silly resolved        'oss',
39 silly resolved        'pulse',
39 silly resolved        'mpg123' ],
39 silly resolved     version: '0.0.9',
39 silly resolved     author:
39 silly resolved      { name: 'Nathan Rajlich',
39 silly resolved        email: '[email protected]',
39 silly resolved        url: 'http://tootallnate.net' },
39 silly resolved     repository:
39 silly resolved      { type: 'git',
39 silly resolved        url: 'git://github.com/TooTallNate/node-speaker.git' },
39 silly resolved     main: './index.js',
39 silly resolved     scripts:
39 silly resolved      { test: 'node-gyp rebuild --mpg123-backend=dummy && mocha --reporter spec',
39 silly resolved        install: 'node-gyp rebuild' },
39 silly resolved     dependencies: { bindings: '*', debug: '*', 'readable-stream': '*' },
39 silly resolved     devDependencies: { mocha: '*' },
39 silly resolved     gypfile: true,
39 silly resolved     readme: 'node-speaker\n============\n### Output [PCM audio][pcm] data to the speakers\n[![Build Status](https://secure.travis-ci.org/TooTallNate/node-speaker.png)](http://travis-ci.org/TooTallNate/node-speaker)\n\n\nA Writable stream instance that accepts [PCM audio][pcm] data and outputs it\nto the speakers. The output is backed by `mpg123`\'s audio output modules, which\nin turn use any number of audio backends commonly found on Operating Systems\nthese days.\n\n\nInstallation\n------------\n\nSimply compile and install `node-speaker` using `npm`:\n\n``` bash\n$ npm install speaker\n```\n\nOn Debian/Ubuntu, the ALSA backend is selected by default, so be sure to have the\n`alsa.h` header file in place:\n\n``` bash\n$ sudo apt-get install libasound2-dev\n```\n\n\nExample\n-------\n\nHere\'s an example of piping `stdin` to the speaker, which should be 2 channel,\n16-bit audio at 44,100 samples per second (a.k.a CD quality audio).\n\n``` javascript\nvar Speaker = require(\'speaker\');\n\n// Create the Speaker instance\nvar speaker = new Speaker({\n  channels: 2,          // 2 channels\n  bitDepth: 16,         // 16-bit samples\n  sampleRate: 44100     // 44,100 Hz sample rate\n});\n\n// PCM data from stdin gets piped into the speaker\nprocess.stdin.pipe(speaker);\n```\n\n\nAPI\n---\n\n`require(\'speaker\')` directly returns the `Speaker` constructor. It is the only\ninterface exported by `node-speaker`.\n\n### new Speaker([ format ]) -> Speaker instance;\n\nCreates a new `Speaker` instance, which is a writable stream that you can pipe\nPCM audio data to. The optional `format` object may contain any of the `Writable`\nbase class options, as well as any of these PCM formatting options:\n\n  * `channels` - The number of audio channels. PCM data must be interleaved. Defaults to `2`.\n  * `bitDepth` - The number of bits per sample. Defaults to `16` (16-bit).\n  * `sampleRate` - The number of samples per second per channel. Defaults to `44100`.\n  * `signed` - Boolean specifying if the samples are signed or unsigned. Defaults to `true` when bit depth is 8-bit, `false` otherwise.\n  * `samplesPerFrame` The number of samples to send to the audio backend at a time. You likely don\'t need to mess with this value. Defaults to `1024`.\n\n#### "open" event\n\nFired when the backend `open()` call has completed. This happens once the first\n`write()` call happens on the speaker instance.\n\n#### "flush" event\n\nFired after the speaker instance has had `end()` called, and after the audio data\nhas been flushed to the speakers.\n\n#### "close" event\n\nFired after the "flush" event, after the backend `close()` call has completed.\nThis speaker instance is essentially finished after this point.\n\n\nAudio Backend Selection\n-----------------------\n\n`node-speaker` is backed by `mpg123`\'s "output modules", which in turn use one of\nmany popular audio backends like ALSA, OSS, SDL, and lots more. The default\nbackends for each operating system are described in the table below:\n\n| **Operating System** | **Audio Backend** | **Description**\n|:---------------------|:------------------|:----------------------------------\n| Linux                | `alsa`            | Output audio using Advanced Linux Sound Architecture (ALSA).\n| Mac OS X             | `coreaudio`       | Output audio using Mac OS X\'s CoreAudio.\n| Windows              | `win32`           | Audio output for Windows (winmm).\n| Solaris              | `sun`             | Audio output for Sun Audio.\n\nTo manually override the default backend, pass the `--mpg123-backend` switch to\n`npm`/`node-gyp`:\n\n``` bash\n$ npm install speaker --mpg123-backend=openal\n```\n\n[pcm]: http://en.wikipedia.org/wiki/Pulse-code_modulation\n',
39 silly resolved     readmeFilename: 'README.md',
39 silly resolved     _id: '[email protected]',
39 silly resolved     _from: 'speaker@' } ]
40 info install [email protected] into C:\Users\ovsleep
41 info installOne [email protected]
42 verbose from cache C:\Users\ovsleep\AppData\Roaming\npm-cache\speaker\0.0.9\package\package.json
43 info C:\Users\ovsleep\node_modules\speaker unbuild
44 verbose read json C:\Users\ovsleep\node_modules\speaker\package.json
45 verbose tar unpack C:\Users\ovsleep\AppData\Roaming\npm-cache\speaker\0.0.9\package.tgz
46 silly lockFile 6ebc1760-ers-ovsleep-node-modules-speaker C:\Users\ovsleep\node_modules\speaker
47 verbose lock C:\Users\ovsleep\node_modules\speaker C:\Users\ovsleep\AppData\Roaming\npm-cache\6ebc1760-ers-ovsleep-node-modules-speaker.lock
48 silly lockFile 6a914f66--cache-speaker-0-0-9-package-tgz C:\Users\ovsleep\AppData\Roaming\npm-cache\speaker\0.0.9\package.tgz
49 verbose lock C:\Users\ovsleep\AppData\Roaming\npm-cache\speaker\0.0.9\package.tgz C:\Users\ovsleep\AppData\Roaming\npm-cache\6a914f66--cache-speaker-0-0-9-package-tgz.lock
50 silly gunzTarPerm modes [ '755', '644' ]
51 silly gunzTarPerm extractEntry package.json
52 silly gunzTarPerm modified mode [ 'package.json', 438, 420 ]
53 silly gunzTarPerm extractEntry .npmignore
54 silly gunzTarPerm modified mode [ '.npmignore', 438, 420 ]
55 silly gunzTarPerm extractEntry README.md
56 silly gunzTarPerm modified mode [ 'README.md', 438, 420 ]
57 silly gunzTarPerm extractEntry index.js
58 silly gunzTarPerm modified mode [ 'index.js', 438, 420 ]
59 silly gunzTarPerm extractEntry examples/sine.js
60 silly gunzTarPerm modified mode [ 'examples/sine.js', 438, 420 ]
61 silly gunzTarPerm extractEntry examples/stdin.js
62 silly gunzTarPerm modified mode [ 'examples/stdin.js', 438, 420 ]
63 silly gunzTarPerm extractEntry .travis.yml
64 silly gunzTarPerm modified mode [ '.travis.yml', 438, 420 ]
65 silly gunzTarPerm extractEntry test/test.js
66 silly gunzTarPerm modified mode [ 'test/test.js', 438, 420 ]
67 silly gunzTarPerm extractEntry binding.gyp
68 silly gunzTarPerm modified mode [ 'binding.gyp', 438, 420 ]
69 silly gunzTarPerm extractEntry deps/mpg123/README
70 silly gunzTarPerm modified mode [ 'deps/mpg123/README', 438, 420 ]
71 silly gunzTarPerm extractEntry deps/mpg123/Makefile.in
72 silly gunzTarPerm modified mode [ 'deps/mpg123/Makefile.in', 438, 420 ]
73 silly gunzTarPerm extractEntry deps/mpg123/ChangeLog
74 silly gunzTarPerm modified mode [ 'deps/mpg123/ChangeLog', 438, 420 ]
75 silly gunzTarPerm extractEntry deps/mpg123/config/linux/arm/config.h
76 silly gunzTarPerm modified mode [ 'deps/mpg123/config/linux/arm/config.h', 438, 420 ]
77 silly gunzTarPerm extractEntry deps/mpg123/config/linux/arm/mpg123.h
78 silly gunzTarPerm modified mode [ 'deps/mpg123/config/linux/arm/mpg123.h', 438, 420 ]
79 silly gunzTarPerm extractEntry deps/mpg123/config/linux/ia32/config.h
80 silly gunzTarPerm modified mode [ 'deps/mpg123/config/linux/ia32/config.h', 438, 420 ]
81 silly gunzTarPerm extractEntry deps/mpg123/config/linux/ia32/mpg123.h
82 silly gunzTarPerm modified mode [ 'deps/mpg123/config/linux/ia32/mpg123.h', 438, 420 ]
83 silly gunzTarPerm extractEntry deps/mpg123/config/linux/x64/config.h
84 silly gunzTarPerm modified mode [ 'deps/mpg123/config/linux/x64/config.h', 438, 420 ]
85 silly gunzTarPerm extractEntry deps/mpg123/config/linux/x64/mpg123.h
86 silly gunzTarPerm modified mode [ 'deps/mpg123/config/linux/x64/mpg123.h', 438, 420 ]
87 silly gunzTarPerm extractEntry deps/mpg123/config/mac/ia32/config.h
88 silly gunzTarPerm modified mode [ 'deps/mpg123/config/mac/ia32/config.h', 438, 420 ]
89 silly gunzTarPerm extractEntry deps/mpg123/config/mac/ia32/mpg123.h
90 silly gunzTarPerm modified mode [ 'deps/mpg123/config/mac/ia32/mpg123.h', 438, 420 ]
91 silly gunzTarPerm extractEntry deps/mpg123/config/mac/x64/config.h
92 silly gunzTarPerm modified mode [ 'deps/mpg123/config/mac/x64/config.h', 438, 420 ]
93 silly gunzTarPerm extractEntry deps/mpg123/config/mac/x64/mpg123.h
94 silly gunzTarPerm modified mode [ 'deps/mpg123/config/mac/x64/mpg123.h', 438, 420 ]
95 silly gunzTarPerm extractEntry deps/mpg123/config/solaris/ia32/config.h
96 silly gunzTarPerm modified mode [ 'deps/mpg123/config/solaris/ia32/config.h', 438, 420 ]
97 silly gunzTarPerm extractEntry deps/mpg123/config/solaris/ia32/mpg123.h
98 silly gunzTarPerm modified mode [ 'deps/mpg123/config/solaris/ia32/mpg123.h', 438, 420 ]
99 silly gunzTarPerm extractEntry deps/mpg123/config/solaris/x64/config.h
100 silly gunzTarPerm modified mode [ 'deps/mpg123/config/solaris/x64/config.h', 438, 420 ]
101 silly gunzTarPerm extractEntry deps/mpg123/config/solaris/x64/mpg123.h
102 silly gunzTarPerm modified mode [ 'deps/mpg123/config/solaris/x64/mpg123.h', 438, 420 ]
103 silly gunzTarPerm extractEntry deps/mpg123/config/win/ia32/config.h
104 silly gunzTarPerm modified mode [ 'deps/mpg123/config/win/ia32/config.h', 438, 420 ]
105 silly gunzTarPerm extractEntry deps/mpg123/config/win/ia32/mpg123.h
106 silly gunzTarPerm modified mode [ 'deps/mpg123/config/win/ia32/mpg123.h', 438, 420 ]
107 silly gunzTarPerm extractEntry deps/mpg123/config/win/x64/config.h
108 silly gunzTarPerm modified mode [ 'deps/mpg123/config/win/x64/config.h', 438, 420 ]
109 silly gunzTarPerm extractEntry deps/mpg123/config/win/x64/mpg123.h
110 silly gunzTarPerm modified mode [ 'deps/mpg123/config/win/x64/mpg123.h', 438, 420 ]
111 silly gunzTarPerm extractEntry deps/mpg123/configure
112 silly gunzTarPerm modified mode [ 'deps/mpg123/configure', 438, 420 ]
113 silly gunzTarPerm extractEntry deps/mpg123/configure.ac
114 silly gunzTarPerm modified mode [ 'deps/mpg123/configure.ac', 438, 420 ]
115 silly gunzTarPerm extractEntry deps/mpg123/COPYING
116 silly gunzTarPerm modified mode [ 'deps/mpg123/COPYING', 438, 420 ]
117 silly gunzTarPerm extractEntry deps/mpg123/equalize.dat
118 silly gunzTarPerm modified mode [ 'deps/mpg123/equalize.dat', 438, 420 ]
119 silly gunzTarPerm extractEntry deps/mpg123/INSTALL
120 silly gunzTarPerm modified mode [ 'deps/mpg123/INSTALL', 438, 420 ]
121 silly gunzTarPerm extractEntry deps/mpg123/libmpg123.pc.in
122 silly gunzTarPerm modified mode [ 'deps/mpg123/libmpg123.pc.in', 438, 420 ]
123 silly gunzTarPerm extractEntry deps/mpg123/m4/addrconfig.m4
124 silly gunzTarPerm modified mode [ 'deps/mpg123/m4/addrconfig.m4', 438, 420 ]
125 silly gunzTarPerm extractEntry deps/mpg123/m4/libtool.m4
126 silly gunzTarPerm modified mode [ 'deps/mpg123/m4/libtool.m4', 438, 420 ]
127 silly gunzTarPerm extractEntry deps/mpg123/m4/ltoptions.m4
128 silly gunzTarPerm modified mode [ 'deps/mpg123/m4/ltoptions.m4', 438, 420 ]
129 silly gunzTarPerm extractEntry deps/mpg123/m4/ltsugar.m4
130 silly gunzTarPerm modified mode [ 'deps/mpg123/m4/ltsugar.m4', 438, 420 ]
131 silly gunzTarPerm extractEntry deps/mpg123/m4/ltversion.m4
132 silly gunzTarPerm modified mode [ 'deps/mpg123/m4/ltversion.m4', 438, 420 ]
133 silly gunzTarPerm extractEntry deps/mpg123/m4/lt~obsolete.m4
134 silly gunzTarPerm modified mode [ 'deps/mpg123/m4/lt~obsolete.m4', 438, 420 ]
135 silly gunzTarPerm extractEntry deps/mpg123/makedll.sh
136 silly gunzTarPerm modified mode [ 'deps/mpg123/makedll.sh', 438, 420 ]
137 silly gunzTarPerm extractEntry deps/mpg123/Makefile.am
138 silly gunzTarPerm modified mode [ 'deps/mpg123/Makefile.am', 438, 420 ]
139 silly gunzTarPerm extractEntry deps/mpg123/AUTHORS
140 silly gunzTarPerm modified mode [ 'deps/mpg123/AUTHORS', 438, 420 ]
141 silly gunzTarPerm extractEntry deps/mpg123/man1/mpg123.1
142 silly gunzTarPerm modified mode [ 'deps/mpg123/man1/mpg123.1', 438, 420 ]
143 silly gunzTarPerm extractEntry deps/mpg123/mpg123.gyp
144 silly gunzTarPerm modified mode [ 'deps/mpg123/mpg123.gyp', 438, 420 ]
145 silly gunzTarPerm extractEntry deps/mpg123/mpg123.spec
146 silly gunzTarPerm modified mode [ 'deps/mpg123/mpg123.spec', 438, 420 ]
147 silly gunzTarPerm extractEntry deps/mpg123/mpg123.spec.in
148 silly gunzTarPerm modified mode [ 'deps/mpg123/mpg123.spec.in', 438, 420 ]
149 silly gunzTarPerm extractEntry deps/mpg123/NEWS
150 silly gunzTarPerm modified mode [ 'deps/mpg123/NEWS', 438, 420 ]
151 silly gunzTarPerm extractEntry deps/mpg123/NEWS.libmpg123
152 silly gunzTarPerm modified mode [ 'deps/mpg123/NEWS.libmpg123', 438, 420 ]
153 silly gunzTarPerm extractEntry deps/mpg123/aclocal.m4
154 silly gunzTarPerm modified mode [ 'deps/mpg123/aclocal.m4', 438, 420 ]
155 silly gunzTarPerm extractEntry deps/mpg123/scripts/benchmark-cpu.pl
156 silly gunzTarPerm modified mode [ 'deps/mpg123/scripts/benchmark-cpu.pl', 438, 420 ]
157 silly gunzTarPerm extractEntry deps/mpg123/scripts/tag_lyrics.py
158 silly gunzTarPerm modified mode [ 'deps/mpg123/scripts/tag_lyrics.py', 438, 420 ]
159 silly gunzTarPerm extractEntry deps/mpg123/src/metaprint.h
160 silly gunzTarPerm modified mode [ 'deps/mpg123/src/metaprint.h', 438, 420 ]
161 silly gunzTarPerm extractEntry deps/mpg123/src/audio.c
162 silly gunzTarPerm modified mode [ 'deps/mpg123/src/audio.c', 438, 420 ]
163 silly gunzTarPerm extractEntry deps/mpg123/src/buffer.c
164 silly gunzTarPerm modified mode [ 'deps/mpg123/src/buffer.c', 438, 420 ]
165 silly gunzTarPerm extractEntry deps/mpg123/src/buffer.h
166 silly gunzTarPerm modified mode [ 'deps/mpg123/src/buffer.h', 438, 420 ]
167 silly gunzTarPerm extractEntry deps/mpg123/src/common.c
168 silly gunzTarPerm modified mode [ 'deps/mpg123/src/common.c', 438, 420 ]
169 silly gunzTarPerm extractEntry deps/mpg123/src/common.h
170 silly gunzTarPerm modified mode [ 'deps/mpg123/src/common.h', 438, 420 ]
171 silly gunzTarPerm extractEntry deps/mpg123/src/config.h.in
172 silly gunzTarPerm modified mode [ 'deps/mpg123/src/config.h.in', 438, 420 ]
173 silly gunzTarPerm extractEntry deps/mpg123/src/control_generic.c
174 silly gunzTarPerm modified mode [ 'deps/mpg123/src/control_generic.c', 438, 420 ]
175 silly gunzTarPerm extractEntry deps/mpg123/src/equalizer.c
176 silly gunzTarPerm modified mode [ 'deps/mpg123/src/equalizer.c', 438, 420 ]
177 silly gunzTarPerm extractEntry deps/mpg123/src/genre.c
178 silly gunzTarPerm modified mode [ 'deps/mpg123/src/genre.c', 438, 420 ]
179 silly gunzTarPerm extractEntry deps/mpg123/src/genre.h
180 silly gunzTarPerm modified mode [ 'deps/mpg123/src/genre.h', 438, 420 ]
181 silly gunzTarPerm extractEntry deps/mpg123/src/getlopt.c
182 silly gunzTarPerm modified mode [ 'deps/mpg123/src/getlopt.c', 438, 420 ]
183 silly gunzTarPerm extractEntry deps/mpg123/src/getlopt.h
184 silly gunzTarPerm modified mode [ 'deps/mpg123/src/getlopt.h', 438, 420 ]
185 silly gunzTarPerm extractEntry deps/mpg123/src/httpget.c
186 silly gunzTarPerm modified mode [ 'deps/mpg123/src/httpget.c', 438, 420 ]
187 silly gunzTarPerm extractEntry deps/mpg123/src/httpget.h
188 silly gunzTarPerm modified mode [ 'deps/mpg123/src/httpget.h', 438, 420 ]
189 silly gunzTarPerm extractEntry deps/mpg123/src/legacy_module.c
190 silly gunzTarPerm modified mode [ 'deps/mpg123/src/legacy_module.c', 438, 420 ]
191 silly gunzTarPerm extractEntry deps/mpg123/src/libmpg123/mpg123lib_intern.h
192 silly gunzTarPerm modified mode [ 'deps/mpg123/src/libmpg123/mpg123lib_intern.h', 438, 420 ]
193 silly gunzTarPerm extractEntry deps/mpg123/src/libmpg123/compat.c
194 silly gunzTarPerm modified mode [ 'deps/mpg123/src/libmpg123/compat.c', 438, 420 ]
195 silly gunzTarPerm extractEntry deps/mpg123/src/libmpg123/dct36_3dnow.S
196 silly gunzTarPerm modified mode [ 'deps/mpg123/src/libmpg123/dct36_3dnow.S', 438, 420 ]
197 silly gunzTarPerm extractEntry deps/mpg123/src/libmpg123/dct36_3dnowext.S
198 silly gunzTarPerm modified mode [ 'deps/mpg123/src/libmpg123/dct36_3dnowext.S', 438, 420 ]
199 silly gunzTarPerm extractEntry deps/mpg123/src/libmpg123/dct64.c
200 silly gunzTarPerm modified mode [ 'deps/mpg123/src/libmpg123/dct64.c', 438, 420 ]
201 silly gunzTarPerm extractEntry deps/mpg123/src/libmpg123/dct64_3dnow.S
202 silly gunzTarPerm modified mode [ 'deps/mpg123/src/libmpg123/dct64_3dnow.S', 438, 420 ]
203 silly gunzTarPerm extractEntry deps/mpg123/src/libmpg123/dct64_3dnowext.S
204 silly gunzTarPerm modified mode [ 'deps/mpg123/src/libmpg123/dct64_3dnowext.S', 438, 420 ]
205 silly gunzTarPerm extractEntry deps/mpg123/src/libmpg123/dct64_altivec.c
206 silly gunzTarPerm modified mode [ 'deps/mpg123/src/libmpg123/dct64_altivec.c', 438, 420 ]
207 silly gunzTarPerm extractEntry deps/mpg123/src/libmpg123/dct64_i386.c
208 silly gunzTarPerm modified mode [ 'deps/mpg123/src/libmpg123/dct64_i386.c', 438, 420 ]
209 silly gunzTarPerm extractEntry deps/mpg123/src/libmpg123/dct64_i486.c
210 silly gunzTarPerm modified mode [ 'deps/mpg123/src/libmpg123/dct64_i486.c', 438, 420 ]
211 silly gunzTarPerm extractEntry deps/mpg123/src/libmpg123/dct64_mmx.S
212 silly gunzTarPerm modified mode [ 'deps/mpg123/src/libmpg123/dct64_mmx.S', 438, 420 ]
213 silly gunzTarPerm extractEntry deps/mpg123/src/libmpg123/dct64_neon.S
214 silly gunzTarPerm modified mode [ 'deps/mpg123/src/libmpg123/dct64_neon.S', 438, 420 ]
215 silly gunzTarPerm extractEntry deps/mpg123/src/libmpg123/dct64_neon_float.S
216 silly gunzTarPerm modified mode [ 'deps/mpg123/src/libmpg123/dct64_neon_float.S', 438, 420 ]
217 silly gunzTarPerm extractEntry deps/mpg123/src/libmpg123/dct64_sse.S
218 silly gunzTarPerm modified mode [ 'deps/mpg123/src/libmpg123/dct64_sse.S', 438, 420 ]
219 silly gunzTarPerm extractEntry deps/mpg123/src/libmpg123/dct64_sse_float.S
220 silly gunzTarPerm modified mode [ 'deps/mpg123/src/libmpg123/dct64_sse_float.S', 438, 420 ]
221 silly gunzTarPerm extractEntry deps/mpg123/src/libmpg123/dct64_x86_64.S
222 silly gunzTarPerm modified mode [ 'deps/mpg123/src/libmpg123/dct64_x86_64.S', 438, 420 ]
223 silly gunzTarPerm extractEntry deps/mpg123/src/libmpg123/dct64_x86_64_float.S
224 silly gunzTarPerm modified mode [ 'deps/mpg123/src/libmpg123/dct64_x86_64_float.S', 438, 420 ]
225 silly gunzTarPerm extractEntry deps/mpg123/src/libmpg123/debug.h
226 silly gunzTarPerm modified mode [ 'deps/mpg123/src/libmpg123/debug.h', 438, 420 ]
227 silly gunzTarPerm extractEntry deps/mpg123/src/libmpg123/decode.h
228 silly gunzTarPerm modified mode [ 'deps/mpg123/src/libmpg123/decode.h', 438, 420 ]
229 silly gunzTarPerm extractEntry deps/mpg123/src/libmpg123/dither.c
230 silly gunzTarPerm modified mode [ 'deps/mpg123/src/libmpg123/dither.c', 438, 420 ]
231 silly gunzTarPerm extractEntry deps/mpg123/src/libmpg123/dither.h
232 silly gunzTarPerm modified mode [ 'deps/mpg123/src/libmpg123/dither.h', 438, 420 ]
233 silly gunzTarPerm extractEntry deps/mpg123/src/libmpg123/equalizer.c
234 silly gunzTarPerm modified mode [ 'deps/mpg123/src/libmpg123/equalizer.c', 438, 420 ]
235 silly gunzTarPerm extractEntry deps/mpg123/src/libmpg123/equalizer_3dnow.S
236 silly gunzTarPerm modified mode [ 'deps/mpg123/src/libmpg123/equalizer_3dnow.S', 438, 420 ]
237 silly gunzTarPerm extractEntry deps/mpg123/src/libmpg123/feature.c
238 silly gunzTarPerm modified mode [ 'deps/mpg123/src/libmpg123/feature.c', 438, 420 ]
239 silly gunzTarPerm extractEntry deps/mpg123/src/libmpg123/format.c
240 silly gunzTarPerm modified mode [ 'deps/mpg123/src/libmpg123/format.c', 438, 420 ]
241 silly gunzTarPerm extractEntry deps/mpg123/src/libmpg123/frame.c
242 silly gunzTarPerm modified mode [ 'deps/mpg123/src/libmpg123/frame.c', 438, 420 ]
243 silly gunzTarPerm extractEntry deps/mpg123/src/libmpg123/frame.h
244 silly gunzTarPerm modified mode [ 'deps/mpg123/src/libmpg123/frame.h', 438, 420 ]
245 silly gunzTarPerm extractEntry deps/mpg123/src/libmpg123/gapless.h
246 silly gunzTarPerm modified mode [ 'deps/mpg123/src/libmpg123/gapless.h', 438, 420 ]
247 silly gunzTarPerm extractEntry deps/mpg123/src/libmpg123/getbits.h
248 silly gunzTarPerm modified mode [ 'deps/mpg123/src/libmpg123/getbits.h', 438, 420 ]
249 silly gunzTarPerm extractEntry deps/mpg123/src/libmpg123/getcpuflags.h
250 silly gunzTarPerm modified mode [ 'deps/mpg123/src/libmpg123/getcpuflags.h', 438, 420 ]
251 silly gunzTarPerm extractEntry deps/mpg123/src/libmpg123/getcpuflags.S
252 silly gunzTarPerm modified mode [ 'deps/mpg123/src/libmpg123/getcpuflags.S', 438, 420 ]
253 silly gunzTarPerm extractEntry deps/mpg123/src/libmpg123/huffman.h
254 silly gunzTarPerm modified mode [ 'deps/mpg123/src/libmpg123/huffman.h', 438, 420 ]
255 silly gunzTarPerm extractEntry deps/mpg123/src/libmpg123/icy.c
256 silly gunzTarPerm modified mode [ 'deps/mpg123/src/libmpg123/icy.c', 438, 420 ]
257 silly gunzTarPerm extractEntry deps/mpg123/src/libmpg123/icy.h
258 silly gunzTarPerm modified mode [ 'deps/mpg123/src/libmpg123/icy.h', 438, 420 ]
259 silly gunzTarPerm extractEntry deps/mpg123/src/libmpg123/icy2utf8.c
260 silly gunzTarPerm modified mode [ 'deps/mpg123/src/libmpg123/icy2utf8.c', 438, 420 ]
261 silly gunzTarPerm extractEntry deps/mpg123/src/libmpg123/icy2utf8.h
262 silly gunzTarPerm modified mode [ 'deps/mpg123/src/libmpg123/icy2utf8.h', 438, 420 ]
263 silly gunzTarPerm extractEntry deps/mpg123/src/libmpg123/id3.c
264 silly gunzTarPerm modified mode [ 'deps/mpg123/src/libmpg123/id3.c', 438, 420 ]
265 silly gunzTarPerm extractEntry deps/mpg123/src/libmpg123/id3.h
266 silly gunzTarPerm modified mode [ 'deps/mpg123/src/libmpg123/id3.h', 438, 420 ]
267 silly gunzTarPerm extractEntry deps/mpg123/src/libmpg123/index.c
268 silly gunzTarPerm modified mode [ 'deps/mpg123/src/libmpg123/index.c', 438, 420 ]
269 silly gunzTarPerm extractEntry deps/mpg123/src/libmpg123/index.h
270 silly gunzTarPerm modified mode [ 'deps/mpg123/src/libmpg123/index.h', 438, 420 ]
271 silly gunzTarPerm extractEntry deps/mpg123/src/libmpg123/intsym.h
272 silly gunzTarPerm modified mode [ 'deps/mpg123/src/libmpg123/intsym.h', 438, 420 ]
273 silly gunzTarPerm extractEntry deps/mpg123/src/libmpg123/l12_integer_tables.h
274 silly gunzTarPerm modified mode [ 'deps/mpg123/src/libmpg123/l12_integer_tables.h', 438, 420 ]
275 silly gunzTarPerm extractEntry deps/mpg123/src/libmpg123/l2tables.h
276 silly gunzTarPerm modified mode [ 'deps/mpg123/src/libmpg123/l2tables.h', 438, 420 ]
277 silly gunzTarPerm extractEntry deps/mpg123/src/libmpg123/l3_integer_tables.h
278 silly gunzTarPerm modified mode [ 'deps/mpg123/src/libmpg123/l3_integer_tables.h', 438, 420 ]
279 silly gunzTarPerm extractEntry deps/mpg123/src/libmpg123/layer1.c
280 silly gunzTarPerm modified mode [ 'deps/mpg123/src/libmpg123/layer1.c', 438, 420 ]
281 silly gunzTarPerm extractEntry deps/mpg123/src/libmpg123/layer2.c
282 silly gunzTarPerm modified mode [ 'deps/mpg123/src/libmpg123/layer2.c', 438, 420 ]
283 silly gunzTarPerm extractEntry deps/mpg123/src/libmpg123/layer3.c
284 silly gunzTarPerm modified mode [ 'deps/mpg123/src/libmpg123/layer3.c', 438, 420 ]
285 silly gunzTarPerm extractEntry deps/mpg123/src/libmpg123/lfs_alias.c
286 silly gunzTarPerm modified mode [ 'deps/mpg123/src/libmpg123/lfs_alias.c', 438, 420 ]
287 silly gunzTarPerm extractEntry deps/mpg123/src/libmpg123/lfs_wrap.c
288 silly gunzTarPerm modified mode [ 'deps/mpg123/src/libmpg123/lfs_wrap.c', 438, 420 ]
289 silly gunzTarPerm extractEntry deps/mpg123/src/libmpg123/libmpg123.c
290 silly gunzTarPerm modified mode [ 'deps/mpg123/src/libmpg123/libmpg123.c', 438, 420 ]
291 silly gunzTarPerm extractEntry deps/mpg123/src/libmpg123/Makefile.am
292 silly gunzTarPerm modified mode [ 'deps/mpg123/src/libmpg123/Makefile.am', 438, 420 ]
293 silly gunzTarPerm extractEntry deps/mpg123/src/libmpg123/Makefile.in
294 silly gunzTarPerm modified mode [ 'deps/mpg123/src/libmpg123/Makefile.in', 438, 420 ]
295 silly gunzTarPerm extractEntry deps/mpg123/src/libmpg123/mangle.h
296 silly gunzTarPerm modified mode [ 'deps/mpg123/src/libmpg123/mangle.h', 438, 420 ]
297 silly gunzTarPerm extractEntry deps/mpg123/src/libmpg123/mpeghead.h
298 silly gunzTarPerm modified mode [ 'deps/mpg123/src/libmpg123/mpeghead.h', 438, 420 ]
299 silly gunzTarPerm extractEntry deps/mpg123/src/libmpg123/mpg123.h.in
300 silly gunzTarPerm modified mode [ 'deps/mpg123/src/libmpg123/mpg123.h.in', 438, 420 ]
301 silly gunzTarPerm extractEntry deps/mpg123/src/libmpg123/compat.h
302 silly gunzTarPerm modified mode [ 'deps/mpg123/src/libmpg123/compat.h', 438, 420 ]
303 silly gunzTarPerm extractEntry deps/mpg123/src/libmpg123/ntom.c
304 silly gunzTarPerm modified mode [ 'deps/mpg123/src/libmpg123/ntom.c', 438, 420 ]
305 silly gunzTarPerm extractEntry deps/mpg123/src/libmpg123/optimize.c
306 silly gunzTarPerm modified mode [ 'deps/mpg123/src/libmpg123/optimize.c', 438, 420 ]
307 silly gunzTarPerm extractEntry deps/mpg123/src/libmpg123/optimize.h
308 silly gunzTarPerm modified mode [ 'deps/mpg123/src/libmpg123/optimize.h', 438, 420 ]
309 silly gunzTarPerm extractEntry deps/mpg123/src/libmpg123/parse.c
310 silly gunzTarPerm modified mode [ 'deps/mpg123/src/libmpg123/parse.c', 438, 420 ]
311 silly gunzTarPerm extractEntry deps/mpg123/src/libmpg123/parse.h
312 silly gunzTarPerm modified mode [ 'deps/mpg123/src/libmpg123/parse.h', 438, 420 ]
313 silly gunzTarPerm extractEntry deps/mpg123/src/libmpg123/reader.h
314 silly gunzTarPerm modified mode [ 'deps/mpg123/src/libmpg123/reader.h', 438, 420 ]
315 silly gunzTarPerm extractEntry deps/mpg123/src/libmpg123/readers.c
316 silly gunzTarPerm modified mode [ 'deps/mpg123/src/libmpg123/readers.c', 438, 420 ]
317 silly gunzTarPerm extractEntry deps/mpg123/src/libmpg123/sample.h
318 silly gunzTarPerm modified mode [ 'deps/mpg123/src/libmpg123/sample.h', 438, 420 ]
319 silly gunzTarPerm extractEntry deps/mpg123/src/libmpg123/stringbuf.c
320 silly gunzTarPerm modified mode [ 'deps/mpg123/src/libmpg123/stringbuf.c', 438, 420 ]
321 silly gunzTarPerm extractEntry deps/mpg123/src/libmpg123/synth.c
322 silly gunzTarPerm modified mode [ 'deps/mpg123/src/libmpg123/synth.c', 438, 420 ]
323 silly gunzTarPerm extractEntry deps/mpg123/src/libmpg123/synth.h
324 silly gunzTarPerm modified mode [ 'deps/mpg123/src/libmpg123/synth.h', 438, 420 ]
325 silly gunzTarPerm extractEntry deps/mpg123/src/libmpg123/synths.h
326 silly gunzTarPerm modified mode [ 'deps/mpg123/src/libmpg123/synths.h', 438, 420 ]
327 silly gunzTarPerm extractEntry deps/mpg123/src/libmpg123/synth_3dnow.S
328 silly gunzTarPerm modified mode [ 'deps/mpg123/src/libmpg123/synth_3dnow.S', 438, 420 ]
329 silly gunzTarPerm extractEntry deps/mpg123/src/libmpg123/synth_3dnowext.S
330 silly gunzTarPerm modified mode [ 'deps/mpg123/src/libmpg123/synth_3dnowext.S', 438, 420 ]
331 silly gunzTarPerm extractEntry deps/mpg123/src/libmpg123/synth_8bit.c
332 silly gunzTarPerm modified mode [ 'deps/mpg123/src/libmpg123/synth_8bit.c', 438, 420 ]
333 silly gunzTarPerm extractEntry deps/mpg123/src/libmpg123/synth_8bit.h
334 silly gunzTarPerm modified mode [ 'deps/mpg123/src/libmpg123/synth_8bit.h', 438, 420 ]
335 silly gunzTarPerm extractEntry deps/mpg123/src/libmpg123/synth_altivec.c
336 silly gunzTarPerm modified mode [ 'deps/mpg123/src/libmpg123/synth_altivec.c', 438, 420 ]
337 silly gunzTarPerm extractEntry deps/mpg123/src/libmpg123/synth_arm.S
338 silly gunzTarPerm modified mode [ 'deps/mpg123/src/libmpg123/synth_arm.S', 438, 420 ]
339 silly gunzTarPerm extractEntry deps/mpg123/src/libmpg123/synth_arm_accurate.S
340 silly gunzTarPerm modified mode [ 'deps/mpg123/src/libmpg123/synth_arm_accurate.S', 438, 420 ]
341 silly gunzTarPerm extractEntry deps/mpg123/src/libmpg123/synth_i486.c
342 silly gunzTarPerm modified mode [ 'deps/mpg123/src/libmpg123/synth_i486.c', 438, 420 ]
343 silly gunzTarPerm extractEntry deps/mpg123/src/libmpg123/synth_i586.S
344 silly gunzTarPerm modified mode [ 'deps/mpg123/src/libmpg123/synth_i586.S', 438, 420 ]
345 silly gunzTarPerm extractEntry deps/mpg123/src/libmpg123/synth_i586_dither.S
346 silly gunzTarPerm modified mode [ 'deps/mpg123/src/libmpg123/synth_i586_dither.S', 438, 420 ]
347 silly gunzTarPerm extractEntry deps/mpg123/src/libmpg123/synth_mmx.S
348 silly gunzTarPerm modified mode [ 'deps/mpg123/src/libmpg123/synth_mmx.S', 438, 420 ]
349 silly gunzTarPerm extractEntry deps/mpg123/src/libmpg123/synth_mono.h
350 silly gunzTarPerm modified mode [ 'deps/mpg123/src/libmpg123/synth_mono.h', 438, 420 ]
351 silly gunzTarPerm extractEntry deps/mpg123/src/libmpg123/synth_neon.S
352 silly gunzTarPerm modified mode [ 'deps/mpg123/src/libmpg123/synth_neon.S', 438, 420 ]
353 silly gunzTarPerm extractEntry deps/mpg123/src/libmpg123/synth_neon_accurate.S
354 silly gunzTarPerm modified mode [ 'deps/mpg123/src/libmpg123/synth_neon_accurate.S', 438, 420 ]
355 silly gunzTarPerm extractEntry deps/mpg123/src/libmpg123/synth_neon_float.S
356 silly gunzTarPerm modified mode [ 'deps/mpg123/src/libmpg123/synth_neon_float.S', 438, 420 ]
357 silly gunzTarPerm extractEntry deps/mpg123/src/libmpg123/synth_neon_s32.S
358 silly gunzTarPerm modified mode [ 'deps/mpg123/src/libmpg123/synth_neon_s32.S', 438, 420 ]
359 silly gunzTarPerm extractEntry deps/mpg123/src/libmpg123/synth_ntom.h
360 silly gunzTarPerm modified mode [ 'deps/mpg123/src/libmpg123/synth_ntom.h', 438, 420 ]
361 silly gunzTarPerm extractEntry deps/mpg123/src/libmpg123/synth_real.c
362 silly gunzTarPerm modified mode [ 'deps/mpg123/src/libmpg123/synth_real.c', 438, 420 ]
363 silly gunzTarPerm extractEntry deps/mpg123/src/libmpg123/synth_s32.c
364 silly gunzTarPerm modified mode [ 'deps/mpg123/src/libmpg123/synth_s32.c', 438, 420 ]
365 silly gunzTarPerm extractEntry deps/mpg123/src/libmpg123/synth_sse.S
366 silly gunzTarPerm modified mode [ 'deps/mpg123/src/libmpg123/synth_sse.S', 438, 420 ]
367 silly gunzTarPerm extractEntry deps/mpg123/src/libmpg123/synth_sse3d.h
368 silly gunzTarPerm modified mode [ 'deps/mpg123/src/libmpg123/synth_sse3d.h', 438, 420 ]
369 silly gunzTarPerm extractEntry deps/mpg123/src/libmpg123/synth_sse_accurate.S
370 silly gunzTarPerm modified mode [ 'deps/mpg123/src/libmpg123/synth_sse_accurate.S', 438, 420 ]
371 silly gunzTarPerm extractEntry deps/mpg123/src/libmpg123/synth_sse_float.S
372 silly gunzTarPerm modified mode [ 'deps/mpg123/src/libmpg123/synth_sse_float.S', 438, 420 ]
373 silly gunzTarPerm extractEntry deps/mpg123/src/libmpg123/synth_sse_s32.S
374 silly gunzTarPerm modified mode [ 'deps/mpg123/src/libmpg123/synth_sse_s32.S', 438, 420 ]
375 silly gunzTarPerm extractEntry deps/mpg123/src/libmpg123/synth_stereo_neon.S
376 silly gunzTarPerm modified mode [ 'deps/mpg123/src/libmpg123/synth_stereo_neon.S', 438, 420 ]
377 silly gunzTarPerm extractEntry deps/mpg123/src/libmpg123/synth_stereo_neon_accurate.S
378 silly gunzTarPerm modified mode [ 'deps/mpg123/src/libmpg123/synth_stereo_neon_accurate.S',
378 silly gunzTarPerm   438,
378 silly gunzTarPerm   420 ]
379 silly gunzTarPerm extractEntry deps/mpg123/src/libmpg123/synth_stereo_neon_float.S
380 silly gunzTarPerm modified mode [ 'deps/mpg123/src/libmpg123/synth_stereo_neon_float.S',
380 silly gunzTarPerm   438,
380 silly gunzTarPerm   420 ]
381 silly gunzTarPerm extractEntry deps/mpg123/src/libmpg123/synth_stereo_neon_s32.S
382 silly gunzTarPerm modified mode [ 'deps/mpg123/src/libmpg123/synth_stereo_neon_s32.S', 438, 420 ]
383 silly gunzTarPerm extractEntry deps/mpg123/src/libmpg123/synth_stereo_sse_accurate.S
384 silly gunzTarPerm modified mode [ 'deps/mpg123/src/libmpg123/synth_stereo_sse_accurate.S',
384 silly gunzTarPerm   438,
384 silly gunzTarPerm   420 ]
385 silly gunzTarPerm extractEntry deps/mpg123/src/libmpg123/synth_stereo_sse_float.S
386 silly gunzTarPerm modified mode [ 'deps/mpg123/src/libmpg123/synth_stereo_sse_float.S',
386 silly gunzTarPerm   438,
386 silly gunzTarPerm   420 ]
387 silly gunzTarPerm extractEntry deps/mpg123/src/libmpg123/synth_stereo_sse_s32.S
388 silly gunzTarPerm modified mode [ 'deps/mpg123/src/libmpg123/synth_stereo_sse_s32.S', 438, 420 ]
389 silly gunzTarPerm extractEntry deps/mpg123/src/libmpg123/synth_stereo_x86_64.S
390 silly gunzTarPerm modified mode [ 'deps/mpg123/src/libmpg123/synth_stereo_x86_64.S', 438, 420 ]
391 silly gunzTarPerm extractEntry deps/mpg123/src/libmpg123/synth_stereo_x86_64_accurate.S
392 silly gunzTarPerm modified mode [ 'deps/mpg123/src/libmpg123/synth_stereo_x86_64_accurate.S',
392 silly gunzTarPerm   438,
392 silly gunzTarPerm   420 ]
393 silly gunzTarPerm extractEntry deps/mpg123/src/libmpg123/synth_stereo_x86_64_float.S
394 silly gunzTarPerm modified mode [ 'deps/mpg123/src/libmpg123/synth_stereo_x86_64_float.S',
394 silly gunzTarPerm   438,
394 silly gunzTarPerm   420 ]
395 silly gunzTarPerm extractEntry deps/mpg123/src/libmpg123/synth_stereo_x86_64_s32.S
396 silly gunzTarPerm modified mode [ 'deps/mpg123/src/libmpg123/synth_stereo_x86_64_s32.S',
396 silly gunzTarPerm   438,
396 silly gunzTarPerm   420 ]
397 silly gunzTarPerm extractEntry deps/mpg123/src/libmpg123/synth_x86_64.S
398 silly gunzTarPerm modified mode [ 'deps/mpg123/src/libmpg123/synth_x86_64.S', 438, 420 ]
399 silly gunzTarPerm extractEntry deps/mpg123/src/libmpg123/synth_x86_64_accurate.S
400 silly gunzTarPerm modified mode [ 'deps/mpg123/src/libmpg123/synth_x86_64_accurate.S', 438, 420 ]
401 silly gunzTarPerm extractEntry deps/mpg123/src/libmpg123/synth_x86_64_float.S
402 silly gunzTarPerm modified mode [ 'deps/mpg123/src/libmpg123/synth_x86_64_float.S', 438, 420 ]
403 silly gunzTarPerm extractEntry deps/mpg123/src/libmpg123/synth_x86_64_s32.S
404 silly gunzTarPerm modified mode [ 'deps/mpg123/src/libmpg123/synth_x86_64_s32.S', 438, 420 ]
405 silly gunzTarPerm extractEntry deps/mpg123/src/libmpg123/tabinit.c
406 silly gunzTarPerm modified mode [ 'deps/mpg123/src/libmpg123/tabinit.c', 438, 420 ]
407 silly gunzTarPerm extractEntry deps/mpg123/src/libmpg123/tabinit_mmx.S
408 silly gunzTarPerm modified mode [ 'deps/mpg123/src/libmpg123/tabinit_mmx.S', 438, 420 ]
409 silly gunzTarPerm extractEntry deps/mpg123/src/libmpg123/testcpu.c
410 silly gunzTarPerm modified mode [ 'deps/mpg123/src/libmpg123/testcpu.c', 438, 420 ]
411 silly gunzTarPerm extractEntry deps/mpg123/src/libmpg123/true.h
412 silly gunzTarPerm modified mode [ 'deps/mpg123/src/libmpg123/true.h', 438, 420 ]
413 silly gunzTarPerm extractEntry deps/mpg123/src/local.c
414 silly gunzTarPerm modified mode [ 'deps/mpg123/src/local.c', 438, 420 ]
415 silly gunzTarPerm extractEntry deps/mpg123/src/local.h
416 silly gunzTarPerm modified mode [ 'deps/mpg123/src/local.h', 438, 420 ]
417 silly gunzTarPerm extractEntry deps/mpg123/src/Makefile.am
418 silly gunzTarPerm modified mode [ 'deps/mpg123/src/Makefile.am', 438, 420 ]
419 silly gunzTarPerm extractEntry deps/mpg123/src/Makefile.in
420 silly gunzTarPerm modified mode [ 'deps/mpg123/src/Makefile.in', 438, 420 ]
421 silly gunzTarPerm extractEntry deps/mpg123/src/metaprint.c
422 silly gunzTarPerm modified mode [ 'deps/mpg123/src/metaprint.c', 438, 420 ]
423 silly gunzTarPerm extractEntry deps/mpg123/src/audio.h
424 silly gunzTarPerm modified mode [ 'deps/mpg123/src/audio.h', 438, 420 ]
425 silly gunzTarPerm extractEntry deps/mpg123/src/module.c
426 silly gunzTarPerm modified mode [ 'deps/mpg123/src/module.c', 438, 420 ]
427 silly gunzTarPerm extractEntry deps/mpg123/src/module.h
428 silly gunzTarPerm modified mode [ 'deps/mpg123/src/module.h', 438, 420 ]
429 silly gunzTarPerm extractEntry deps/mpg123/src/mpg123.c
430 silly gunzTarPerm modified mode [ 'deps/mpg123/src/mpg123.c', 438, 420 ]
431 silly gunzTarPerm extractEntry deps/mpg123/src/mpg123app.h
432 silly gunzTarPerm modified mode [ 'deps/mpg123/src/mpg123app.h', 438, 420 ]
433 silly gunzTarPerm extractEntry deps/mpg123/src/output/nas.c
434 silly gunzTarPerm modified mode [ 'deps/mpg123/src/output/nas.c', 438, 420 ]
435 silly gunzTarPerm extractEntry deps/mpg123/src/output/aix.c
436 silly gunzTarPerm modified mode [ 'deps/mpg123/src/output/aix.c', 438, 420 ]
437 silly gunzTarPerm extractEntry deps/mpg123/src/output/alsa.c
438 silly gunzTarPerm modified mode [ 'deps/mpg123/src/output/alsa.c', 438, 420 ]
439 silly gunzTarPerm extractEntry deps/mpg123/src/output/arts.c
440 silly gunzTarPerm modified mode [ 'deps/mpg123/src/output/arts.c', 438, 420 ]
441 silly gunzTarPerm extractEntry deps/mpg123/src/output/coreaudio.c
442 silly gunzTarPerm modified mode [ 'deps/mpg123/src/output/coreaudio.c', 438, 420 ]
443 silly gunzTarPerm extractEntry deps/mpg123/src/output/dummy.c
444 silly gunzTarPerm modified mode [ 'deps/mpg123/src/output/dummy.c', 438, 420 ]
445 silly gunzTarPerm extractEntry deps/mpg123/src/output/esd.c
446 silly gunzTarPerm modified mode [ 'deps/mpg123/src/output/esd.c', 438, 420 ]
447 silly gunzTarPerm extractEntry deps/mpg123/src/output/hp.c
448 silly gunzTarPerm modified mode [ 'deps/mpg123/src/output/hp.c', 438, 420 ]
449 silly gunzTarPerm extractEntry deps/mpg123/src/output/jack.c
450 silly gunzTarPerm modified mode [ 'deps/mpg123/src/output/jack.c', 438, 420 ]
451 silly gunzTarPerm extractEntry deps/mpg123/src/output/Makefile.am
452 silly gunzTarPerm modified mode [ 'deps/mpg123/src/output/Makefile.am', 438, 420 ]
453 silly gunzTarPerm extractEntry deps/mpg123/src/output/Makefile.in
454 silly gunzTarPerm modified mode [ 'deps/mpg123/src/output/Makefile.in', 438, 420 ]
455 silly gunzTarPerm extractEntry deps/mpg123/src/output/mint.c
456 silly gunzTarPerm modified mode [ 'deps/mpg123/src/output/mint.c', 438, 420 ]
457 silly gunzTarPerm extractEntry deps/mpg123/src/output/alib.c
458 silly gunzTarPerm modified mode [ 'deps/mpg123/src/output/alib.c', 438, 420 ]
459 silly gunzTarPerm extractEntry deps/mpg123/src/output/openal.c
460 silly gunzTarPerm modified mode [ 'deps/mpg123/src/output/openal.c', 438, 420 ]
461 silly gunzTarPerm extractEntry deps/mpg123/src/output/os2.c
462 silly gunzTarPerm modified mode [ 'deps/mpg123/src/output/os2.c', 438, 420 ]
463 silly gunzTarPerm extractEntry deps/mpg123/src/output/oss.c
464 silly gunzTarPerm modified mode [ 'deps/mpg123/src/output/oss.c', 438, 420 ]
465 silly gunzTarPerm extractEntry deps/mpg123/src/output/output.h
466 silly gunzTarPerm modified mode [ 'deps/mpg123/src/output/output.h', 438, 420 ]
467 silly gunzTarPerm extractEntry deps/mpg123/src/output/portaudio.c
468 silly gunzTarPerm modified mode [ 'deps/mpg123/src/output/portaudio.c', 438, 420 ]
469 silly gunzTarPerm extractEntry deps/mpg123/src/output/pulse.c
470 silly gunzTarPerm modified mode [ 'deps/mpg123/src/output/pulse.c', 438, 420 ]
471 silly gunzTarPerm extractEntry deps/mpg123/src/output/sdl.c
472 silly gunzTarPerm modified mode [ 'deps/mpg123/src/output/sdl.c', 438, 420 ]
473 silly gunzTarPerm extractEntry deps/mpg123/src/output/sgi.c
474 silly gunzTarPerm modified mode [ 'deps/mpg123/src/output/sgi.c', 438, 420 ]
475 silly gunzTarPerm extractEntry deps/mpg123/src/output/sndio.c
476 silly gunzTarPerm modified mode [ 'deps/mpg123/src/output/sndio.c', 438, 420 ]
477 silly gunzTarPerm extractEntry deps/mpg123/src/output/sun.c
478 silly gunzTarPerm modified mode [ 'deps/mpg123/src/output/sun.c', 438, 420 ]
479 silly gunzTarPerm extractEntry deps/mpg123/src/output/win32.c
480 silly gunzTarPerm modified mode [ 'deps/mpg123/src/output/win32.c', 438, 420 ]
481 silly gunzTarPerm extractEntry deps/mpg123/src/playlist.c
482 silly gunzTarPerm modified mode [ 'deps/mpg123/src/playlist.c', 438, 420 ]
483 silly gunzTarPerm extractEntry deps/mpg123/src/playlist.h
484 silly gunzTarPerm modified mode [ 'deps/mpg123/src/playlist.h', 438, 420 ]
485 silly gunzTarPerm extractEntry deps/mpg123/src/resolver.c
486 silly gunzTarPerm modified mode [ 'deps/mpg123/src/resolver.c', 438, 420 ]
487 silly gunzTarPerm extractEntry deps/mpg123/src/resolver.h
488 silly gunzTarPerm modified mode [ 'deps/mpg123/src/resolver.h', 438, 420 ]
489 silly gunzTarPerm extractEntry deps/mpg123/src/sfifo.c
490 silly gunzTarPerm modified mode [ 'deps/mpg123/src/sfifo.c', 438, 420 ]
491 silly gunzTarPerm extractEntry deps/mpg123/src/sfifo.h
492 silly gunzTarPerm modified mode [ 'deps/mpg123/src/sfifo.h', 438, 420 ]
493 silly gunzTarPerm extractEntry deps/mpg123/src/streamdump.c
494 silly gunzTarPerm modified mode [ 'deps/mpg123/src/streamdump.c', 438, 420 ]
495 silly gunzTarPerm extractEntry deps/mpg123/src/streamdump.h
496 silly gunzTarPerm modified mode [ 'deps/mpg123/src/streamdump.h', 438, 420 ]
497 silly gunzTarPerm extractEntry deps/mpg123/src/term.c
498 silly gunzTarPerm modified mode [ 'deps/mpg123/src/term.c', 438, 420 ]
499 silly gunzTarPerm extractEntry deps/mpg123/src/term.h
500 silly gunzTarPerm modified mode [ 'deps/mpg123/src/term.h', 438, 420 ]
501 silly gunzTarPerm extractEntry deps/mpg123/src/wav.c
502 silly gunzTarPerm modified mode [ 'deps/mpg123/src/wav.c', 438, 420 ]
503 silly gunzTarPerm extractEntry deps/mpg123/src/wavhead.h
504 silly gunzTarPerm modified mode [ 'deps/mpg123/src/wavhead.h', 438, 420 ]
505 silly gunzTarPerm extractEntry deps/mpg123/src/win32_net.c
506 silly gunzTarPerm modified mode [ 'deps/mpg123/src/win32_net.c', 438, 420 ]
507 silly gunzTarPerm extractEntry deps/mpg123/src/win32_support.c
508 silly gunzTarPerm modified mode [ 'deps/mpg123/src/win32_support.c', 438, 420 ]
509 silly gunzTarPerm extractEntry deps/mpg123/src/win32_support.h
510 silly gunzTarPerm modified mode [ 'deps/mpg123/src/win32_support.h', 438, 420 ]
511 silly gunzTarPerm extractEntry deps/mpg123/src/xfermem.c
512 silly gunzTarPerm modified mode [ 'deps/mpg123/src/xfermem.c', 438, 420 ]
513 silly gunzTarPerm extractEntry deps/mpg123/src/xfermem.h
514 silly gunzTarPerm modified mode [ 'deps/mpg123/src/xfermem.h', 438, 420 ]
515 silly gunzTarPerm extractEntry deps/mpg123/test.c
516 silly gunzTarPerm modified mode [ 'deps/mpg123/test.c', 438, 420 ]
517 silly gunzTarPerm extractEntry deps/mpg123/test_output.c
518 silly gunzTarPerm modified mode [ 'deps/mpg123/test_output.c', 438, 420 ]
519 silly gunzTarPerm extractEntry deps/mpg123/TODO
520 silly gunzTarPerm modified mode [ 'deps/mpg123/TODO', 438, 420 ]
521 silly gunzTarPerm extractEntry deps/mpg123/windows-builds.sh
522 silly gunzTarPerm modified mode [ 'deps/mpg123/windows-builds.sh', 438, 420 ]
523 silly gunzTarPerm extractEntry src/binding.cc
524 silly gunzTarPerm modified mode [ 'src/binding.cc', 438, 420 ]
525 silly gunzTarPerm extractEntry src/node_pointer.h
526 silly gunzTarPerm modified mode [ 'src/node_pointer.h', 438, 420 ]
527 silly gunzTarPerm extractEntry History.md
528 silly gunzTarPerm modified mode [ 'History.md', 438, 420 ]
529 verbose read json C:\Users\ovsleep\node_modules\speaker\package.json
530 silly lockFile 6ebc1760-ers-ovsleep-node-modules-speaker C:\Users\ovsleep\node_modules\speaker
531 silly lockFile 6ebc1760-ers-ovsleep-node-modules-speaker C:\Users\ovsleep\node_modules\speaker
532 silly lockFile 6a914f66--cache-speaker-0-0-9-package-tgz C:\Users\ovsleep\AppData\Roaming\npm-cache\speaker\0.0.9\package.tgz
533 silly lockFile 6a914f66--cache-speaker-0-0-9-package-tgz C:\Users\ovsleep\AppData\Roaming\npm-cache\speaker\0.0.9\package.tgz
534 info preinstall [email protected]
535 verbose from cache C:\Users\ovsleep\node_modules\speaker\package.json
536 verbose readDependencies using package.json deps
537 verbose from cache C:\Users\ovsleep\node_modules\speaker\package.json
538 verbose readDependencies using package.json deps
539 verbose cache add [ 'bindings@*', null ]
540 verbose cache add name=undefined spec="bindings@*" args=["bindings@*",null]
541 verbose parsed url { protocol: null,
541 verbose parsed url   slashes: null,
541 verbose parsed url   auth: null,
541 verbose parsed url   host: null,
541 verbose parsed url   port: null,
541 verbose parsed url   hostname: null,
541 verbose parsed url   hash: null,
541 verbose parsed url   search: null,
541 verbose parsed url   query: null,
541 verbose parsed url   pathname: 'bindings@*',
541 verbose parsed url   path: 'bindings@*',
541 verbose parsed url   href: 'bindings@*' }
542 verbose cache add name="bindings" spec="*" args=["bindings","*"]
543 verbose parsed url { protocol: null,
543 verbose parsed url   slashes: null,
543 verbose parsed url   auth: null,
543 verbose parsed url   host: null,
543 verbose parsed url   port: null,
543 verbose parsed url   hostname: null,
543 verbose parsed url   hash: null,
543 verbose parsed url   search: null,
543 verbose parsed url   query: null,
543 verbose parsed url   pathname: '*',
543 verbose parsed url   path: '*',
543 verbose parsed url   href: '*' }
544 verbose addNamed [ 'bindings', '*' ]
545 verbose addNamed [ null, '' ]
546 silly lockFile a3858fc2-bindings bindings@*
547 verbose lock bindings@* C:\Users\ovsleep\AppData\Roaming\npm-cache\a3858fc2-bindings.lock
548 verbose cache add [ 'debug@*', null ]
549 verbose cache add name=undefined spec="debug@*" args=["debug@*",null]
550 verbose parsed url { protocol: null,
550 verbose parsed url   slashes: null,
550 verbose parsed url   auth: null,
550 verbose parsed url   host: null,
550 verbose parsed url   port: null,
550 verbose parsed url   hostname: null,
550 verbose parsed url   hash: null,
550 verbose parsed url   search: null,
550 verbose parsed url   query: null,
550 verbose parsed url   pathname: 'debug@*',
550 verbose parsed url   path: 'debug@*',
550 verbose parsed url   href: 'debug@*' }
551 verbose cache add name="debug" spec="*" args=["debug","*"]
552 verbose parsed url { protocol: null,
552 verbose parsed url   slashes: null,
552 verbose parsed url   auth: null,
552 verbose parsed url   host: null,
552 verbose parsed url   port: null,
552 verbose parsed url   hostname: null,
552 verbose parsed url   hash: null,
552 verbose parsed url   search: null,
552 verbose parsed url   query: null,
552 verbose parsed url   pathname: '*',
552 verbose parsed url   path: '*',
552 verbose parsed url   href: '*' }
553 verbose addNamed [ 'debug', '*' ]
554 verbose addNamed [ null, '' ]
555 silly lockFile 3ac45eff-debug debug@*
556 verbose lock debug@* C:\Users\ovsleep\AppData\Roaming\npm-cache\3ac45eff-debug.lock
557 verbose cache add [ 'readable-stream@*', null ]
558 verbose cache add name=undefined spec="readable-stream@*" args=["readable-stream@*",null]
559 verbose parsed url { protocol: null,
559 verbose parsed url   slashes: null,
559 verbose parsed url   auth: null,
559 verbose parsed url   host: null,
559 verbose parsed url   port: null,
559 verbose parsed url   hostname: null,
559 verbose parsed url   hash: null,
559 verbose parsed url   search: null,
559 verbose parsed url   query: null,
559 verbose parsed url   pathname: 'readable-stream@*',
559 verbose parsed url   path: 'readable-stream@*',
559 verbose parsed url   href: 'readable-stream@*' }
560 verbose cache add name="readable-stream" spec="*" args=["readable-stream","*"]
561 verbose parsed url { protocol: null,
561 verbose parsed url   slashes: null,
561 verbose parsed url   auth: null,
561 verbose parsed url   host: null,
561 verbose parsed url   port: null,
561 verbose parsed url   hostname: null,
561 verbose parsed url   hash: null,
561 verbose parsed url   search: null,
561 verbose parsed url   query: null,
561 verbose parsed url   pathname: '*',
561 verbose parsed url   path: '*',
561 verbose parsed url   href: '*' }
562 verbose addNamed [ 'readable-stream', '*' ]
563 verbose addNamed [ null, '' ]
564 silly lockFile 86cde00a-readable-stream readable-stream@*
565 verbose lock readable-stream@* C:\Users\ovsleep\AppData\Roaming\npm-cache\86cde00a-readable-stream.lock
566 silly addNameRange { name: 'bindings', range: '', hasData: false }
567 silly addNameRange { name: 'debug', range: '', hasData: false }
568 silly addNameRange { name: 'readable-stream', range: '', hasData: false }
569 verbose url raw bindings
570 verbose url resolving [ 'https://registry.npmjs.org/', './bindings' ]
571 verbose url resolved https://registry.npmjs.org/bindings
572 info trying registry request attempt 1 at 00:39:04
573 verbose etag "4NYLBD9FONZAZA2PMGUSX6925"
574 http GET https://registry.npmjs.org/bindings
575 verbose url raw debug
576 verbose url resolving [ 'https://registry.npmjs.org/', './debug' ]
577 verbose url resolved https://registry.npmjs.org/debug
578 info trying registry request attempt 1 at 00:39:04
579 verbose etag "CMAEPV679STO9P6YSF2XK3DDG"
580 http GET https://registry.npmjs.org/debug
581 verbose url raw readable-stream
582 verbose url resolving [ 'https://registry.npmjs.org/', './readable-stream' ]
583 verbose url resolved https://registry.npmjs.org/readable-stream
584 info trying registry request attempt 1 at 00:39:04
585 verbose etag "7TQJUPMNPJI9QTBQFBCT4O2IE"
586 http GET https://registry.npmjs.org/readable-stream
587 http 304 https://registry.npmjs.org/bindings
588 silly registry.get cb [ 304,
588 silly registry.get   { server: 'CouchDB/1.2.1 (Erlang OTP/R15B03)',
588 silly registry.get     etag: '"4NYLBD9FONZAZA2PMGUSX6925"',
588 silly registry.get     date: 'Tue, 19 Mar 2013 03:39:06 GMT',
588 silly registry.get     'content-length': '0' } ]
589 verbose etag bindings from cache
590 http 304 https://registry.npmjs.org/debug
591 silly registry.get cb [ 304,
591 silly registry.get   { server: 'CouchDB/1.2.1 (Erlang OTP/R15B03)',
591 silly registry.get     etag: '"CMAEPV679STO9P6YSF2XK3DDG"',
591 silly registry.get     date: 'Tue, 19 Mar 2013 03:39:06 GMT',
591 silly registry.get     'content-length': '0' } ]
592 verbose etag debug from cache
593 http 304 https://registry.npmjs.org/readable-stream
594 silly registry.get cb [ 304,
594 silly registry.get   { server: 'CouchDB/1.2.1 (Erlang OTP/R15B03)',
594 silly registry.get     etag: '"7TQJUPMNPJI9QTBQFBCT4O2IE"',
594 silly registry.get     date: 'Tue, 19 Mar 2013 03:39:06 GMT',
594 silly registry.get     'content-length': '0' } ]
595 verbose etag readable-stream from cache
596 silly addNameRange number 2 { name: 'bindings', range: '', hasData: true }
597 silly addNameRange versions [ 'bindings',
597 silly addNameRange   [ '0.0.1',
597 silly addNameRange     '0.1.0',
597 silly addNameRange     '0.1.1',
597 silly addNameRange     '0.2.0',
597 silly addNameRange     '0.2.1',
597 silly addNameRange     '0.2.2',
597 silly addNameRange     '0.2.3',
597 silly addNameRange     '0.2.4',
597 silly addNameRange     '0.3.0',
597 silly addNameRange     '0.4.0',
597 silly addNameRange     '1.0.0',
597 silly addNameRange     '1.1.0' ] ]
598 verbose addNamed [ 'bindings', '1.1.0' ]
599 verbose addNamed [ '1.1.0', '1.1.0' ]
600 silly lockFile ff2d1960-bindings-1-1-0 [email protected]
601 verbose lock [email protected] C:\Users\ovsleep\AppData\Roaming\npm-cache\ff2d1960-bindings-1-1-0.lock
602 silly addNameRange number 2 { name: 'debug', range: '', hasData: true }
603 silly addNameRange versions [ 'debug',
603 silly addNameRange   [ '0.0.1',
603 silly addNameRange     '0.1.0',
603 silly addNameRange     '0.2.0',
603 silly addNameRange     '0.3.0',
603 silly addNameRange     '0.4.0',
603 silly addNameRange     '0.4.1',
603 silly addNameRange     '0.5.0',
603 silly addNameRange     '0.6.0',
603 silly addNameRange     '0.7.0',
603 silly addNameRange     '0.7.1',
603 silly addNameRange     '0.7.2' ] ]
604 verbose addNamed [ 'debug', '0.7.2' ]
605 verbose addNamed [ '0.7.2', '0.7.2' ]
606 silly lockFile 432e5064-debug-0-7-2 [email protected]
607 verbose lock [email protected] C:\Users\ovsleep\AppData\Roaming\npm-cache\432e5064-debug-0-7-2.lock
608 verbose read json C:\Users\ovsleep\AppData\Roaming\npm-cache\bindings\1.1.0\package\package.json
609 silly addNameRange number 2 { name: 'readable-stream', range: '', hasData: true }
610 silly addNameRange versions [ 'readable-stream',
610 silly addNameRange   [ '0.0.1',
610 silly addNameRange     '0.0.2',
610 silly addNameRange     '0.0.3',
610 silly addNameRange     '0.0.4',
610 silly addNameRange     '0.1.0',
610 silly addNameRange     '0.2.0',
610 silly addNameRange     '0.3.0',
610 silly addNameRange     '0.3.1',
610 silly addNameRange     '1.0.0',
610 silly addNameRange     '1.0.1',
610 silly addNameRange     '1.0.2' ] ]
611 verbose addNamed [ 'readable-stream', '1.0.2' ]
612 verbose addNamed [ '1.0.2', '1.0.2' ]
613 silly lockFile fe8d6774-readable-stream-1-0-2 [email protected]
614 verbose lock [email protected] C:\Users\ovsleep\AppData\Roaming\npm-cache\fe8d6774-readable-stream-1-0-2.lock
615 verbose read json C:\Users\ovsleep\AppData\Roaming\npm-cache\debug\0.7.2\package\package.json
616 verbose read json C:\Users\ovsleep\AppData\Roaming\npm-cache\readable-stream\1.0.2\package\package.json
617 silly lockFile ff2d1960-bindings-1-1-0 [email protected]
618 silly lockFile ff2d1960-bindings-1-1-0 [email protected]
619 silly lockFile 432e5064-debug-0-7-2 [email protected]
620 silly lockFile 432e5064-debug-0-7-2 [email protected]
621 silly lockFile a3858fc2-bindings bindings@*
622 silly lockFile a3858fc2-bindings bindings@*
623 silly lockFile fe8d6774-readable-stream-1-0-2 [email protected]
624 silly lockFile fe8d6774-readable-stream-1-0-2 [email protected]
625 silly lockFile 3ac45eff-debug debug@*
626 silly lockFile 3ac45eff-debug debug@*
627 silly lockFile 86cde00a-readable-stream readable-stream@*
628 silly lockFile 86cde00a-readable-stream readable-stream@*
629 silly resolved [ { name: 'bindings',
629 silly resolved     description: 'Helper module for loading your native module\'s .node file',
629 silly resolved     keywords: [ 'native', 'addon', 'bindings', 'gyp', 'waf', 'c', 'c++' ],
629 silly resolved     version: '1.1.0',
629 silly resolved     author:
629 silly resolved      { name: 'Nathan Rajlich',
629 silly resolved        email: '[email protected]',
629 silly resolved        url: 'http://tootallnate.net' },
629 silly resolved     repository:
629 silly resolved      { type: 'git',
629 silly resolved        url: 'git://github.com/TooTallNate/node-bindings.git' },
629 silly resolved     main: './bindings.js',
629 silly resolved     readme: 'node-bindings\n=============\n### Helper module for loading your native module\'s .node file\n\nThis is a helper module for authors of Node.js native addon modules.\nIt is basically the "swiss army knife" of `require()`ing your native module\'s\n`.node` file.\n\nThroughout the course of Node\'s native addon history, addons have ended up being\ncompiled in a variety of different places, depending on which build tool and which\nversion of node was used. To make matters worse, now the _gyp_ build tool can\nproduce either a _Release_ or _Debug_ build, each being built into different\nlocations.\n\nThis module checks _all_ the possible locations that a native addon would be built\nat, and returns the first one that loads successfully.\n\n\nInstallation\n------------\n\nInstall with `npm`:\n\n``` bash\n$ npm install bindings\n```\n\nOr add it to the `"dependencies"` section of your _package.json_ file.\n\n\nExample\n-------\n\n`require()`ing the proper bindings file for the current node version, platform\nand architecture is as simple as:\n\n``` js\nvar bindings = require(\'bindings\')(\'binding.node\')\n\n// Use your bindings defined in your C files\nbindings.your_c_function()\n```\n\n\nNice Error Output\n-----------------\n\nWhen the `.node` file could not be loaded, `node-bindings` throws an Error with\na nice error message telling you exactly what was tried. You can also check the\n`err.tries` Array property.\n\n```\nError: Could not load the bindings file. Tried:\n → /Users/nrajlich/ref/build/binding.node\n → /Users/nrajlich/ref/build/Debug/binding.node\n → /Users/nrajlich/ref/build/Release/binding.node\n → /Users/nrajlich/ref/out/Debug/binding.node\n → /Users/nrajlich/ref/Debug/binding.node\n → /Users/nrajlich/ref/out/Release/binding.node\n → /Users/nrajlich/ref/Release/binding.node\n → /Users/nrajlich/ref/build/default/binding.node\n → /Users/nrajlich/ref/compiled/0.8.2/darwin/x64/binding.node\n    at bindings (/Users/nrajlich/ref/node_modules/bindings/bindings.js:84:13)\n    at Object.<anonymous> (/Users/nrajlich/ref/lib/ref.js:5:47)\n    at Module._compile (module.js:449:26)\n    at Object.Module._extensions..js (module.js:467:10)\n    at Module.load (module.js:356:32)\n    at Function.Module._load (module.js:312:12)\n    ...\n```\n\n\nLicense\n-------\n\n(The MIT License)\n\nCopyright (c) 2012 Nathan Rajlich &lt;[email protected]&gt;\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n\'Software\'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \'AS IS\', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n',
629 silly resolved     readmeFilename: 'README.md',
629 silly resolved     _id: '[email protected]',
629 silly resolved     _from: 'bindings@*' },
629 silly resolved   { name: 'debug',
629 silly resolved     version: '0.7.2',
629 silly resolved     repository: { type: 'git', url: 'git://github.com/visionmedia/debug.git' },
629 silly resolved     description: 'small debugging utility',
629 silly resolved     keywords: [ 'debug', 'log', 'debugger' ],
629 silly resolved     author: { name: 'TJ Holowaychuk', email: '[email protected]' },
629 silly resolved     dependencies: {},
629 silly resolved     devDependencies: { mocha: '*' },
629 silly resolved     main: 'lib/debug.js',
629 silly resolved     browserify: 'debug.js',
629 silly resolved     engines: { node: '*' },
629 silly resolved     component: { scripts: [Object] },
629 silly resolved     readme: '\n# debug\n\n  tiny node.js debugging utility modelled after node core\'s debugging technique.\n\n## Installation\n\n```\n$ npm install debug\n```\n\n## Usage\n\n With `debug` you simply invoke the exported function to generate your debug function, passing it a name which will determine if a noop function is returned, or a decorated `console.error`, so all of the `console` format string goodies you\'re used to work fine. A unique color is selected per-function for visibility.\n \nExample _app.js_:\n\n```js\nvar debug = require(\'debug\')(\'http\')\n  , http = require(\'http\')\n  , name = \'My App\';\n\n// fake app\n\ndebug(\'booting %s\', name);\n\nhttp.createServer(function(req, res){\n  debug(req.method + \' \' + req.url);\n  res.end(\'hello\\n\');\n}).listen(3000, function(){\n  debug(\'listening\');\n});\n\n// fake worker of some kind\n\nrequire(\'./worker\');\n```\n\nExample _worker.js_:\n\n```js\nvar debug = require(\'debug\')(\'worker\');\n\nsetInterval(function(){\n  debug(\'doing some work\');\n}, 1000);\n```\n\n The __DEBUG__ environment variable is then used to enable these based on space or comma-delimited names. Here are some examples:\n\n  ![debug http and worker](http://f.cl.ly/items/18471z1H402O24072r1J/Screenshot.png)\n\n  ![debug worker](http://f.cl.ly/items/1X413v1a3M0d3C2c1E0i/Screenshot.png)\n\n## Millisecond diff\n\n  When actively developing an application it can be useful to see when the time spent between one `debug()` call and the next. Suppose for example you invoke `debug()` before requesting a resource, and after as well, the "+NNNms" will show you how much time was spent between calls.\n\n  ![](http://f.cl.ly/items/2i3h1d3t121M2Z1A3Q0N/Screenshot.png)\n\n  When stdout is not a TTY, `Date#toUTCString()` is used, making it more useful for logging the debug information as shown below:\n  \n  ![](http://f.cl.ly/items/112H3i0e0o0P0a2Q2r11/Screenshot.png)\n\n## Conventions\n\n If you\'re using this in one or more of your libraries, you _should_ use the name of your library so that developers may toggle debugging as desired without guessing names. If you have more than one debuggers you _should_ prefix them with your library name and use ":" to separate features. For example "bodyParser" from Connect would then be "connect:bodyParser". \n\n## Wildcards\n\n  The "*" character may be used as a wildcard. Suppose for example your library has debuggers named "connect:bodyParser", "connect:compress", "connect:session", instead of listing all three with `DEBUG=connect:bodyParser,connect.compress,connect:sess

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.