我正在尝试了解dsp.js。我在node-js中使用三个程序包,并在下面使用以下代码(生成声音,将其绘制并绘制为node.js中的图片)。在下面的代码中,如果我更改安培(正弦振荡器的幅度),声音的频率就会改变!我也不明白为什么降低频率时我也会出现混叠现象,因为声音应该是纯正弦波。例如,如果f = 10 Hz,Fs = 8000 Hz。 这是我用于测试目的的代码:
var dsp = require('digitalsignals');
const ChartjsNode = require('chartjs-node');
const Speaker = require('speaker');
const stream = require('stream');
var wave = [];
Fs=44100;
amp=1;
f=Fs/64;
buf=512;
var osc = new dsp.Oscillator(dsp.SINE, f, amp, buf, Fs);
osc.generate();
wave = osc.signal;
// Create the Speaker instance
const speaker = new Speaker({
channels: 1, // 1 channel
bitDepth: 16, // 16-bit samples
sampleRate: Fs
});
let bufferStream = new stream.PassThrough();
bufferStream.end(wave.toString());
bufferStream.pipe(speaker);
var xy=[];
var c=0;
wave.map(item=>{
xy.push({x:c/Fs,y:item});
c++;
});
var chartNode = new ChartjsNode(1024, 350);
data = {
datasets:[{
data:xy}]
};
var options = {
type: 'scatter',
data: data,
options: {
title:{
display: true,
text: "Wave"
},
}
};
chartNode.drawChart(options).then(()=>{
return chartNode.getImageStream('image/png');
}).then(streamResult => {
return chartNode.writeImageToFile('image/png', './testimage.png');
});
第一张图片显示的是放大器为1的时间。即使从图片看它是正弦波,但从扬声器听到的不是正弦波。在第二个图像放大器中,声音看起来像是100,但仍然是振幅为100的正弦波。