Venetian@7: /* Venetian@7: * PreciseOnsetDetector.cpp Venetian@7: * ofxPreciseOnsetDetectionOffline Venetian@7: * Venetian@7: * Created by Andrew N Robertson on 11/04/2014. Venetian@7: * Copyright 2014 QMUL. All rights reserved. Venetian@7: * Venetian@7: */ Venetian@7: Venetian@7: #include "PreciseOnsetDetector.h" Venetian@7: Venetian@7: Venetian@7: Venetian@7: PreciseOnsetDetector::PreciseOnsetDetector(){ Venetian@7: pov.window.setToRelativeSize(0.1, 0.1, 0.8, 0.3); Venetian@7: pov.pod = &pod;//set up pointer if we want to visualise the onsets in a window Venetian@7: Venetian@7: // std::string fileName; Venetian@7: // fileName = "/Users/andrewrobertson/Music/audiowavs/Islamey/BachBWV846-2.wav"; Venetian@7: // loadNewFile(fileName); Venetian@7: } Venetian@7: Venetian@7: PreciseOnsetDetector::~PreciseOnsetDetector(){ Venetian@7: Venetian@7: } Venetian@7: Venetian@7: void PreciseOnsetDetector::loadNewFile(std::string filename){ Venetian@7: Venetian@7: pod.initialise(); Venetian@7: pod.load(filename); Venetian@7: pod.printOnsetLocations(); Venetian@7: Venetian@7: pov.newFile();//resets info in visualiser - could use pointer?? Venetian@7: } Venetian@7: Venetian@7: void PreciseOnsetDetector::update(){ Venetian@7: pod.update(); Venetian@7: pov.update(); Venetian@7: } Venetian@7: Venetian@7: void PreciseOnsetDetector::draw(){ Venetian@7: pov.draw(); Venetian@7: } Venetian@7: Venetian@7: bool PreciseOnsetDetector::getFilenameFromDialogBox(std::string* fileNameToSave){ Venetian@7: //this uses a pointer structure within the loader and returns true if the dialogue box was used successfully Venetian@7: // first, create a string that will hold the URL Venetian@7: string URL; Venetian@7: Venetian@7: ofFileDialogResult fileResult = ofSystemLoadDialog("Choose audio file to load"); Venetian@7: Venetian@7: if(fileResult.bSuccess){ Venetian@7: // now you can use the URL Venetian@7: *fileNameToSave = fileResult.filePath; Venetian@7: //printf("\n filename is %s \n", soundFileName.c_str()); Venetian@7: return true; Venetian@7: } Venetian@7: else { Venetian@7: // soundFileName = "OPEN canceled. "; Venetian@7: printf("\n open file cancelled \n"); Venetian@7: return false; Venetian@7: } Venetian@7: } Venetian@7: Venetian@7: void PreciseOnsetDetector::keyPressed(int key){ Venetian@7: std::string loadName; Venetian@7: switch (key) { Venetian@7: case 'r': Venetian@7: pov.resetWindow(); Venetian@7: break; Venetian@7: case 's': Venetian@7: pov.cropStart(); Venetian@7: pod.cropStartTo(pov.windowStart); Venetian@7: break; Venetian@7: case 'e': Venetian@7: pov.cropEnd(); Venetian@7: break; Venetian@7: case 'w': Venetian@7: printf("Exporting between %f and %f\n", pov.windowStart, pov.windowEnd); Venetian@7: pod.exportOnsetTimes(pov.windowStart, pov.windowEnd); Venetian@7: break; Venetian@7: case 'x': Venetian@7: printf("Exporting between %f and %f\n", 0., pov.lengthSeconds()); Venetian@7: pod.exportOnsetTimes(0, pov.lengthSeconds()); Venetian@7: break; Venetian@7: Venetian@7: case 'o': Venetian@7: if (getFilenameFromDialogBox(&loadName)){ Venetian@7: printf("loading %s\n", (loadName).c_str()); Venetian@7: loadNewFile(loadName); Venetian@7: }; Venetian@7: Venetian@7: //delete testName; Venetian@7: break; Venetian@7: case ' ': Venetian@7: pov.togglePlay(); Venetian@7: break; Venetian@7: case OF_KEY_RETURN: Venetian@7: pov.stop(); Venetian@7: Venetian@7: break; Venetian@7: Venetian@7: case OF_KEY_UP: case 'u': Venetian@7: pov.zoomIn(); Venetian@7: break; Venetian@7: case OF_KEY_DOWN: Venetian@7: pov.zoomOut(); Venetian@7: break; Venetian@7: case OF_KEY_RIGHT: Venetian@7: pov.scrollRight(); Venetian@7: break; Venetian@7: case OF_KEY_LEFT: Venetian@7: pov.scrollLeft(); Venetian@7: break; Venetian@7: Venetian@7: default: Venetian@7: break; Venetian@7: } Venetian@7: } Venetian@7: Venetian@7: void PreciseOnsetDetector::mousePressed(int x, int y, int button){ Venetian@7: Venetian@7: pov.mousePressed(x, y); Venetian@7: Venetian@7: }