annotate annotationCalculatorSrc/EwertAnnotationReader.cpp @ 56:4394c9490716 tip

minor changes
author Andrew N Robertson <andrew.robertson@eecs.qmul.ac.uk>
date Mon, 24 Dec 2012 18:58:39 +0000
parents 93d21c20cfbc
children
rev   line source
andrew@50 1 /*
andrew@50 2 * EwertAnnotationReader.cpp
andrew@50 3 * annotationResultCalculator
andrew@50 4 *
andrew@50 5 * Created by Andrew on 14/05/2012.
andrew@50 6 * Copyright 2012 QMUL. All rights reserved.
andrew@50 7 *
andrew@50 8 */
andrew@50 9
andrew@50 10 #include "EwertAnnotationReader.h"
andrew@50 11
andrew@50 12 EwertAnnotationReader::EwertAnnotationReader(){
andrew@50 13 swapOrder = false;
andrew@50 14 annotationsLoaded = false;
andrew@50 15 }
andrew@50 16
andrew@50 17
andrew@50 18 void EwertAnnotationReader::clearAlignmentMatrix(){
andrew@50 19 alignmentTimes.clear();
andrew@50 20 DoubleVector v;
andrew@50 21 alignmentTimes.push_back(v);
andrew@50 22 v.clear();
andrew@50 23 alignmentTimes.push_back(v);
andrew@50 24 }
andrew@50 25 void EwertAnnotationReader::readInBeatsFile(std::string& pathName){
andrew@50 26
andrew@50 27 // "/Users/andrew/Documents/work/MuseScore/RWC/ANNOTATION/RM-C002_annotation+WavPos.csv"
andrew@50 28 //beatTimes.clear();
andrew@50 29
andrew@50 30 clearAlignmentMatrix();
andrew@50 31
andrew@50 32 printf("READ FILE %s\n", pathName.c_str());
andrew@50 33 ifstream file ( pathName.c_str());
andrew@50 34 string value, tmpLine;
andrew@50 35 stringstream iss;
andrew@50 36 int count = 0;
andrew@50 37
andrew@50 38 while ( file.good() )
andrew@50 39 {
andrew@50 40 getline(file, tmpLine);
andrew@50 41 iss << tmpLine;
andrew@50 42
andrew@50 43 if (tmpLine.substr(0,1) != "%"){
andrew@50 44
andrew@50 45 //printf("line%i='%s'", count, tmpLine.c_str());
andrew@50 46 count++;
andrew@50 47
andrew@50 48 string::size_type start = tmpLine.find_first_not_of(" ;,\t\v\n");
andrew@50 49
andrew@50 50 if (start != string::npos){
andrew@50 51
andrew@50 52 string firstpart = tmpLine.substr(start, string::npos);
andrew@50 53
andrew@50 54 string::size_type end = firstpart.find_first_of(" ;,\t\v\n");
andrew@50 55 string part = firstpart.substr(0, end);
andrew@50 56
andrew@50 57 string secondpart = tmpLine.substr(end+1, string::npos);
andrew@50 58 //start = secondpart.find_first_not_of(" ,\t\v\n");
andrew@50 59 //secondpart = tmpLine.substr(end , string::npos);
andrew@50 60
andrew@50 61 double firstTime = atof(part.c_str());
andrew@50 62 double secondTime = atof(secondpart.c_str());
andrew@50 63
andrew@50 64 //printf("%f,%f\n", firstTime, secondTime);
andrew@50 65
andrew@50 66 if (!swapOrder){
andrew@50 67 alignmentTimes[0].push_back(firstTime);
andrew@50 68 alignmentTimes[1].push_back(secondTime);
andrew@50 69 } else{
andrew@50 70 alignmentTimes[0].push_back(secondTime);
andrew@50 71 alignmentTimes[1].push_back(firstTime);
andrew@50 72 }
andrew@50 73
andrew@50 74
andrew@50 75
andrew@50 76 }else {//didnt find separator til end of line
andrew@50 77 //printf("END: line empty\n");
andrew@50 78 }
andrew@50 79
andrew@50 80 }else {//starts with %
andrew@50 81 //printf("FIRST LINE IGNORED line%i='%s'", count, tmpLine.c_str());
andrew@50 82 // count++;
andrew@50 83 }
andrew@50 84
andrew@50 85 }//end while file is good
andrew@50 86
andrew@50 87 annotationsLoaded = true;
andrew@50 88
andrew@50 89 // printBeatTimes();
andrew@50 90 //printf("There are %i BEAT annotations\n", (int)beatTimes.size());
andrew@50 91
andrew@50 92 }