Mercurial > hg > segmenter-vamp-plugin
changeset 37:4a92113e9798 slimline
Eliminate a couple more potential unsigned underflows, fix compiler warnings
author | Chris Cannam |
---|---|
date | Wed, 16 May 2012 11:56:07 +0100 |
parents | cc18e9a13fe8 |
children | 0a1f643b31d9 |
files | songparts/SongParts.cpp songparts/SongParts.h |
diffstat | 2 files changed, 78 insertions(+), 73 deletions(-) [+] |
line wrap: on
line diff
--- a/songparts/SongParts.cpp Wed May 16 11:44:39 2012 +0100 +++ b/songparts/SongParts.cpp Wed May 16 11:56:07 2012 +0100 @@ -116,7 +116,7 @@ int frameCount; int nBPS; Vamp::Plugin::FeatureList logSpectrum; - size_t blockSize; + int blockSize; int lengthOfNoteIndex; vector<float> meanTunings; vector<float> localTunings; @@ -137,7 +137,7 @@ vector<float> cosvalues; Window<float> window; FFTReal fft; - size_t inputSampleRate; + int inputSampleRate; /* --- METHODS --- */ @@ -205,7 +205,7 @@ // FFTReal wants doubles, so we need to make a local copy of inputBuffers double *inputBuffersDouble = new double[blockSize]; - for (size_t i = 0; i < blockSize; i++) inputBuffersDouble[i] = inputBuffers[i]; + for (int i = 0; i < blockSize; i++) inputBuffersDouble[i] = inputBuffers[i]; fft.process(false, inputBuffersDouble, fftReal, fftImag); @@ -296,15 +296,15 @@ { dictionaryMatrix(dict, s); - // make things for tuning estimation - for (int iBPS = 0; iBPS < nBPS; ++iBPS) { + // make things for tuning estimation + for (int iBPS = 0; iBPS < nBPS; ++iBPS) { sinvalues.push_back(sin(2*M_PI*(iBPS*1.0/nBPS))); cosvalues.push_back(cos(2*M_PI*(iBPS*1.0/nBPS))); } - // make hamming window of length 1/2 octave - int hamwinlength = nBPS * 6 + 1; + // make hamming window of length 1/2 octave + int hamwinlength = nBPS * 6 + 1; float hamwinsum = 0; for (int i = 0; i < hamwinlength; ++i) { hw.push_back(0.54 - 0.46 * cos((2*M_PI*i)/(hamwinlength-1))); @@ -346,6 +346,8 @@ } } delete [] tempkernel; + + return true; } }; @@ -358,8 +360,8 @@ /* --- ATTRIBUTES --- */ float SongPartitioner::m_stepSecs = 0.01161; // 512 samples at 44100 -size_t SongPartitioner::m_chromaFramesizeFactor = 16; // 16 times as long as beat tracker's -size_t SongPartitioner::m_chromaStepsizeFactor = 4; // 4 times as long as beat tracker's +int SongPartitioner::m_chromaFramesizeFactor = 16; // 16 times as long as beat tracker's +int SongPartitioner::m_chromaStepsizeFactor = 4; // 4 times as long as beat tracker's /* --- METHODS --- */ @@ -526,7 +528,7 @@ SongPartitioner::OutputList SongPartitioner::getOutputDescriptors() const { OutputList list; - size_t outputCounter = 0; + int outputCounter = 0; OutputDescriptor beat; beat.identifier = "beats"; @@ -766,7 +768,7 @@ FeatureSet masterFeatureset = beatTrack(); FeatureList chromaList = chromaFeatures(); - for (size_t i = 0; i < chromaList.size(); ++i) + for (int i = 0; i < (int)chromaList.size(); ++i) { masterFeatureset[m_bothchromaOutputNumber].push_back(chromaList[i]); } @@ -793,7 +795,7 @@ vector<double> beatPeriod; vector<double> tempi; - for (size_t i = 2; i < m_d->dfOutput.size(); ++i) { // discard first two elts + for (int i = 2; i < (int)m_d->dfOutput.size(); ++i) { // discard first two elts df.push_back(m_d->dfOutput[i]); beatPeriod.push_back(0.0); } @@ -832,11 +834,11 @@ if (beat == m_bpb) beat = 0; } - for (size_t i = 0; i < beats.size(); ++i) { + for (int i = 0; i < (int)beats.size(); ++i) { - size_t frame = beats[i] * m_d->dfConfig.stepSize; + int frame = beats[i] * m_d->dfConfig.stepSize; - if (dbi < downbeats.size() && i == downbeats[dbi]) { + if (dbi < (int)downbeats.size() && i == downbeats[dbi]) { beat = 0; ++bar; ++dbi; @@ -863,7 +865,7 @@ feature.values.push_back(beat + 1); returnFeatures[m_beatcountsOutputNumber].push_back(feature); // beat function - if (i > 0 && i <= beatsd.size()) { + if (i > 0 && i <= (int)beatsd.size()) { feature.values.clear(); feature.values.push_back(beatsd[i-1]); feature.label = ""; @@ -1097,7 +1099,7 @@ if (nBeat == 0 && nChromaFrame == 0) return returnVector; - size_t nBin = chromagram[0].values.size(); + int nBin = chromagram[0].values.size(); vector<float> tempChroma = vector<float>(nBin); @@ -1110,8 +1112,11 @@ Vamp::RealTime frameTimestamp = chromagram[iChroma].timestamp; Vamp::RealTime newBeatTimestamp; - if (currBeatCount != beats.size()-1) newBeatTimestamp = beats[currBeatCount+1].timestamp; - else newBeatTimestamp = chromagram[nChromaFrame-1].timestamp; + if (currBeatCount != (int)beats.size() - 1) { + newBeatTimestamp = beats[currBeatCount+1].timestamp; + } else { + newBeatTimestamp = chromagram[nChromaFrame-1].timestamp; + } if (frameTimestamp > newBeatTimestamp || iChroma == nChromaFrame-1) @@ -1142,11 +1147,11 @@ // 2. increments / resets for current (new) beat currBeatCount++; beatTimestamp = newBeatTimestamp; - for (size_t i = 0; i < nBin; ++i) tempChroma[i] = 0; // average + for (int i = 0; i < nBin; ++i) tempChroma[i] = 0; // average framesInBeat = 0; } framesInBeat++; - for (size_t i = 0; i < nBin; ++i) tempChroma[i] += chromagram[iChroma].values[i]; + for (int i = 0; i < nBin; ++i) tempChroma[i] += chromagram[iChroma].values[i]; } returnVector.push_back(fwQchromagram); returnVector.push_back(bwQchromagram); @@ -1168,7 +1173,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 (int i=medfilt_length/2; i < medfilt_length/2+(int)v.size(); ++ i) { padV(i) = v(i-medfilt_length/2); } @@ -1176,7 +1181,7 @@ // Median filter arma::vec win = arma::zeros<arma::vec>(medfilt_length); - for (int i=0; i < v.size(); ++i) + for (int i=0; i < (int)v.size(); ++i) { win = padV.subvec(i,i+halfWin*2); win = sort(win); @@ -1223,7 +1228,7 @@ { arma::mat outmat = inmat; - for (int i=0; i<inmat.n_rows; ++i) + for (int i=0; i < (int)inmat.n_rows; ++i) { if (arma::sum(inmat.row(i)) > 0) { @@ -1236,7 +1241,7 @@ else startWin = i-len; - if (inmat.n_rows-1 < i+len-1) + if ((int)inmat.n_rows-1 < i+len-1) endWin = inmat.n_rows-1; else endWin = i+len-1; @@ -1253,10 +1258,10 @@ 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 (int iPart=0; iPart<(int)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 iIndex=0; iIndex < (int)parts[iPart].indices.size(); ++iIndex) for (int i=0; i<parts[iPart].n; ++i) { int ind = parts[iPart].indices[iIndex]+i; @@ -1268,7 +1273,7 @@ newPart.n = 1; uvec q = find(nullindices > 0); - for (int i=0; i<q.size();++i) + for (int i=0; i<(int)q.size();++i) newPart.indices.push_back(q(i)); newPart.letter = '-'; @@ -1282,7 +1287,7 @@ // Merge Nulls void mergenulls(vector<Part> &parts) { - for (int iPart=0; iPart<parts.size(); ++iPart) + for (int iPart=0; iPart<(int)parts.size(); ++iPart) { vector<Part> newVectorPart; @@ -1295,10 +1300,10 @@ vector<int> indices; indices.push_back(-2); - for (int iIndex=0; iIndex<parts[iPart].indices.size(); ++iIndex) + for (int iIndex=0; iIndex<(int)parts[iPart].indices.size(); ++iIndex) indices.push_back(parts[iPart].indices[iIndex]); - for (int iInd=1; iInd < indices.size(); ++iInd) + for (int iInd=1; iInd < (int)indices.size(); ++iInd) { if (indices[iInd] - indices[iInd-1] > 1) { @@ -1323,7 +1328,7 @@ } parts.erase (parts.end()); - for (int i=0; i<newVectorPart.size(); ++i) + for (int i=0; i<(int)newVectorPart.size(); ++i) parts.push_back(newVectorPart[i]); } } @@ -1451,8 +1456,6 @@ arma::cube simArray = zeros<arma::cube>(nBeat,nBeat,nPartlengths); arma::cube decisionArray2 = zeros<arma::cube>(nBeat,nBeat,nPartlengths); - int conta = 0; - //for (int iLength = 0; iLength < nPartlengths; ++ iLength) for (int iLength = 0; iLength < 20; ++ iLength) { @@ -1465,7 +1468,7 @@ { arma::uvec help2 = find(potential_duplicates(span(0,nUsedBeat-1),iBeat)==1); - for (int i=0; i<help2.size(); ++i) + for (int i=0; i < (int)help2.size(); ++i) { // measure how well two length len segments go together @@ -1483,7 +1486,7 @@ K << 0.01 << 0.98 << 0.01; - for (int i=0; i<simArray.n_rows; ++i) + for (int i=0; i < (int)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); @@ -1494,8 +1497,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 (int i=0; i < (int)temp.n_rows; ++i) + for (int j=0; j < nUsedBeat; ++j) if (temp(i,j) < thresh_seg) temp(i,j) = 0; @@ -1503,15 +1506,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 (int i=0; i < (int)decisionArray2.n_rows; ++i) + for (int j=0; j < (int)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 (int i=0; i < (int)simArray.n_rows; ++i) + for (int j=0; j < (int)simArray.n_cols; ++j) if (simArray.slice(iLength)(i,j) < thresh_seg) potential_duplicates(i,j) = 0; } @@ -1524,21 +1527,21 @@ { 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 (int rows=0; rows < (int)decisionArray2.n_rows; ++rows) + for (int cols=0; cols < (int)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 (int 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) + for (int i=0; i < (int)t.size(); ++i) if (t(i)>0) count++; @@ -1566,7 +1569,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 (int i=0; i < (int)bestval.n_rows; ++i) { t(i) = bestval(i,1)*2; } @@ -1577,15 +1580,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 (int i=0; i < (int)bestval.n_cols; ++i) if (i!=1) bestval2 = join_rows(bestval2,bestval.col(i)); for (int 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 (int i=0; i < (int)bestval2.n_rows; ++i) + for (int j=0; j < (int)bestval2.n_cols; ++j) if (valid_sets(i)) currbestvals(i,j) = bestval2(i,j); @@ -1601,7 +1604,7 @@ 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 (int i=0; i < (int)bestIndices.size(); ++i) if (bestIndices(i)>0) bestIndicesMap(i) = 1; @@ -1617,7 +1620,7 @@ newPart.n = bestLength; uvec q1 = find(bestIndices > 0); - for (int i=0; i<q1.size();++i) + for (int i=0; i < (int)q1.size();++i) newPart.indices.push_back(q1(i)); newPart.letter = partletters[kSeg]; @@ -1627,7 +1630,7 @@ uvec q2 = find(valid_sets==1); - for (int i=0; i<q2.size(); ++i) + for (int i=0; i < (int)q2.size(); ++i) { int iSet = q2(i); int s = partlengths(bestval2(iSet,1)); @@ -1638,7 +1641,7 @@ 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 (int i=0; i < (int)Ind.size(); ++i) if (Ind(i)>0) IndMap(i) = 2; @@ -1721,7 +1724,7 @@ 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); - for (int iPart=0; iPart<parts.size(); ++iPart) + for (int iPart=0; iPart < (int)parts.size(); ++iPart) { parts[iPart].nInd = parts[iPart].indices.size(); @@ -1744,7 +1747,7 @@ vector<Part> newPartVector; vector<int> partindices; - for (int iPart=0; iPart<parts.size(); ++iPart) + for (int iPart=0; iPart < (int)parts.size(); ++iPart) { parts[iPart].nInd = parts[iPart].indices.size(); for (int iInstance=0; iInstance<parts[iPart].nInd; ++iInstance) @@ -1766,7 +1769,7 @@ // Sort the parts in order of occurrence sort (partindices.begin(), partindices.end()); - for (int i=0; i<partindices.size(); ++i) + for (int i=0; i < (int)partindices.size(); ++i) { bool found = false; int in=0; @@ -1784,7 +1787,7 @@ } // Clear the vector - for (int iNewpart=1; iNewpart < newPartVector.size(); ++iNewpart) + for (int iNewpart=1; iNewpart < (int)newPartVector.size(); ++iNewpart) { if (newPartVector[iNewpart].n < 12) { @@ -1800,8 +1803,8 @@ Vamp::Plugin::FeatureList SongPartitioner::runSegmenter(Vamp::Plugin::FeatureList quantisedChromagram) { /* --- Display Information --- */ - int numBeat = quantisedChromagram.size(); - int numFeats = quantisedChromagram[0].values.size(); +// int numBeat = quantisedChromagram.size(); +// int numFeats = quantisedChromagram[0].values.size(); vector<Part> parts; vector<Part> finalParts; @@ -1838,11 +1841,11 @@ Feature seg; arma::vec indices; - int idx=0; +// int idx=0; vector<int> values; vector<string> letters; - for (int iPart=0; iPart<finalParts.size()-1; ++iPart) + for (int iPart=0; iPart < (int)finalParts.size()-1; ++iPart) { int iInstance=0; seg.hasTimestamp = true; @@ -1860,16 +1863,18 @@ results.push_back(seg); } - int ind = finalParts[finalParts.size()-1].indices[0]; - seg.hasTimestamp = true; - seg.timestamp = quantisedChromagram[ind].timestamp; - seg.hasDuration = true; - seg.duration = quantisedChromagram[quantisedChromagram.size()-1].timestamp-quantisedChromagram[ind].timestamp; - seg.values.clear(); - seg.values.push_back(finalParts[finalParts.size()-1].value); - seg.label = finalParts[finalParts.size()-1].letter; + if (finalParts.size() > 0) { + int ind = finalParts[finalParts.size()-1].indices[0]; + seg.hasTimestamp = true; + seg.timestamp = quantisedChromagram[ind].timestamp; + seg.hasDuration = true; + seg.duration = quantisedChromagram[quantisedChromagram.size()-1].timestamp-quantisedChromagram[ind].timestamp; + seg.values.clear(); + seg.values.push_back(finalParts[finalParts.size()-1].value); + seg.label = finalParts[finalParts.size()-1].letter; - results.push_back(seg); + results.push_back(seg); + } return results; }
--- a/songparts/SongParts.h Wed May 16 11:44:39 2012 +0100 +++ b/songparts/SongParts.h Wed May 16 11:56:07 2012 +0100 @@ -55,8 +55,8 @@ BeatTrackerData *m_d; ChromaData *m_chromadata; static float m_stepSecs; - static size_t m_chromaFramesizeFactor; - static size_t m_chromaStepsizeFactor; + static int m_chromaFramesizeFactor; + static int m_chromaStepsizeFactor; int m_bpb; int m_pluginFrameCount; FeatureSet beatTrack();