Mercurial > hg > precise-onset-detection
diff ofxPreciseOnsetDetectorOffline/testApp.cpp @ 2:7ec1ed0b2eb0
Added offline precise onset detection, outputting precise locations in seconds to text file
author | Andrew N Robertson <andrew.robertson@eecs.qmul.ac.uk> |
---|---|
date | Mon, 30 Dec 2013 14:08:42 +0000 |
parents | |
children | 50f62c48b421 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/ofxPreciseOnsetDetectorOffline/testApp.cpp Mon Dec 30 14:08:42 2013 +0000 @@ -0,0 +1,167 @@ +#include "testApp.h" + +//possible to just omit the drawing (uses ofxWindowRegion for the screen and ofxPlotFunction to plot beat times) + +//-------------------------------------------------------------- +void testApp::setup(){ + pov.window.setToRelativeSize(0.1, 0.1, 0.8, 0.3); + pov.pod = &preciseOnsetDetect; + +// preciseOnsetDetect.load("/Users/andrew/Documents/work/programming/MadMax/AudioFiles/AdamBetts/AdamBetss_1_Swing_Kick.wav"); +// preciseOnsetDetect.load("/Users/andrew/Music/Logic/GreenOnionsChichester/GreenOnionsChichester/Bouncing/Snare_Sontronics#08edit.aif"); + loadNewFile("/Users/andrew/Music/Logic/GreenOnionsChichester/GreenOnionsChichester/Audio Files/Ride_SM58#08.aif"); + +} + + +void testApp::loadNewFile(std::string filename){ + preciseOnsetDetect.load(filename); + preciseOnsetDetect.printOnsetLocations(); + + //windowStart = 0; + //windowEnd = preciseOnsetDetect.samples/44100.; + //windowPress = 0; + + pov.newFile(); +} + +//-------------------------------------------------------------- +void testApp::update(){ + preciseOnsetDetect.update(); + pov.update(); +} + +//-------------------------------------------------------------- +void testApp::draw(){ + + pov.draw(); + /* + //if plotting use this, else comment out + ofSetColor(ofColor::white); + window.drawBackground(); + ofSetColor(ofColor::black); + window.drawOutline(); + ofSetColor(ofColor::blue); + plotter.drawBeatStripes(preciseOnsetDetect.onsetLocations, window, windowStart, windowEnd); +*/ + +} + +//-------------------------------------------------------------- +void testApp::keyPressed(int key){ + std::string loadName; + switch (key) { + case 'r': + pov.resetWindow(); + break; + case 's': + pov.cropStart(); + break; + case 'e': + pov.cropEnd(); + break; + case 'o': + if (getFilenameFromDialogBox(&loadName)){ + printf("loading %s\n", (loadName).c_str()); + loadNewFile(loadName); + }; + + //delete testName; + break; + case ' ': + pov.togglePlay(); + break; + case OF_KEY_RETURN: + pov.soundPlay.stop(); + break; + + default: + break; + } +} + +//-------------------------------------------------------------- +void testApp::keyReleased(int key){ + +} + +//-------------------------------------------------------------- +void testApp::mouseMoved(int x, int y){ + +} + +//-------------------------------------------------------------- +void testApp::mouseDragged(int x, int y, int button){ + +} + +//-------------------------------------------------------------- +void testApp::mousePressed(int x, int y, int button){ +// if (window.tapped(x, y)){ +// windowPress = windowStart + (windowEnd-windowStart)*(x - window.x)/window.width; +// +// printf("window position is %f\n", windowPress); +// } + pov.mousePressed(x, y); + +} + +//-------------------------------------------------------------- +void testApp::mouseReleased(int x, int y, int button){ + +} + +//-------------------------------------------------------------- +void testApp::windowResized(int w, int h){ + +} + +//-------------------------------------------------------------- +void testApp::gotMessage(ofMessage msg){ + +} + +//-------------------------------------------------------------- +void testApp::dragEvent(ofDragInfo dragInfo){ + +} + + + +bool testApp::getFilenameFromDialogBox(std::string* fileNameToSave){ + //this uses a pointer structure within the loader and returns true if the dialogue box was used successfully + // first, create a string that will hold the URL + string URL; + + // // openFile(string& URL) returns 1 if a file was picked + // // returns 0 when something went wrong or the user pressed 'cancel' + // int response = ofxFileDialogOSX::openFile(URL); + // if(response){ + // // now you can use the URL + // *fileNameToSave = URL; + // //printf("\n filename is %s \n", soundFileName.c_str()); + // return true; + // } + // else { + // // soundFileName = "OPEN canceled. "; + // printf("\n open file cancelled \n"); + // return false; + // } + + // openFile(string& URL) returns 1 if a file was picked + // returns 0 when something went wrong or the user pressed 'cancel' + ofFileDialogResult fileResult = ofSystemLoadDialog("Choose audio file to load"); + + if(fileResult.bSuccess){ + // now you can use the URL + *fileNameToSave = fileResult.filePath; + //printf("\n filename is %s \n", soundFileName.c_str()); + return true; + } + else { + // soundFileName = "OPEN canceled. "; + printf("\n open file cancelled \n"); + return false; + } +} +