summaryrefslogtreecommitdiff
path: root/libs/qm-dsp/dsp/chromagram/Chromagram.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'libs/qm-dsp/dsp/chromagram/Chromagram.cpp')
-rw-r--r--libs/qm-dsp/dsp/chromagram/Chromagram.cpp22
1 files changed, 10 insertions, 12 deletions
diff --git a/libs/qm-dsp/dsp/chromagram/Chromagram.cpp b/libs/qm-dsp/dsp/chromagram/Chromagram.cpp
index 5901082352..a8597a5ddd 100644
--- a/libs/qm-dsp/dsp/chromagram/Chromagram.cpp
+++ b/libs/qm-dsp/dsp/chromagram/Chromagram.cpp
@@ -27,14 +27,14 @@ Chromagram::Chromagram( ChromaConfig Config ) :
}
int Chromagram::initialise( ChromaConfig Config )
-{
+{
m_FMin = Config.min; // min freq
m_FMax = Config.max; // max freq
m_BPO = Config.BPO; // bins per octave
m_normalise = Config.normalise; // if frame normalisation is required
// No. of constant Q bins
- m_uK = ( unsigned int ) ceil( m_BPO * log(m_FMax/m_FMin)/log(2.0));
+ m_uK = ( unsigned int ) ceil( m_BPO * log(m_FMax/m_FMin)/log(2.0));
// Create array for chroma result
m_chromadata = new double[ m_BPO ];
@@ -49,7 +49,7 @@ int Chromagram::initialise( ChromaConfig Config )
ConstantQConfig.max = m_FMax;
ConstantQConfig.BPO = m_BPO;
ConstantQConfig.CQThresh = Config.CQThresh;
-
+
// Initialise ConstantQ operator
m_ConstantQ = new ConstantQ( ConstantQConfig );
@@ -57,7 +57,7 @@ int Chromagram::initialise( ChromaConfig Config )
m_frameSize = m_ConstantQ->getfftlength();
m_hopSize = m_ConstantQ->gethop();
- // Initialise FFT object
+ // Initialise FFT object
m_FFT = new FFTReal(m_frameSize);
m_FFTRe = new double[ m_frameSize ];
@@ -124,7 +124,7 @@ void Chromagram::unityNormalise(double *src)
double* Chromagram::process( const double *data )
{
if (!m_skGenerated) {
- // Generate CQ Kernel
+ // Generate CQ Kernel
m_ConstantQ->sparsekernel();
m_skGenerated = true;
}
@@ -139,8 +139,7 @@ double* Chromagram::process( const double *data )
}
m_window->cut(m_windowbuf);
- // FFT of current frame
- m_FFT->process(false, m_windowbuf, m_FFTRe, m_FFTIm);
+ m_FFT->forward(m_windowbuf, m_FFTRe, m_FFTIm);
return process(m_FFTRe, m_FFTIm);
}
@@ -148,7 +147,7 @@ double* Chromagram::process( const double *data )
double* Chromagram::process( const double *real, const double *imag )
{
if (!m_skGenerated) {
- // Generate CQ Kernel
+ // Generate CQ Kernel
m_ConstantQ->sparsekernel();
m_skGenerated = true;
}
@@ -158,16 +157,15 @@ double* Chromagram::process( const double *real, const double *imag )
double cmax = 0.0;
double cval = 0;
-
// Calculate ConstantQ frame
m_ConstantQ->process( real, imag, m_CQRe, m_CQIm );
-
+
// add each octave of cq data into Chromagram
const unsigned octaves = (int)floor(double( m_uK/m_BPO))-1;
- for (unsigned octave = 0; octave <= octaves; octave++)
+ for (unsigned octave = 0; octave <= octaves; octave++)
{
unsigned firstBin = octave*m_BPO;
- for (unsigned i = 0; i < m_BPO; i++)
+ for (unsigned i = 0; i < m_BPO; i++)
{
m_chromadata[i] += kabs( m_CQRe[ firstBin + i ], m_CQIm[ firstBin + i ]);
}