使用Node.js创builddynamicaudio

问题

我的应用程序(莫尔斯电码翻译器)接受用户input并将文本转换为在路线后播放的声音。 但是,我目前的应用程序将只播放一个声音,即使多次调用该方法也不会更多。 它从节点进程播放,而不是在客户端。 我觉得这需要创build一些types的audiostream,然后将其作为响应的一部分发送给用户,但我需要一些关于如何做到这一点的指针。

编辑

看起来这不是特别容易,所以我猜测作弊的方法就是为每个声音创build一个audio文件,然后为那些给定的声音渲染一个audio元素。 我很想看到一个非常简单的例子,就是如何dynamic地通过Node.js制作audio。

结构体

在我的服务器中,我尝试调用短audio爆发的函数,但只引发一个声音。

Server.js

var express = require('express'), jade = require('jade'), bodyParser = require('body-parser'), morseCode = require('./lib/translateMorseCode'), playSound = require('./lib/playSound'), sfx = require('sfx'), app = express(); app.use(bodyParser.urlencoded({ extended: true })); app.set('view engine', 'jade'); app.set('views', './views'); app.get('/', function(req, res) { res.render('index'); }); app.get('/translation', function(req, res) { var untranslated = req.query.input_text var translated = morseCode.translate(untranslated); var sounds = playSound.convert(translated); for (var i = 0; i < sounds.length; i++) { sounds[i](); } res.render('translation', { output: translated }); }); 

playSound.js

 var sfx = require('sfx'); module.exports = { convert: function(translation) { var audioOutput = []; translation.split("").forEach(function(sound) { if (sound === ".") { audioOutput.push(function() { sfx.ping() }); } else if (sound === '-') { audioOutput.push(function() { sfx.blow() }); } else { audioOutput.push(function() { sfx.blow() }); } }); return audioOutput; } } 

我意识到这个解决scheme是不理想的,但我正在寻找创build一个简单版http://morsecode.scphillips.com/translator.html学习nodejs。