andrew@49
|
1 /*
|
andrew@49
|
2 * jnmrMidiPlayerannotations.cpp
|
andrew@49
|
3 * matchJNMRannotationReader
|
andrew@49
|
4 *
|
andrew@49
|
5 * Created by Andrew on 23/03/2012.
|
andrew@49
|
6 * Copyright 2012 QMUL. All rights reserved.
|
andrew@49
|
7 *
|
andrew@49
|
8 */
|
andrew@49
|
9
|
andrew@49
|
10 #include "jnmrMidiPlayerAnnotations.h"
|
andrew@49
|
11
|
andrew@49
|
12
|
andrew@49
|
13 void jnmrMidiPlayerAnnotations::readInjnmrMidiPlayerFile(std::string& pathName){
|
andrew@49
|
14
|
andrew@49
|
15 jnmrMidiPlayerData.clear();
|
andrew@49
|
16 differences.clear();
|
andrew@49
|
17
|
andrew@50
|
18 // printf("jnmrMidiPlayer : READ FILE %s\n", pathName.c_str());
|
andrew@49
|
19 ifstream file ( pathName.c_str());
|
andrew@49
|
20 string value, tmpLine;
|
andrew@49
|
21 stringstream iss;
|
andrew@49
|
22 int count = 0;
|
andrew@49
|
23
|
andrew@49
|
24 while ( file.good() )
|
andrew@49
|
25 {
|
andrew@49
|
26 getline(file, tmpLine);
|
andrew@49
|
27 iss << tmpLine;
|
andrew@49
|
28 // printf("tmp line %s\n", tmpLine.c_str());
|
andrew@49
|
29 while(getline ( iss, value, '\t' )){ // read a string until next comma: http://www.cplusplus.com/reference/string/getline/
|
andrew@49
|
30 jnmrMidiPlayerNotation n;
|
andrew@49
|
31 // string::size_type start = value.find_first_not_of(" ,\t\v\n");
|
andrew@49
|
32 // string part = value.substr(start, string::npos);
|
andrew@49
|
33
|
andrew@49
|
34 string::size_type start = value.find_first_not_of(" ,\t\v\n");
|
andrew@49
|
35 string firstpart = value.substr(start, string::npos);
|
andrew@49
|
36 string::size_type end = firstpart.find_first_of(" ,\t\v\n");
|
andrew@49
|
37 string part = firstpart.substr(0, end);
|
andrew@49
|
38 string secondpart = firstpart.substr(end, string::npos);
|
andrew@49
|
39 start = secondpart.find_first_not_of(" ,\t\v\n");
|
andrew@49
|
40 secondpart = secondpart.substr(start , string::npos);
|
andrew@49
|
41
|
andrew@49
|
42 end = secondpart.find_first_of(" ,\t\v\n");
|
andrew@49
|
43 secondpart = secondpart.substr(0, end);
|
andrew@49
|
44
|
andrew@49
|
45 n.difference = atof(secondpart.c_str());
|
andrew@49
|
46 n.midiTime = 0;
|
andrew@49
|
47 n.audioTime = 0;
|
andrew@49
|
48 jnmrMidiPlayerData.push_back(n);
|
andrew@49
|
49 differences.push_back(atof(secondpart.c_str()));
|
andrew@49
|
50
|
andrew@49
|
51 // printf("%s (%i) second part:%s\n", part.c_str(), count, secondpart.c_str());
|
andrew@49
|
52 float my_float;
|
andrew@49
|
53 int my_int;
|
andrew@49
|
54 // printf("reading %s\n", part.c_str());
|
andrew@49
|
55 switch (count%4) {
|
andrew@49
|
56
|
andrew@49
|
57 case 0:
|
andrew@49
|
58 my_float = atof(part.c_str());
|
andrew@49
|
59 n.midiTime = my_float;
|
andrew@49
|
60 break;
|
andrew@49
|
61
|
andrew@49
|
62 case 1:
|
andrew@49
|
63
|
andrew@49
|
64 my_float = atof(part.c_str());
|
andrew@49
|
65 // printf("count%i, DIFF %f\n", count, my_float);
|
andrew@49
|
66 n.difference = my_float;
|
andrew@49
|
67 break;
|
andrew@49
|
68 case 2:
|
andrew@49
|
69
|
andrew@49
|
70 my_float = atof(part.c_str());
|
andrew@49
|
71 n.audioTime = my_float;
|
andrew@49
|
72 break;
|
andrew@49
|
73
|
andrew@49
|
74 case 3:
|
andrew@49
|
75
|
andrew@49
|
76 my_float = atof(part.c_str());
|
andrew@49
|
77 n.midiTime = my_float;
|
andrew@49
|
78 jnmrMidiPlayerData.push_back(n);
|
andrew@49
|
79 break;
|
andrew@49
|
80
|
andrew@49
|
81
|
andrew@49
|
82 default:
|
andrew@49
|
83 break;
|
andrew@49
|
84
|
andrew@49
|
85
|
andrew@49
|
86 }
|
andrew@49
|
87 count++;
|
andrew@49
|
88
|
andrew@49
|
89 }//end while reading line
|
andrew@49
|
90 iss.clear();
|
andrew@49
|
91
|
andrew@49
|
92
|
andrew@49
|
93 }//end while
|
andrew@49
|
94
|
andrew@49
|
95 //printAnnotations();
|
andrew@50
|
96 // printf("There are %i JNMR annotations\n", (int)jnmrMidiPlayerData.size());
|
andrew@49
|
97
|
andrew@49
|
98 }
|
andrew@49
|
99
|
andrew@49
|
100 void jnmrMidiPlayerAnnotations::printAnnotations(){
|
andrew@49
|
101 //rwcAnnotations.size()
|
andrew@49
|
102 for (int i = 0;i < min(200, (int)jnmrMidiPlayerData.size());i++){
|
andrew@49
|
103 // printf("jnmrMidiPlayer audio times %f, midi played time %f \n",
|
andrew@49
|
104 // jnmrMidiPlayerData[i].audioTime,
|
andrew@49
|
105 // jnmrMidiPlayerData[i].midiTime);
|
andrew@49
|
106
|
andrew@49
|
107 printf("jnmrMidiPlayer diff %f \n",
|
andrew@49
|
108 jnmrMidiPlayerData[i].difference);
|
andrew@49
|
109 }
|
andrew@49
|
110 }
|
andrew@49
|
111
|