#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:
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