DSP.js-幅度改变频率等等

时间:2019-07-25 08:16:38

标签: javascript node.js signal-processing

我正在尝试了解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的正弦波。

enter image description here

enter image description here

0 个答案:

没有答案