diff options
author | Robin Gareus <robin@gareus.org> | 2016-10-06 00:16:44 +0200 |
---|---|---|
committer | Robin Gareus <robin@gareus.org> | 2016-10-06 00:57:53 +0200 |
commit | f68d2e06bcfb81efda107d3b4c3aa7dbc2d73bc2 (patch) | |
tree | 286d5b2b1c3573c2fbfc77b4d29b0b2a6bfa9686 /libs/qm-dsp/dsp/chromagram/Chromagram.cpp | |
parent | 2a27cc475867612afd261e5bf3b2a1a42b9c75cc (diff) |
update qm-dsp library
Diffstat (limited to 'libs/qm-dsp/dsp/chromagram/Chromagram.cpp')
-rw-r--r-- | libs/qm-dsp/dsp/chromagram/Chromagram.cpp | 22 |
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 ]); } |