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 }
|