Example #1
0
 responseStream.on('finish', function () {
   var startupSound = new Sound('response.wav');
   startupSound.play();
   startupSound.on('complete', function () {
     deferred.resolve();
   });
 });
    return new Promise((resolve, reject) => {
        var log = '[' + time + ']: ';

        //Unless music exist, promise will send reject and add new line in log file
        if (!fs.existsSync(path)) {
            log += 'ERROR -> ' + path + 'do not exist!\n';
            fs.appendFile('./moaning.door.logs.txt', log, err => {
                if (err) console.log(err);
            });

            reject(new Error(log));

        } else {

            var music = new sound(path);
            music.play();
            music.on('complete', () => {
                log += path + ' was played.\n';
                fs.appendFile('./moaning.door.logs.txt', log, err => {
                    if (err) console.log(err);
                });
                console.log('music played');
                resolve();
            });
        }
    });
Example #3
0
speechPipe.on('finish', function () {
  var startupSound = new Sound('./startup.wav');
  startupSound.play();
  startupSound.on('complete', function () {
    console.log('sound played');
    micInstance.start();
  });
});
		fs.writeFile(filename, data, "binary", function (err) {
	        if (err) {
	            if (err.code === "ENOENT") {
	                fs.ensureFile(filename, function (err) {
	                    if (err) { 
							msg.player = "error";
							node.send(msg);
							console.error("SpeakerPi (err): File "+ filename + " could not be created");
	                    	return;
	                    }
	                    else {
	                        fs.writeFile(filename, data, "binary", function (err) {
	                            if (err) { 
									msg.player = "error";
									node.send(msg);
									console.error("SpeakerPi (err): File " + filename + " could not be written to");
	                            	return;
	                            	}
	                        });
	                    }
	                });
	            }
	            else { 
					msg.player = "error";
					node.send(msg);

	            	console.error("SpeakerPi (err): error writing " + err);
	            	return;
	            }
	        } else {
	        	// console.log("SpeakerPi (log): File " + filename + " written.");
	        	
	        	// speak out the streamed file or the standard file 
	           	var speak = new Sound(filename);
	           	speak.play();
	           	
	           	speak.on("complete", function () {
	           		// console.log('SpeakerPi (log): Done with playback!');

	           		// delete file - if payload given and tempfile is not needed anymore
	           		if (tempfile) {
	           	   		fs.remove(filename, function(err) {
							if (err) return console.error("SpeakerPi (err): "+ err);
	                 		  
							// console.log("SpeakerPi (log): remove success!")
						});	           				           			
					}
					msg.player = "done";
					node.send(msg);
		  		 });
	        }
	    });
function speakOutputFile(outStream,optfile,node,msg) {
	var Sound = require("node-aplay");
	var fs = require("fs-extra");
	var os = require("os");
	var uuidv4 = require("uuid/v4");
	var tempfile = false;

	var uuid = uuidv4();

	var localdir = __dirname;
	var filename = "";

	var data = outStream;

	// define the standard sounds if set or temp filename
	if (optfile) {
		filename = optfile;
		tempfile = false;
		
		// speak out the streamed file or the standard file 
		var speak = new Sound(filename);
		speak.play();

		speak.on("complete", function () {
			msg.player = "done";
			node.send(msg);
			console.log("SpeakerPi (log): Done with playback!");
		});

	} else {
		// create temp file
		filename = localdir + "speak-" + uuid +".wav";              	
		tempfile = true;

		if ((typeof data === "object") && (!Buffer.isBuffer(data))) {
			data = JSON.stringify(data);
		}
		if (typeof data === "boolean") { data = data.toString(); }
		if (typeof data === "number") { data = data.toString(); }
		if (!Buffer.isBuffer(data)) { data += os.EOL; }

		data = new Buffer(data);

		// using "binary" not {encoding:"binary"} to be 0.8 compatible for a while
		fs.writeFile(filename, data, "binary", function (err) {
	        if (err) {
	            if (err.code === "ENOENT") {
	                fs.ensureFile(filename, function (err) {
	                    if (err) { 
							msg.player = "error";
							node.send(msg);
							console.error("SpeakerPi (err): File "+ filename + " could not be created");
	                    	return;
	                    }
	                    else {
	                        fs.writeFile(filename, data, "binary", function (err) {
	                            if (err) { 
									msg.player = "error";
									node.send(msg);
									console.error("SpeakerPi (err): File " + filename + " could not be written to");
	                            	return;
	                            	}
	                        });
	                    }
	                });
	            }
	            else { 
					msg.player = "error";
					node.send(msg);

	            	console.error("SpeakerPi (err): error writing " + err);
	            	return;
	            }
	        } else {
	        	// console.log("SpeakerPi (log): File " + filename + " written.");
	        	
	        	// speak out the streamed file or the standard file 
	           	var speak = new Sound(filename);
	           	speak.play();
	           	
	           	speak.on("complete", function () {
	           		// console.log('SpeakerPi (log): Done with playback!');

	           		// delete file - if payload given and tempfile is not needed anymore
	           		if (tempfile) {
	           	   		fs.remove(filename, function(err) {
							if (err) return console.error("SpeakerPi (err): "+ err);
	                 		  
							// console.log("SpeakerPi (log): remove success!")
						});	           				           			
					}
					msg.player = "done";
					node.send(msg);
		  		 });
	        }
	    });
	}
    
	return;
}