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(); }); } });
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; }