FFT

thanks Michi

by Nayana Das

HTML

<script src="https://rawgit.com/corbanbrook/dsp.js/master/dsp.js"></script>
<script src="http://dygraphs.com/1.1.0/dygraph-combined-dev.js"></script>
<div id="graph"></div>

<button onclick="Oszi()">Start</button>
<button onclick="_FFT(signal,1024,1000)">Perform FFT</button>

JavaScript

var signal = [];
var sam = 1000;
var fre = 14;
var buf = 1024;

function Oszi(){
    signal = []
    for (i = 0 ; i<buf; i++){
        signal.push(3*Math.cos(Math.PI * 2 * i / sam * fre*2.7) +Math.sin(Math.PI * 2 * i / sam * fre));
    }
    plot(signal);
}

function _FFT(signal,bufferSize, samplingRate) {
    var fft = new FFT(bufferSize, samplingRate);
    fft.forward(signal);
    var spectrum = fft.spectrum;
    plotFFT(spectrum,samplingRate); 
}


function plotFFT(spectrum,samplingRate) {
    var data = [];
    var frequencyIncrement = parseFloat(samplingRate)/2/spectrum.length;
    for (var j = 0; j < spectrum.length; j++){
        data.push([frequencyIncrement*j,spectrum[j]]);    
    }
    new Dygraph(document.getElementById("graph"),data);
    console.log(JSON.stringify(data));
}


function plot(plotData) {
    var row = [];
    for (var j = 0; j < plotData.length; j++){
        row.push([j,plotData[j]]);    
    }
    console.log(row);
    
    new Dygraph(document.getElementById("graph"),row);  
    
    
}
Oszi()