annotate ofxPreciseOnsetDetectorOffline/PreciseOnsetDetector.cpp @ 8:184a7c232049 tip

changed files since updating computer
author Venetian
date Thu, 14 Aug 2014 17:53:57 +0100
parents b1c13e8bec26
children
rev   line source
Venetian@7 1 /*
Venetian@7 2 * PreciseOnsetDetector.cpp
Venetian@7 3 * ofxPreciseOnsetDetectionOffline
Venetian@7 4 *
Venetian@7 5 * Created by Andrew N Robertson on 11/04/2014.
Venetian@7 6 * Copyright 2014 QMUL. All rights reserved.
Venetian@7 7 *
Venetian@7 8 */
Venetian@7 9
Venetian@7 10 #include "PreciseOnsetDetector.h"
Venetian@7 11
Venetian@7 12
Venetian@7 13
Venetian@7 14 PreciseOnsetDetector::PreciseOnsetDetector(){
Venetian@7 15 pov.window.setToRelativeSize(0.1, 0.1, 0.8, 0.3);
Venetian@7 16 pov.pod = &pod;//set up pointer if we want to visualise the onsets in a window
Venetian@7 17
Venetian@7 18 // std::string fileName;
Venetian@7 19 // fileName = "/Users/andrewrobertson/Music/audiowavs/Islamey/BachBWV846-2.wav";
Venetian@7 20 // loadNewFile(fileName);
Venetian@7 21 }
Venetian@7 22
Venetian@7 23 PreciseOnsetDetector::~PreciseOnsetDetector(){
Venetian@7 24
Venetian@7 25 }
Venetian@7 26
Venetian@7 27 void PreciseOnsetDetector::loadNewFile(std::string filename){
Venetian@7 28
Venetian@7 29 pod.initialise();
Venetian@7 30 pod.load(filename);
Venetian@7 31 pod.printOnsetLocations();
Venetian@7 32
Venetian@7 33 pov.newFile();//resets info in visualiser - could use pointer??
Venetian@7 34 }
Venetian@7 35
Venetian@7 36 void PreciseOnsetDetector::update(){
Venetian@7 37 pod.update();
Venetian@7 38 pov.update();
Venetian@7 39 }
Venetian@7 40
Venetian@7 41 void PreciseOnsetDetector::draw(){
Venetian@7 42 pov.draw();
Venetian@7 43 }
Venetian@7 44
Venetian@7 45 bool PreciseOnsetDetector::getFilenameFromDialogBox(std::string* fileNameToSave){
Venetian@7 46 //this uses a pointer structure within the loader and returns true if the dialogue box was used successfully
Venetian@7 47 // first, create a string that will hold the URL
Venetian@7 48 string URL;
Venetian@7 49
Venetian@7 50 ofFileDialogResult fileResult = ofSystemLoadDialog("Choose audio file to load");
Venetian@7 51
Venetian@7 52 if(fileResult.bSuccess){
Venetian@7 53 // now you can use the URL
Venetian@7 54 *fileNameToSave = fileResult.filePath;
Venetian@7 55 //printf("\n filename is %s \n", soundFileName.c_str());
Venetian@7 56 return true;
Venetian@7 57 }
Venetian@7 58 else {
Venetian@7 59 // soundFileName = "OPEN canceled. ";
Venetian@7 60 printf("\n open file cancelled \n");
Venetian@7 61 return false;
Venetian@7 62 }
Venetian@7 63 }
Venetian@7 64
Venetian@7 65 void PreciseOnsetDetector::keyPressed(int key){
Venetian@7 66 std::string loadName;
Venetian@7 67 switch (key) {
Venetian@7 68 case 'r':
Venetian@7 69 pov.resetWindow();
Venetian@7 70 break;
Venetian@7 71 case 's':
Venetian@7 72 pov.cropStart();
Venetian@7 73 pod.cropStartTo(pov.windowStart);
Venetian@7 74 break;
Venetian@7 75 case 'e':
Venetian@7 76 pov.cropEnd();
Venetian@7 77 break;
Venetian@7 78 case 'w':
Venetian@7 79 printf("Exporting between %f and %f\n", pov.windowStart, pov.windowEnd);
Venetian@7 80 pod.exportOnsetTimes(pov.windowStart, pov.windowEnd);
Venetian@7 81 break;
Venetian@7 82 case 'x':
Venetian@7 83 printf("Exporting between %f and %f\n", 0., pov.lengthSeconds());
Venetian@7 84 pod.exportOnsetTimes(0, pov.lengthSeconds());
Venetian@7 85 break;
Venetian@7 86
Venetian@7 87 case 'o':
Venetian@7 88 if (getFilenameFromDialogBox(&loadName)){
Venetian@7 89 printf("loading %s\n", (loadName).c_str());
Venetian@7 90 loadNewFile(loadName);
Venetian@7 91 };
Venetian@7 92
Venetian@7 93 //delete testName;
Venetian@7 94 break;
Venetian@7 95 case ' ':
Venetian@7 96 pov.togglePlay();
Venetian@7 97 break;
Venetian@7 98 case OF_KEY_RETURN:
Venetian@7 99 pov.stop();
Venetian@7 100
Venetian@7 101 break;
Venetian@7 102
Venetian@7 103 case OF_KEY_UP: case 'u':
Venetian@7 104 pov.zoomIn();
Venetian@7 105 break;
Venetian@7 106 case OF_KEY_DOWN:
Venetian@7 107 pov.zoomOut();
Venetian@7 108 break;
Venetian@7 109 case OF_KEY_RIGHT:
Venetian@7 110 pov.scrollRight();
Venetian@7 111 break;
Venetian@7 112 case OF_KEY_LEFT:
Venetian@7 113 pov.scrollLeft();
Venetian@7 114 break;
Venetian@7 115
Venetian@7 116 default:
Venetian@7 117 break;
Venetian@7 118 }
Venetian@7 119 }
Venetian@7 120
Venetian@7 121 void PreciseOnsetDetector::mousePressed(int x, int y, int button){
Venetian@7 122
Venetian@7 123 pov.mousePressed(x, y);
Venetian@7 124
Venetian@7 125 }