Mercurial > hg > nnls-chroma
diff chromamethods.cpp @ 80:026a5c0ee2c2 matthiasm-plugin
bins per semitone can now be chosen in chromamethods.h
author | Matthias Mauch <mail@matthiasmauch.net> |
---|---|
date | Thu, 11 Nov 2010 15:11:05 +0900 |
parents | ba930176df5b |
children | e5c16976513d |
line wrap: on
line diff
--- a/chromamethods.cpp Thu Nov 11 10:29:35 2010 +0900 +++ b/chromamethods.cpp Thu Nov 11 15:11:05 2010 +0900 @@ -105,7 +105,7 @@ bool logFreqMatrix(int fs, int blocksize, float *outmatrix) { - int binspersemitone = 3; // this must be 3 + int binspersemitone = nBPS; int minoctave = 0; // this must be 0 int maxoctave = 7; // this must be 7 int oversampling = 80; @@ -128,14 +128,14 @@ int maxMIDI = 21 + maxoctave * 12; // this includes one additional semitone! vector<float> cq_f; float oob = 1.0/binspersemitone; // one over binspersemitone - cq_f.push_back(440 * pow(2.0,0.083333 * (minMIDI-69))); // 0.083333 is approx 1/12 - cq_f.push_back(440 * pow(2.0,0.083333 * (minMIDI+oob-69))); - for (int i = minMIDI + 1; i < maxMIDI; ++i) { - for (int k = -1; k < 2; ++k) { + // cq_f.push_back(440 * pow(2.0,0.083333 * (minMIDI-69))); // 0.083333 is approx 1/12 + // cq_f.push_back(440 * pow(2.0,0.083333 * (minMIDI+oob-69))); + for (int i = minMIDI; i < maxMIDI; ++i) { + for (int k = 0; k < binspersemitone; ++k) { cq_f.push_back(440 * pow(2.0,0.083333333333 * (i+oob*k-69))); } } - cq_f.push_back(440 * pow(2.0,0.083333 * (minMIDI-oob-69))); + // cq_f.push_back(440 * pow(2.0,0.083333 * (minMIDI-oob-69))); cq_f.push_back(440 * pow(2.0,0.083333 * (maxMIDI-69))); int nFFT = fft_f.size(); @@ -171,7 +171,7 @@ } void dictionaryMatrix(float* dm, float s_param) { - int binspersemitone = 3; // this must be 3 + int binspersemitone = nBPS; int minoctave = 0; // this must be 0 int maxoctave = 7; // this must be 7 // float s_param = 0.7; @@ -181,14 +181,14 @@ int maxMIDI = 21 + maxoctave * 12; // this includes one additional semitone! vector<float> cq_f; float oob = 1.0/binspersemitone; // one over binspersemitone - cq_f.push_back(440 * pow(2.0,0.083333 * (minMIDI-69))); // 0.083333 is approx 1/12 - cq_f.push_back(440 * pow(2.0,0.083333 * (minMIDI+oob-69))); - for (int i = minMIDI + 1; i < maxMIDI; ++i) { - for (int k = -1; k < 2; ++k) { + // cq_f.push_back(440 * pow(2.0,0.083333 * (minMIDI-69))); // 0.083333 is approx 1/12 + // cq_f.push_back(440 * pow(2.0,0.083333 * (minMIDI+oob-69))); + for (int i = minMIDI; i < maxMIDI; ++i) { + for (int k = 0; k < binspersemitone; ++k) { cq_f.push_back(440 * pow(2.0,0.083333333333 * (i+oob*k-69))); } } - cq_f.push_back(440 * pow(2.0,0.083333 * (minMIDI-oob-69))); + // cq_f.push_back(440 * pow(2.0,0.083333 * (minMIDI-oob-69))); cq_f.push_back(440 * pow(2.0,0.083333 * (maxMIDI-69))); float curr_f;