Skip to content

Latest commit

 

History

History
133 lines (77 loc) · 4.32 KB

README.md

File metadata and controls

133 lines (77 loc) · 4.32 KB

#node-sound The best sound library for node.js

##Instalar

NOTA: Sólo funciona con node >= v0.3 y <= v0.5.0

You need node >= v0.3 and <= v0.5.0 to run this program

2011-29-10 -> It does NOT work with node 0.5.11

Node-sound es un módulo nativo para node.js. Nativo significa fundamentalmente dos cosas: que está escrito en C y que para poder usarlo hay que compilarlo primero.

Es muy fácil de hacer, suponiendo que ya tengas node.js instalado (y compilado y funcionando).

Lo primero es descargar el .zip o el .tar.gz dando al botón DOWNLOADS que hay ahí arriba a la derecha en esta misma página:

Después descomprimes ese fichero y creará una carpeta xk-node-sound-xxxx. Puedes borrar el -xxxx y dejarla en xk-node-sound a secas.

Por último, para compilar el módulo teclea:

cd xk-node-sound
node-waf configure clean build

En mi Mac eso produce algo así, donde lo más importante es la última línea: 'build' finished successfully:

Si todo ha ido bien, el módulo compilado se encontrará en xk-node-sound/build/default/sound.node

 

##Manual de instrucciones:

Require('sound')

Lo primero es cargar el módulo y asignarle un nombre (por ejemplo Sound) en la aplicación:

var Sound= require('sound');

Si node no es capaz de encontralo, tienes dos opciones.

La mejor opción: translada el fichero sound.node a la carpeta node_modules, o bien, especifica el path completo hasta la carpeta en la que se encuentra sound.node :

require('/absolute/path/to/sound.node's/folder/sound'); // ugh !

El módulo (que una vez require()d se llama Sound) tiene 4 métodos:

 

###Sound.create(buffer)

Crea un sonido a partir de un buffer.

var buffer= new Buffer(8192);       // Crear un buffer de 8kB

var i= buffer.length;
while (i--) buffer[i]= i%256;       // Rellenar el buffer con algo que "suene"

var sonido1= Sound.create(buffer);  // Crear el sonido.

sonido1.loop(5).volume(0.5).play(); // Y hacerlo sonar 5 veces seguidas con el volumen al 50%

 

###Sound.bufferifySync(path)

Lee un fichero de sonido, preferiblemente :-) y lo transforma en un buffer. Admite casi cualquier formato de sonido: .wav, .mp3, .aif, .m4a, etc.

var buffer = Sound.bufferifySync('unPingüinoEnMiAscensor.mp3');
var sonido2= Sound.create(buffer);

//o simplemente:

var sonido2= Sound.create( Sound.bufferifySync(path) );

//Y luego le damos a play:

sonido2.play();

 

###Sound.bufferify(path, callback)

Es la versión asíncrona de bufferifySync(), hace lo mismo pero (en una thread en paralelo) sin bloquear, y cuando ha acabado llama a callback y le pasa el buffer si no ha habido ningún error :

Sound.bufferify('/path/to/a/sound.file', cb)
function cb (error, buffer) {
  if (!error) {
    var sonido2= Sound.create(buffer);
  }
}

 

###Sound.stream(path)

Aún no va (2011-05-19). Mejor lo dejamos para otro momento.

var sonido3= Sound.stream(path)

 

###Los métodos de los sonidos:

Sound.create(buffer) devuelve un objeto sonido que tiene los siguentes métodos:

.play()             // evidente.
.play(callback)     // Igual, pero al acabar llama a callback
.loop(veces)        // repite el sonido en bucle *veces* veces
.volume( 0..1 )     // 0 es silencio, 1 es a tope, cualquier cosa intermedia vale también.
.pause()            // pues eso.

Cada vez que se llama a cualquiera de ellos, devuelve el objeto sonido otra vez, lo que permite encadenar las llamadas:

En vez de:

sonido.loop(5);
sonido.volume(1);
sonido.play();

Puedes hacerlo en una sola línea:

sonido.loop(5).volume(1).play();

Además, cada objeto sonido tiene estos otros 2 atributos:

 .id                // Un número de serie que se asigna secuencialmente.
 .data              // Una referencia al buffer con el que se ha creado.

En resumen:


© Jorge Chamorro Bieling, 2011. Ver la Licencia