comparison dsp/chromagram/Chromagram.cpp @ 339:9c8ee77db9de

Tidy real-to-complex FFT -- forward and inverse have different arguments, so make them separate functions; document
author Chris Cannam <c.cannam@qmul.ac.uk>
date Wed, 02 Oct 2013 15:04:38 +0100
parents d5014ab8b0e5
children e4a57215ddee
comparison
equal deleted inserted replaced
338:35db1b24a848 339:9c8ee77db9de
137 for (int i = 0; i < m_frameSize; ++i) { 137 for (int i = 0; i < m_frameSize; ++i) {
138 m_windowbuf[i] = data[i]; 138 m_windowbuf[i] = data[i];
139 } 139 }
140 m_window->cut(m_windowbuf); 140 m_window->cut(m_windowbuf);
141 141
142 // FFT of current frame 142 m_FFT->forward(m_windowbuf, m_FFTRe, m_FFTIm);
143 m_FFT->process(false, m_windowbuf, m_FFTRe, m_FFTIm);
144 143
145 return process(m_FFTRe, m_FFTIm); 144 return process(m_FFTRe, m_FFTIm);
146 } 145 }
147 146
148 double* Chromagram::process( const double *real, const double *imag ) 147 double* Chromagram::process( const double *real, const double *imag )
156 // initialise chromadata to 0 155 // initialise chromadata to 0
157 for (unsigned i = 0; i < m_BPO; i++) m_chromadata[i] = 0; 156 for (unsigned i = 0; i < m_BPO; i++) m_chromadata[i] = 0;
158 157
159 double cmax = 0.0; 158 double cmax = 0.0;
160 double cval = 0; 159 double cval = 0;
161
162 // Calculate ConstantQ frame 160 // Calculate ConstantQ frame
163 m_ConstantQ->process( real, imag, m_CQRe, m_CQIm ); 161 m_ConstantQ->process( real, imag, m_CQRe, m_CQIm );
164 162
165 // add each octave of cq data into Chromagram 163 // add each octave of cq data into Chromagram
166 const unsigned octaves = (int)floor(double( m_uK/m_BPO))-1; 164 const unsigned octaves = (int)floor(double( m_uK/m_BPO))-1;