# HG changeset patch # User Chris Cannam # Date 1216915483 0 # Node ID a99c43f470a5be3497df6eac2c6d4f4e14dd10bc # Parent 3d16c2f1998ac7ca93effb16e3dbf47e9ebe8e1c * oh dear. fix some off-by-one errors leading to using uninitialised values in chromagram, constant-q, and mfcc calculations. diff -r 3d16c2f1998a -r a99c43f470a5 plugins/ChromagramPlugin.cpp --- a/plugins/ChromagramPlugin.cpp Wed Jul 16 08:01:00 2008 +0000 +++ b/plugins/ChromagramPlugin.cpp Thu Jul 24 16:04:43 2008 +0000 @@ -318,7 +318,7 @@ ChromagramPlugin::FeatureSet ChromagramPlugin::process(const float *const *inputBuffers, - Vamp::RealTime /* timestamp */) + Vamp::RealTime timestamp) { if (!m_chromagram) { cerr << "ERROR: ChromagramPlugin::process: " @@ -330,13 +330,28 @@ double *real = new double[m_block]; double *imag = new double[m_block]; - for (size_t i = 0; i < m_block/2; ++i) { + for (size_t i = 0; i <= m_block/2; ++i) { real[i] = inputBuffers[0][i*2]; if (i > 0) real[m_block - i] = real[i]; imag[i] = inputBuffers[0][i*2+1]; if (i > 0) imag[m_block - i] = imag[i]; } +// cerr << "chromagram: timestamp = " << timestamp << endl; +/* + bool printThis = false; + + if (timestamp.sec == 3 && timestamp.nsec < 250000000) { + printThis = true; + } + if (printThis) { + cerr << "\n\nchromagram: timestamp " << timestamp << ": input data starts:" << endl; + for (int i = 0; i < m_block && i < 1000; ++i) { + cerr << real[i] << "," << imag[i] << " "; + } + cerr << endl << "values:" << endl; + } +*/ double *output = m_chromagram->process(real, imag); delete[] real; @@ -346,12 +361,22 @@ feature.hasTimestamp = false; for (size_t i = 0; i < m_config.BPO; ++i) { double value = output[i]; +/* + if (printThis) { + cerr << value << " "; + } +*/ if (isnan(value)) value = 0.0; m_binsums[i] += value; feature.values.push_back(value); } feature.label = ""; ++m_count; +/* + if (printThis) { + cerr << endl; + } +*/ FeatureSet returnFeatures; returnFeatures[0].push_back(feature); diff -r 3d16c2f1998a -r a99c43f470a5 plugins/ConstantQSpectrogram.cpp --- a/plugins/ConstantQSpectrogram.cpp Wed Jul 16 08:01:00 2008 +0000 +++ b/plugins/ConstantQSpectrogram.cpp Thu Jul 24 16:04:43 2008 +0000 @@ -339,7 +339,7 @@ double *cqre = new double[m_bins]; double *cqim = new double[m_bins]; - for (size_t i = 0; i < m_block/2; ++i) { + for (size_t i = 0; i <= m_block/2; ++i) { real[i] = inputBuffers[0][i*2]; if (i > 0) real[m_block - i] = real[i]; imag[i] = inputBuffers[0][i*2+1]; diff -r 3d16c2f1998a -r a99c43f470a5 plugins/MFCCPlugin.cpp --- a/plugins/MFCCPlugin.cpp Wed Jul 16 08:01:00 2008 +0000 +++ b/plugins/MFCCPlugin.cpp Thu Jul 24 16:04:43 2008 +0000 @@ -256,7 +256,7 @@ double *real = new double[m_block]; double *imag = new double[m_block]; - for (size_t i = 0; i < m_block/2; ++i) { + for (size_t i = 0; i <= m_block/2; ++i) { real[i] = inputBuffers[0][i*2]; if (i > 0) real[m_block - i] = real[i]; imag[i] = inputBuffers[0][i*2+1]; diff -r 3d16c2f1998a -r a99c43f470a5 qm-vamp-plugins.pro --- a/qm-vamp-plugins.pro Wed Jul 16 08:01:00 2008 +0000 +++ b/qm-vamp-plugins.pro Thu Jul 24 16:04:43 2008 +0000 @@ -1,10 +1,10 @@ TEMPLATE = lib -CONFIG += plugin warn_on release +CONFIG += plugin warn_on debug CONFIG -= qt -linux-g++:QMAKE_CXXFLAGS_RELEASE += -DNDEBUG -O3 -fno-exceptions -fPIC -march=pentium3 -mfpmath=sse -msse -ffast-math +linux-g++:QMAKE_CXXFLAGS_RELEASE += -DNDEBUG -O3 -fPIC -march=pentium3 -mfpmath=sse -msse OBJECTS_DIR = tmp_obj MOC_DIR = tmp_moc