Ejemplo n.º 1
0
void ofxFftBasic::fft(float *input, float *output)
{ 
    int Half = bins/2;
    if(!ready) {
		ofLog(OF_LOG_ERROR, "setup() must be called before fft()\n");
		return;
	}

    /* processing variables*/
    float *in_real  = new float[bins];
    float *in_img   = new float[bins];
    float *out_real = new float[bins];
    float *out_img  = new float[bins];

	for (int i = 0; i < bins; i++) {
      in_real[i] = input[i];
	}

   	runWindow(in_real);
	RealFFT(bins, in_real, out_real, out_img);

   	float normalizer = 2. / windowSum;

	for(int i = 1; i < Half; i++) {
        output[i] = cartesianToAmplitude(out_real[i], out_img[i]) * normalizer;
	}

   delete [] in_real;
   delete [] in_img;
   delete [] out_real;
   delete [] out_img;
}
Ejemplo n.º 2
0
void ofxFft::updatePolar() {
	prepareCartesian();
	for(int i = 0; i < binSize; i++) {
		amplitude[i] = cartesianToAmplitude(real[i], imag[i]);
		phase[i] = cartesianToPhase(real[i], imag[i]);
	}
	polarUpdated = true;
	polarNormalized = cartesianNormalized;
}