# HG changeset patch # User Matthias Mauch # Date 1291687015 -32400 # Node ID d1398182a072ad242a5d866f39a6b7e246a64288 # Parent daee3c60c4f9bf9838bc960a05243524d49997d4 s parameter setting now has an effect diff -r daee3c60c4f9 -r d1398182a072 NNLSBase.cpp --- a/NNLSBase.cpp Fri Dec 03 19:10:09 2010 +0900 +++ b/NNLSBase.cpp Tue Dec 07 10:56:55 2010 +0900 @@ -57,8 +57,7 @@ if (debug_on) cerr << "--> NNLSBase" << endl; // make the *note* dictionary matrix m_dict = new float[nNote * 84]; - for (unsigned i = 0; i < nNote * 84; ++i) m_dict[i] = 0.0; - dictionaryMatrix(m_dict, 0.7); + for (unsigned i = 0; i < nNote * 84; ++i) m_dict[i] = 0.0; } @@ -354,6 +353,8 @@ cerr << "--> initialise"; } + dictionaryMatrix(m_dict, m_s); + // make things for tuning estimation for (int iBPS = 0; iBPS < nBPS; ++iBPS) { sinvalues.push_back(sin(2*M_PI*(iBPS*1.0/nBPS))); diff -r daee3c60c4f9 -r d1398182a072 NNLSChroma.cpp --- a/NNLSChroma.cpp Fri Dec 03 19:10:09 2010 +0900 +++ b/NNLSChroma.cpp Tue Dec 07 10:56:55 2010 +0900 @@ -226,9 +226,18 @@ NNLSChroma::FeatureSet NNLSChroma::getRemainingFeatures() { + static const int nConsonance = 24; + float consonancepattern[nConsonance] = {0,-1,-1,1,1,1,-1,1,1,1,-1,-1,1,-1,-1,1,1,1,-1,1,1,1,-1,-1}; + float consonancemean = 0; + for (int i = 0; i< nConsonance; ++i) { + consonancemean += consonancepattern[i]/nConsonance; + } - float consonancepattern[24] = {0,-1,-1,1,1,1,-1,1,1,1,-1,-1,1,-1,-1,1,1,1,-1,1,1,1,-1,-1}; - // for (int i = 0; i< 12; ++i) cerr << consonancepattern[i]<< endl; + cerr << "consonancemean = " << consonancemean << endl; + + for (int i = 0; i< nConsonance; ++i) { + consonancepattern[i] -= consonancemean; + } if (debug_on) cerr << "--> getRemainingFeatures" << endl; FeatureSet fsOut; if (m_logSpectrum.size() == 0) return fsOut; @@ -430,12 +439,12 @@ consonance.values.push_back(0); for (int iSemitone = 0; iSemitone < 84-24; ++iSemitone) { - notesum += f3.values[iSemitone] * f3.values[iSemitone]; + notesum += f3.values[iSemitone] * f3.values[iSemitone] * treblewindow[iSemitone] * treblewindow[iSemitone]; float tempconsonance = 0; for (int jSemitone = 1; jSemitone < 24; ++jSemitone) { - tempconsonance += f3.values[iSemitone+jSemitone] * (consonancepattern[jSemitone]); + tempconsonance += f3.values[iSemitone+jSemitone] * (consonancepattern[jSemitone]) * treblewindow[iSemitone+jSemitone]; } - consonance.values[0] += (f3.values[iSemitone] * tempconsonance); + consonance.values[0] += (f3.values[iSemitone] * tempconsonance * treblewindow[iSemitone]); } if (notesum > 0) consonance.values[0] /= notesum;