annotate matchAnnotationSrc/jnmrMidiPlayerAnnotations.cpp @ 52:13194a9dca77 tip

Added exporting of image and text data
author Andrew N Robertson <andrew.robertson@eecs.qmul.ac.uk>
date Tue, 17 Jul 2012 22:13:10 +0100
parents 158f5f38e9d3
children
rev   line source
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