我一直在试图建立与树莓派3的node.js运行最新raspbian和弦WAV播放:和弦音频播放与树莓派的node.js
- 炮击了以aplay/mpg123的/其他程序 - 让我只玩一次单声
- 我试过的https://github.com/sebpiq/node-web-audio-api和https://github.com/TooTallNate/node-speaker(下面的示例代码),但音频质量相结合是非常低的,用了很多的扭曲
的有什么我在这里失踪?我知道我可以用另一种编程语言轻松地完成它(我可以用SDL编写C++代码,用pygame编写Python),但是问题是node.js是否可以使用:
这是我的当前web-音频API +节点喇叭代码:
var AudioContext = require('web-audio-api').AudioContext;
var Speaker = require('speaker');
var fs = require('fs');
var track1 = './tracks/1.wav';
var track2 = './tracks/1.wav';
var context = new AudioContext();
context.outStream = new Speaker({
channels: context.format.numberOfChannels,
bitDepth: context.format.bitDepth,
sampleRate: context.format.sampleRate
});
function play(audioBuffer) {
if (!audioBuffer) { return; }
var bufferSource = context.createBufferSource();
bufferSource.connect(context.destination);
bufferSource.buffer = audioBuffer;
bufferSource.loop = false;
bufferSource.start(0);
}
var audioData1 = fs.readFileSync(track1);
var audioData2 = fs.readFileSync(track2);
var audioBuffer1, audioBuffer2;
context.decodeAudioData(audioData1, function(audioBuffer) {
audioBuffer1 = audioBuffer;
if (audioBuffer1 && audioBuffer2) { playBoth(); }
});
context.decodeAudioData(audioData2, function(audioBuffer) {
audioBuffer2 = audioBuffer;
if (audioBuffer1 && audioBuffer2) { playBoth(); }
});
function playBoth() {
console.log('playing...');
play(audioBuffer1);
play(audioBuffer2);
}
音频已经是44.1kHz和16bit深度;它在C++和Python中运行得非常好,所以我认为我用JS代码做错了,或者node-speaker/node-web-audio-api实现有问题。我认为RAM和CPU不应该是一个问题,因为它在其他实现中起作用。 –