changeset 18:8d046a9d36aa slimline

Back out rev 13:ac07c60aa798. Like an idiot, I committed a whole pile of unrelated changes in the guise of a single typo fix. Will re-commit in stages
author Chris Cannam
date Thu, 10 May 2012 10:45:44 +0100
parents 6f87e0cb5e5e
children 03d547e42d8d
files songparts/Makefile.linux64 songparts/SongParts.cpp songparts/SongParts.o songparts/libmain.o
diffstat 4 files changed, 99 insertions(+), 100 deletions(-) [+]
line wrap: on
line diff
--- a/songparts/Makefile.linux64	Thu May 10 10:32:29 2012 +0100
+++ b/songparts/Makefile.linux64	Thu May 10 10:45:44 2012 +0100
@@ -1,6 +1,5 @@
 
-#CFLAGS := -O3 -fPIC -ftree-vectorize -I../armadillo-2.4.4/include -I../../vamp-plugin-sdk -I../../qm-dsp
-CFLAGS := -g -fPIC -I../armadillo-2.4.4/include -I../../vamp-plugin-sdk -I../../qm-dsp
+CFLAGS := -O3 -fPIC -ftree-vectorize -I../armadillo-2.4.4/include -I../../vamp-plugin-sdk -I../../qm-dsp
 
 CXXFLAGS  := $(CFLAGS)
 
--- a/songparts/SongParts.cpp	Thu May 10 10:32:29 2012 +0100
+++ b/songparts/SongParts.cpp	Thu May 10 10:45:44 2012 +0100
@@ -50,9 +50,9 @@
 // Result Struct
 typedef struct Part {
     int n;
-    vector<int> indices;
+    vector<unsigned> indices;
     string letter;
-    int value;
+    unsigned value;
     int level;
     int nInd;
 }Part;
@@ -1158,7 +1158,7 @@
     // padding 
     arma::vec padV = arma::zeros<arma::vec>(v.size()+medfilt_length-1);
     
-    for (int i=medfilt_length/2; i < medfilt_length/2+v.size(); ++ i)
+    for (unsigned i=medfilt_length/2; i < medfilt_length/2+v.size(); ++ i)
     {
         padV(i) = v(i-medfilt_length/2);
     }    
@@ -1166,7 +1166,7 @@
     // Median filter
     arma::vec win = arma::zeros<arma::vec>(medfilt_length);
     
-    for (int i=0; i < v.size(); ++i)
+    for (unsigned i=0; i < v.size(); ++i)
     {
         win = padV.subvec(i,i+halfWin*2);
         win = sort(win);
@@ -1188,7 +1188,7 @@
     x(0) = 0;
     x(n+1) = 100; 
     
-    for (int i=1; i<n+1; ++i)
+    for (unsigned i=1; i<n+1; ++i)
         x(i) = 100*(0.5+(i-1))/n;
         
     y(0) = sortV(0);
@@ -1243,13 +1243,13 @@
 Part nullpart(vector<Part> parts, arma::vec barline)
 {
     arma::uvec nullindices = arma::ones<arma::uvec>(barline.size());
-    for (int iPart=0; iPart<parts.size(); ++iPart)
+    for (unsigned iPart=0; iPart<parts.size(); ++iPart)
     {
-        //for (int iIndex=0; iIndex < parts[0].indices.size(); ++iIndex) 
-        for (int iIndex=0; iIndex < parts[iPart].indices.size(); ++iIndex) 
-            for (int i=0; i<parts[iPart].n; ++i) 
+        //for (unsigned iIndex=0; iIndex < parts[0].indices.size(); ++iIndex) 
+        for (unsigned iIndex=0; iIndex < parts[iPart].indices.size(); ++iIndex) 
+            for (unsigned i=0; i<parts[iPart].n; ++i) 
             {
-                int ind = parts[iPart].indices[iIndex]+i;
+                unsigned ind = parts[iPart].indices[iIndex]+i;
                 nullindices(ind) = 0;
             }
     }
@@ -1258,7 +1258,7 @@
     newPart.n = 1;
     uvec q = find(nullindices > 0);
     
-    for (int i=0; i<q.size();++i) 
+    for (unsigned i=0; i<q.size();++i) 
         newPart.indices.push_back(q(i));
 
     newPart.letter = '-';
@@ -1272,7 +1272,7 @@
 // Merge Nulls
 void mergenulls(vector<Part> &parts)
 {
-    for (int iPart=0; iPart<parts.size(); ++iPart)
+    for (unsigned iPart=0; iPart<parts.size(); ++iPart)
     {
         
         vector<Part> newVectorPart;
@@ -1280,15 +1280,15 @@
         if (parts[iPart].letter.compare("-")==0)
         {
             sort (parts[iPart].indices.begin(), parts[iPart].indices.end());
-            int newpartind = -1;
+            unsigned newpartind = -1;
             
             vector<int> indices;
             indices.push_back(-2);
             
-            for (int iIndex=0; iIndex<parts[iPart].indices.size(); ++iIndex) 
+            for (unsigned iIndex=0; iIndex<parts[iPart].indices.size(); ++iIndex) 
                 indices.push_back(parts[iPart].indices[iIndex]);
             
-            for (int iInd=1; iInd < indices.size(); ++iInd)
+            for (unsigned iInd=1; iInd < indices.size(); ++iInd)
             { 
                 if (indices[iInd] - indices[iInd-1] > 1)
                 {
@@ -1313,7 +1313,7 @@
             }
             parts.erase (parts.end());
             
-            for (int i=0; i<newVectorPart.size(); ++i)
+            for (unsigned i=0; i<newVectorPart.size(); ++i)
                 parts.push_back(newVectorPart[i]);
         }
     }
@@ -1321,7 +1321,7 @@
 
 /* ------ Segmentation ------ */
 
-vector<Part> songSegment(Vamp::Plugin::FeatureList quantisedChromagram)
+vector<Part> songSegment(Vamp::Plugin::FeatureList quatisedChromagram)
 {
     
     
@@ -1336,26 +1336,26 @@
     
     
     // Collect Info
-    int nBeat = quantisedChromagram.size();                      // Number of feature vector
-    int nFeatValues = quantisedChromagram[0].values.size();      // Number of values for each feature vector
+    int nBeat = quatisedChromagram.size();                      // Number of feature vector
+    int nFeatValues = quatisedChromagram[0].values.size();      // Number of values for each feature vector
     
     arma::irowvec timeStamp = arma::zeros<arma::imat>(1,nBeat);       // Vector of Time Stamps
     
 	// Save time stamp as a Vector
-    if (quantisedChromagram[0].hasTimestamp)
+    if (quatisedChromagram[0].hasTimestamp)
     {
-        for (int i = 0; i < nBeat; ++ i)
-            timeStamp[i] = quantisedChromagram[i].timestamp.nsec;
+        for (unsigned i = 0; i < nBeat; ++ i)
+            timeStamp[i] = quatisedChromagram[i].timestamp.nsec;
     }
     
     
     // Build a ObservationTOFeatures Matrix
     arma::mat featVal = arma::zeros<mat>(nBeat,nFeatValues/2);
     
-    for (int i = 0; i < nBeat; ++ i)
-        for (int j = 0; j < nFeatValues/2; ++ j)
+    for (unsigned i = 0; i < nBeat; ++ i)
+        for (unsigned j = 0; j < nFeatValues/2; ++ j)
         {
-            featVal(i,j) = (quantisedChromagram[i].values[j]+quantisedChromagram[i].values[j+12]) * 0.8;
+            featVal(i,j) = (quatisedChromagram[i].values[j]+quatisedChromagram[i].values[j+12]) * 0.8;
         }
     
     // Set to arbitrary value to feature vectors with low std
@@ -1365,13 +1365,13 @@
     arma::mat simmat0 = 1-arma::cor(arma::trans(featVal));
     
 
-    for (int i = 0; i < nBeat; ++ i)
+    for (unsigned i = 0; i < nBeat; ++ i)
     {
         if (a(i)<0.000001)
         {
             featVal(i,1) = 1000;  // arbitrary  
             
-            for (int j = 0; j < nFeatValues/2; ++j)
+            for (unsigned j = 0; j < nFeatValues/2; ++j)
             {
                 simmat0(i,j) = 1;
                 simmat0(j,i) = 1;
@@ -1382,8 +1382,8 @@
     arma::mat simmat = 1-simmat0/2;
     
     // -------- To delate when the proble with the add of beat will be solved -------
-    for (int i = 0; i < nBeat; ++ i)
-     for (int j = 0; j < nBeat; ++ j)
+    for (unsigned i = 0; i < nBeat; ++ i)
+     for (unsigned j = 0; j < nBeat; ++ j)
          if (!std::isfinite(simmat(i,j)))
              simmat(i,j)=0;
     // ------------------------------------------------------------------------------
@@ -1392,15 +1392,15 @@
     // The median filter is for each diagonal of the Matrix
     arma::mat median_simmat = arma::zeros<arma::mat>(nBeat,nBeat);
     
-    for (int i = 0; i < nBeat; ++ i)
+    for (unsigned i = 0; i < nBeat; ++ i)
     {
         arma::vec temp = medfilt1(simmat.diag(i),medfilt_length);
         median_simmat.diag(i) = temp;
         median_simmat.diag(-i) = temp;
     }
 
-    for (int i = 0; i < nBeat; ++ i)
-        for (int j = 0; j < nBeat; ++ j)
+    for (unsigned i = 0; i < nBeat; ++ i)
+        for (unsigned j = 0; j < nBeat; ++ j)
             if (!std::isfinite(median_simmat(i,j)))
                 median_simmat(i,j) = 0;
     
@@ -1418,10 +1418,10 @@
     potential_duplicates.elem(dup) = arma::ones<arma::vec>(dup.size());
     potential_duplicates = trimatu(potential_duplicates);
     
-    int nPartlengths = round((maxlength-minlength)/4)+1;
+    unsigned nPartlengths = round((maxlength-minlength)/4)+1;
     arma::vec partlengths = zeros<arma::vec>(nPartlengths);
     
-    for (int i = 0; i < nPartlengths; ++ i)
+    for (unsigned i = 0; i < nPartlengths; ++ i)
         partlengths(i) = (i*4)+ minlength;
     
     // initialise arrays
@@ -1430,17 +1430,17 @@
 
     int conta = 0;
        
-    //for (int iLength = 0; iLength < nPartlengths; ++ iLength)
-    for (int iLength = 0; iLength < 20; ++ iLength)
+    //for (unsigned iLength = 0; iLength < nPartlengths; ++ iLength)
+    for (unsigned iLength = 0; iLength < 20; ++ iLength)
     {
-        int len = partlengths(iLength);
-        int nUsedBeat = nBeat - len + 1;                   // number of potential rep beginnings: they can't overlap at the end of the song
+        unsigned len = partlengths(iLength);
+        unsigned nUsedBeat = nBeat - len + 1;                   // number of potential rep beginnings: they can't overlap at the end of the song
         
-        for (int iBeat = 0; iBeat < nUsedBeat; ++ iBeat)   // looping over all columns (arbitrarily chosen columns)
+        for (unsigned iBeat = 0; iBeat < nUsedBeat; ++ iBeat)   // looping over all columns (arbitrarily chosen columns)
         {
             arma::uvec help2 = find(potential_duplicates(span(0,nUsedBeat-1),iBeat)==1);
             
-            for (int i=0; i<help2.size(); ++i)
+            for (unsigned i=0; i<help2.size(); ++i)
             {
 
                 // measure how well two length len segments go together
@@ -1458,7 +1458,7 @@
         K << 0.01 << 0.98 << 0.01;
         
         
-        for (int i=0; i<simArray.n_rows; ++i)
+        for (unsigned i=0; i<simArray.n_rows; ++i)
         {
             arma::rowvec t = arma::conv((arma::rowvec)simArray.slice(iLength).row(i),K);
             simArray.slice(iLength)(i,span::all) = t.subvec(1,t.size()-2);
@@ -1469,8 +1469,8 @@
         arma::mat temp = arma::zeros<mat>(simArray.n_rows, simArray.n_cols);
         temp(span::all, span(0,nUsedBeat-1)) = simArray.slice(iLength)(span::all,span(0,nUsedBeat-1));
         
-        for (int i=0; i<temp.n_rows; ++i)
-            for (int j=0; j<nUsedBeat; ++j)
+        for (unsigned i=0; i<temp.n_rows; ++i)
+            for (unsigned j=0; j<nUsedBeat; ++j)
                 if (temp(i,j) < thresh_seg)
                     temp(i,j) = 0;
         
@@ -1478,15 +1478,15 @@
 
         arma::mat maxMat = maxfilt1(decisionArray2.slice(iLength),len-1);
         
-        for (int i=0; i<decisionArray2.n_rows; ++i)
-            for (int j=0; j<decisionArray2.n_cols; ++j)
+        for (unsigned i=0; i<decisionArray2.n_rows; ++i)
+            for (unsigned j=0; j<decisionArray2.n_cols; ++j)
                 if (decisionArray2.slice(iLength)(i,j) < maxMat(i,j))
                     decisionArray2.slice(iLength)(i,j) = 0;
         
         decisionArray2.slice(iLength) = decisionArray2.slice(iLength) % arma::trans(decisionArray2.slice(iLength));
         
-        for (int i=0; i<simArray.n_rows; ++i)
-            for (int j=0; j<simArray.n_cols; ++j)
+        for (unsigned i=0; i<simArray.n_rows; ++i)
+            for (unsigned j=0; j<simArray.n_cols; ++j)
                 if (simArray.slice(iLength)(i,j) < thresh_seg)
                     potential_duplicates(i,j) = 0; 
     }
@@ -1495,25 +1495,25 @@
     
     arma::mat bestval;
     
-    for (int iLength=0; iLength<nPartlengths; ++iLength)
+    for (unsigned iLength=0; iLength<nPartlengths; ++iLength)
     {
         arma::mat temp = arma::zeros<arma::mat>(decisionArray2.n_rows,decisionArray2.n_cols);
 
-       for (int rows=0; rows<decisionArray2.n_rows; ++rows)
-            for (int cols=0; cols<decisionArray2.n_cols; ++cols)
+       for (unsigned rows=0; rows<decisionArray2.n_rows; ++rows)
+            for (unsigned cols=0; cols<decisionArray2.n_cols; ++cols)
                 if (decisionArray2.slice(iLength)(rows,cols) > 0)
                     temp(rows,cols) = 1;
         
         arma::vec currLogicSum = arma::sum(temp,1);
         
-        for (int iBeat=0; iBeat<nBeat; ++iBeat)
+        for (unsigned iBeat=0; iBeat<nBeat; ++iBeat)
             if (currLogicSum(iBeat) > 1)
             {
                 arma::vec t = decisionArray2.slice(iLength)(span::all,iBeat);
                 double currSum = sum(t);
                 
-                int count = 0;
-                for (int i=0; i<t.size(); ++i)
+                unsigned count = 0;
+                for (unsigned i=0; i<t.size(); ++i)
                     if (t(i)>0)
                         count++;
                 
@@ -1532,7 +1532,7 @@
     // make a table of all valid sets of parts
     
     char partletters[] = {'A','B','C','D','E','F','G', 'H','I','J','K','L','M','N','O','P','Q','R','S'};
-    int partvalues[] = {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19};
+    unsigned partvalues[] = {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19};
     arma::vec valid_sets = arma::ones<arma::vec>(bestval.n_rows);
     
     if (!bestval.is_empty())
@@ -1541,7 +1541,7 @@
         // In questo punto viene introdotto un errore alla 3 cifra decimale
         
         arma::colvec t = arma::zeros<arma::colvec>(bestval.n_rows);
-        for (int i=0; i<bestval.n_rows; ++i)
+        for (unsigned i=0; i<bestval.n_rows; ++i)
         {
             t(i) = bestval(i,1)*2;
         }
@@ -1552,15 +1552,15 @@
         bestval(span::all,0) = bestval(span::all,0) + bestval(span::all,1);
         
         arma::mat bestval2;
-        for (int i=0; i<bestval.n_cols; ++i)
+        for (unsigned i=0; i<bestval.n_cols; ++i)
             if (i!=1)
                 bestval2 = join_rows(bestval2,bestval.col(i));
         
-        for (int kSeg=0; kSeg<6; ++kSeg)
+        for (unsigned kSeg=0; kSeg<6; ++kSeg)
         {
             arma::mat currbestvals = arma::zeros<arma::mat>(bestval2.n_rows, bestval2.n_cols);
-            for (int i=0; i<bestval2.n_rows; ++i)
-                for (int j=0; j<bestval2.n_cols; ++j)
+            for (unsigned i=0; i<bestval2.n_rows; ++i)
+                for (unsigned j=0; j<bestval2.n_cols; ++j)
                     if (valid_sets(i))
                         currbestvals(i,j) = bestval2(i,j);
             
@@ -1576,12 +1576,12 @@
             arma::rowvec bestIndices = decisionArray2.slice(currbestvals(maIdx,1))(currbestvals(maIdx,2),span::all);
                 
             arma::rowvec bestIndicesMap = arma::zeros<arma::rowvec>(bestIndices.size());
-            for (int i=0; i<bestIndices.size(); ++i)
+            for (unsigned i=0; i<bestIndices.size(); ++i)
                 if (bestIndices(i)>0)
                     bestIndicesMap(i) = 1;
                    
             arma::rowvec mask = arma::zeros<arma::rowvec>(bestLength*2-1);
-            for (int i=0; i<bestLength; ++i)
+            for (unsigned i=0; i<bestLength; ++i)
                 mask(i+bestLength-1) = 1;
             
             arma::rowvec t2 = arma::conv(bestIndicesMap,mask); 
@@ -1592,7 +1592,7 @@
             newPart.n = bestLength;
             uvec q1 = find(bestIndices > 0);
             
-            for (int i=0; i<q1.size();++i)
+            for (unsigned i=0; i<q1.size();++i)
                 newPart.indices.push_back(q1(i));
             
             newPart.letter = partletters[kSeg];
@@ -1602,18 +1602,18 @@
             
             uvec q2 = find(valid_sets==1);
             
-            for (int i=0; i<q2.size(); ++i)
+            for (unsigned i=0; i<q2.size(); ++i)
             {
-                int iSet = q2(i);
-                int s = partlengths(bestval2(iSet,1));
+                unsigned iSet = q2(i);
+                unsigned s = partlengths(bestval2(iSet,1));
                 
                 arma::rowvec mask1 = arma::zeros<arma::rowvec>(s*2-1);
-                for (int i=0; i<s; ++i)
+                for (unsigned i=0; i<s; ++i)
                     mask1(i+s-1) = 1;
                 
                 arma::rowvec Ind = decisionArray2.slice(bestval2(iSet,1))(bestval2(iSet,2),span::all);
                 arma::rowvec IndMap = arma::zeros<arma::rowvec>(Ind.size());
-                for (int i=0; i<Ind.size(); ++i)
+                for (unsigned i=0; i<Ind.size(); ++i)
                     if (Ind(i)>0)
                         IndMap(i) = 2;
                 
@@ -1669,38 +1669,38 @@
 
 
 
-void songSegmentChroma(Vamp::Plugin::FeatureList quantisedChromagram, vector<Part> &parts)
+void songSegmentChroma(Vamp::Plugin::FeatureList quatisedChromagram, vector<Part> &parts)
 {
     // Collect Info
-    int nBeat = quantisedChromagram.size();                      // Number of feature vector
-    int nFeatValues = quantisedChromagram[0].values.size();      // Number of values for each feature vector
+    int nBeat = quatisedChromagram.size();                      // Number of feature vector
+    int nFeatValues = quatisedChromagram[0].values.size();      // Number of values for each feature vector
 
     arma::mat synchTreble = arma::zeros<mat>(nBeat,nFeatValues/2);
     
-    for (int i = 0; i < nBeat; ++ i)
-        for (int j = 0; j < nFeatValues/2; ++ j)
+    for (unsigned i = 0; i < nBeat; ++ i)
+        for (unsigned j = 0; j < nFeatValues/2; ++ j)
         {
-            synchTreble(i,j) = quantisedChromagram[i].values[j];
+            synchTreble(i,j) = quatisedChromagram[i].values[j];
         }
     
     arma::mat synchBass = arma::zeros<mat>(nBeat,nFeatValues/2);
     
-    for (int i = 0; i < nBeat; ++ i)
-        for (int j = 0; j < nFeatValues/2; ++ j)
+    for (unsigned i = 0; i < nBeat; ++ i)
+        for (unsigned j = 0; j < nFeatValues/2; ++ j)
         {
-            synchBass(i,j) = quantisedChromagram[i].values[j+12];
+            synchBass(i,j) = quatisedChromagram[i].values[j+12];
         }
 
     // Process
     
-    arma::mat segTreble = arma::zeros<arma::mat>(quantisedChromagram.size(),quantisedChromagram[0].values.size()/2);
-    arma::mat segBass = arma::zeros<arma::mat>(quantisedChromagram.size(),quantisedChromagram[0].values.size()/2);
+    arma::mat segTreble = arma::zeros<arma::mat>(quatisedChromagram.size(),quatisedChromagram[0].values.size()/2);
+    arma::mat segBass = arma::zeros<arma::mat>(quatisedChromagram.size(),quatisedChromagram[0].values.size()/2);
     
-    for (int iPart=0; iPart<parts.size(); ++iPart)
+    for (unsigned iPart=0; iPart<parts.size(); ++iPart)
     {
         parts[iPart].nInd = parts[iPart].indices.size();
         
-        for (int kOccur=0; kOccur<parts[iPart].nInd; ++kOccur)
+        for (unsigned kOccur=0; kOccur<parts[iPart].nInd; ++kOccur)
         {
             int kStartIndex = parts[iPart].indices[kOccur];
             int kEndIndex = kStartIndex + parts[iPart].n-1;
@@ -1719,10 +1719,10 @@
     vector<Part> newPartVector;
     vector<int> partindices;
     
-    for (int iPart=0; iPart<parts.size(); ++iPart)
+    for (unsigned iPart=0; iPart<parts.size(); ++iPart)
     {
         parts[iPart].nInd = parts[iPart].indices.size();
-        for (int iInstance=0; iInstance<parts[iPart].nInd; ++iInstance)
+        for (unsigned iInstance=0; iInstance<parts[iPart].nInd; ++iInstance)
         {
             Part newPart;
             newPart.n = parts[iPart].n;
@@ -1741,7 +1741,7 @@
     // Sort the parts in order of occurrence
     sort (partindices.begin(), partindices.end());
     
-    for (int i=0; i<partindices.size(); ++i)
+    for (unsigned i=0; i<partindices.size(); ++i)
     {
         bool found = false;
         int in=0;    
@@ -1759,7 +1759,7 @@
     }
     
     // Clear the vector
-    for (int iNewpart=1; iNewpart < newPartVector.size(); ++iNewpart)
+    for (unsigned iNewpart=1; iNewpart < newPartVector.size(); ++iNewpart)
     {
         if (newPartVector[iNewpart].n < 12)
         {
@@ -1772,30 +1772,30 @@
 }
 
 // Segmenter
-Vamp::Plugin::FeatureList SongPartitioner::runSegmenter(Vamp::Plugin::FeatureList quantisedChromagram)
+Vamp::Plugin::FeatureList SongPartitioner::runSegmenter(Vamp::Plugin::FeatureList quatisedChromagram)
 {
     /* --- Display Information --- */
-    int numBeat = quantisedChromagram.size();
-    int numFeats = quantisedChromagram[0].values.size();
+    int numBeat = quatisedChromagram.size();
+    int numFeats = quatisedChromagram[0].values.size();
 
     vector<Part> parts;
     vector<Part> finalParts;
     
-    parts = songSegment(quantisedChromagram);
-    songSegmentChroma(quantisedChromagram,parts);
+    parts = songSegment(quatisedChromagram);
+    songSegmentChroma(quatisedChromagram,parts);
     
     finalParts = songSegmentIntegration(parts);
     
     
     // TEMP ----
-    /*for (int i=0;i<finalParts.size(); ++i)
+    /*for (unsigned i=0;i<finalParts.size(); ++i)
      {
      std::cout << "Parts n° " << i << std::endl;
      std::cout << "n°: " << finalParts[i].n << std::endl;
      std::cout << "letter: " <<  finalParts[i].letter << std::endl;
      
      std::cout << "indices: ";
-     for (int j=0;j<finalParts[i].indices.size(); ++j)
+     for (unsigned j=0;j<finalParts[i].indices.size(); ++j)
          std::cout << finalParts[i].indices[j] << " ";
        
      std::cout << std::endl;
@@ -1813,21 +1813,21 @@
     Feature seg;
     
     arma::vec indices;
-    int idx=0;
+    unsigned idx=0;
     vector<int> values;
     vector<string> letters;
     
-    for (int iPart=0; iPart<finalParts.size()-1; ++iPart)
+    for (unsigned iPart=0; iPart<finalParts.size()-1; ++iPart)
     {
-        int iInstance=0;
+        unsigned iInstance=0;
         seg.hasTimestamp = true;
          
         int ind = finalParts[iPart].indices[iInstance];
         int ind1 = finalParts[iPart+1].indices[iInstance];
          
-        seg.timestamp = quantisedChromagram[ind].timestamp;
+        seg.timestamp = quatisedChromagram[ind].timestamp;
         seg.hasDuration = true;
-        seg.duration = quantisedChromagram[ind1].timestamp-quantisedChromagram[ind].timestamp;
+        seg.duration = quatisedChromagram[ind1].timestamp-quatisedChromagram[ind].timestamp;
         seg.values.clear();
         seg.values.push_back(finalParts[iPart].value);
         seg.label = finalParts[iPart].letter;
@@ -1836,9 +1836,9 @@
     }
     
     int ind = finalParts[finalParts.size()-1].indices[0];
-    seg.timestamp = quantisedChromagram[ind].timestamp;
+    seg.timestamp = quatisedChromagram[ind].timestamp;
     seg.hasDuration = true;
-    seg.duration = quantisedChromagram[quantisedChromagram.size()-1].timestamp-quantisedChromagram[ind].timestamp;
+    seg.duration = quatisedChromagram[quatisedChromagram.size()-1].timestamp-quatisedChromagram[ind].timestamp;
     seg.values.clear();
     seg.values.push_back(finalParts[finalParts.size()-1].value);
     seg.label = finalParts[finalParts.size()-1].letter;
Binary file songparts/SongParts.o has changed
Binary file songparts/libmain.o has changed