andrew@50: /* andrew@50: * EwertAnnotationReader.cpp andrew@50: * annotationResultCalculator andrew@50: * andrew@50: * Created by Andrew on 14/05/2012. andrew@50: * Copyright 2012 QMUL. All rights reserved. andrew@50: * andrew@50: */ andrew@50: andrew@50: #include "EwertAnnotationReader.h" andrew@50: andrew@50: EwertAnnotationReader::EwertAnnotationReader(){ andrew@50: swapOrder = false; andrew@50: annotationsLoaded = false; andrew@50: } andrew@50: andrew@50: andrew@50: void EwertAnnotationReader::clearAlignmentMatrix(){ andrew@50: alignmentTimes.clear(); andrew@50: DoubleVector v; andrew@50: alignmentTimes.push_back(v); andrew@50: v.clear(); andrew@50: alignmentTimes.push_back(v); andrew@50: } andrew@50: void EwertAnnotationReader::readInBeatsFile(std::string& pathName){ andrew@50: andrew@50: // "/Users/andrew/Documents/work/MuseScore/RWC/ANNOTATION/RM-C002_annotation+WavPos.csv" andrew@50: //beatTimes.clear(); andrew@50: andrew@50: clearAlignmentMatrix(); andrew@50: andrew@50: printf("READ FILE %s\n", pathName.c_str()); andrew@50: ifstream file ( pathName.c_str()); andrew@50: string value, tmpLine; andrew@50: stringstream iss; andrew@50: int count = 0; andrew@50: andrew@50: while ( file.good() ) andrew@50: { andrew@50: getline(file, tmpLine); andrew@50: iss << tmpLine; andrew@50: andrew@50: if (tmpLine.substr(0,1) != "%"){ andrew@50: andrew@50: //printf("line%i='%s'", count, tmpLine.c_str()); andrew@50: count++; andrew@50: andrew@50: string::size_type start = tmpLine.find_first_not_of(" ;,\t\v\n"); andrew@50: andrew@50: if (start != string::npos){ andrew@50: andrew@50: string firstpart = tmpLine.substr(start, string::npos); andrew@50: andrew@50: string::size_type end = firstpart.find_first_of(" ;,\t\v\n"); andrew@50: string part = firstpart.substr(0, end); andrew@50: andrew@50: string secondpart = tmpLine.substr(end+1, string::npos); andrew@50: //start = secondpart.find_first_not_of(" ,\t\v\n"); andrew@50: //secondpart = tmpLine.substr(end , string::npos); andrew@50: andrew@50: double firstTime = atof(part.c_str()); andrew@50: double secondTime = atof(secondpart.c_str()); andrew@50: andrew@50: //printf("%f,%f\n", firstTime, secondTime); andrew@50: andrew@50: if (!swapOrder){ andrew@50: alignmentTimes[0].push_back(firstTime); andrew@50: alignmentTimes[1].push_back(secondTime); andrew@50: } else{ andrew@50: alignmentTimes[0].push_back(secondTime); andrew@50: alignmentTimes[1].push_back(firstTime); andrew@50: } andrew@50: andrew@50: andrew@50: andrew@50: }else {//didnt find separator til end of line andrew@50: //printf("END: line empty\n"); andrew@50: } andrew@50: andrew@50: }else {//starts with % andrew@50: //printf("FIRST LINE IGNORED line%i='%s'", count, tmpLine.c_str()); andrew@50: // count++; andrew@50: } andrew@50: andrew@50: }//end while file is good andrew@50: andrew@50: annotationsLoaded = true; andrew@50: andrew@50: // printBeatTimes(); andrew@50: //printf("There are %i BEAT annotations\n", (int)beatTimes.size()); andrew@50: andrew@50: }