33 #include "numrecipes_fft.h"
43 "category",
"Analysis",
44 "description",
"FFT_numrec",
47 static FactoryRegistrator<ProcessingFactory, FFT_numrec>
reg =
metadata;
51 bool FFT_numrec::ConcreteConfigure(
const ProcessingConfig& c)
57 "accept non power of two buffers");
94 out.SetSpectralRange(in.GetSampleRate()/2);
98 inbuffer = in.GetBuffer().GetPtr();
102 for (
int i=0; i<
mSize; i++)
108 inbuffer = in.GetBuffer().GetPtr();
112 for (
int i=0; i<
mSize; i++)
120 inbuffer = in.GetBuffer().GetPtr();
124 for (
int i=0; i<
mSize; i++)
130 CLAM_ASSERT(
false,
"FFT_numrec: Do(): Inconsistent state");
138 void FFT_numrec::ToComplex(
Spectrum &out)
142 outbuffer = &out.GetComplexArray();
144 (*outbuffer)[0].SetImag(0);
146 (*outbuffer)[
mSize/2].SetImag(0);
148 for (
int i=1; i<
mSize/2; i++) {
150 (*outbuffer)[i].SetImag(-
fftbuffer[2*i+1]);