/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package com.frinika.audio.analysis;
//import rasmus.fft.FFT;
import rasmus.interpreter.sampled.util.FFT;
/**
*
* @author pjl
*/
public class FFTWorker {
private FFT fft;
private double[] hanning;
int fftsize;
private int nBin;
// private double[] fftOut;
float freqArray[];
double freq[];
private double Fs;
private boolean doHanning;
public FFTWorker(double Fs, boolean doHanning) {
this.doHanning = doHanning;
// this.Fs=Fs;
}
public float[] getFreqArray() {
return freqArray;
}
public int getSizeInBins() {
return nBin;
}
public void process(double[] input, double fftOut[]) {
if (doHanning) {
for (int i = 0; i < fftsize; i++) {
fftOut[i] = input[i] * hanning[i];
// fftOut[2 * i] = input[i] * hanning[i];
// fftOut[2 * i + 1] = 0.0;
}
}
fft.calcReal(fftOut, -1);
}
public void resize(int fftsize) {
this.fftsize = fftsize;
fft = new FFT(fftsize);
hanning = fft.wHanning();
nBin = fftsize / 2;
// fftOut = new double[fftsize * 2];
freqArray = new float[nBin];
freq = new double[nBin];
for (int i = 0; i < nBin; i++) {
freq[i] = (i * Fs / nBin);
freqArray[i] = (float) freq[i];
// System.out.println(" fftsize/chunkSIze = " + fftsize + "/"
// + chunksize);
}
}
public int getFFTSize() {
return fftsize;
}
}