# HG changeset patch # User matthiasm # Date 1291300797 -32400 # Node ID 19f3b33a19fb44e4c7e0e5f873b07003ff745ecf # Parent 12cdf228c47dc899d49e216c574e0bf0068a81a7 corrected viterbi frame initialisation diff -r 12cdf228c47d -r 19f3b33a19fb nnls-chroma.n3 --- a/nnls-chroma.n3 Thu Dec 02 23:11:27 2010 +0900 +++ b/nnls-chroma.n3 Thu Dec 02 23:39:57 2010 +0900 @@ -299,6 +299,17 @@ vamp:bin_names ( "A (bass)" "Bb (bass)" "B (bass)" "C (bass)" "C# (bass)" "D (bass)" "Eb (bass)" "E (bass)" "F (bass)" "F# (bass)" "G (bass)" "Ab (bass)" "A" "Bb" "B" "C" "C#" "D" "Eb" "E" "F" "F#" "G" "Ab"); vamp:computes_signal_type af:Chromagram ; . + +plugbase:nnls-chroma_output_consonance a vamp:DenseOutput ; + vamp:identifier "consonance" ; + dc:title "Consonance estimate." ; + dc:description """A simple consonance value based on the convolution of a consonance profile with the semitone spectrum.""" ; + vamp:fixed_bin_count "true" ; + vamp:unit "" ; + vamp:bin_count 1 ; + vamp:computes_signal_type af:TonalChangeDetectionFunction; + . + plugbase:tuning a vamp:Plugin ; dc:title "Tuning" ; vamp:name "Tuning" ; diff -r 12cdf228c47d -r 19f3b33a19fb viterbi.cpp --- a/viterbi.cpp Thu Dec 02 23:11:27 2010 +0900 +++ b/viterbi.cpp Thu Dec 02 23:39:57 2010 +0900 @@ -12,11 +12,6 @@ if (trans[0].size() != nState || trans.size() != nState || obs[0].size() != nState) { cerr << "ERROR: matrix sizes inconsistent." << endl; } - - for (int iState = 0; iState < nState; ++iState) delta[iState] = init[iState]; - for (int iFrame = 1; iFrame < nFrame; ++iFrame) { - for (int iState = 0; iState < nState; ++iState) delta[iFrame*nState + iState]; - } // vector > delta; // "matrix" of conditional probabilities vector > psi; // "matrix" of remembered indices of the best transitions @@ -28,7 +23,7 @@ /* initialise first frame */ // delta.push_back(init); for (int iState = 0; iState < nState; ++iState) { - delta[iState] *= obs[0][iState]; + delta[iState] = init[iState] * obs[0][iState]; deltasum += delta[iState]; } for (int iState = 0; iState < nState; ++iState) delta[iState] /= deltasum; // normalise (scale)