andrew@2: #include "testApp.h" andrew@2: andrew@2: //possible to just omit the drawing (uses ofxWindowRegion for the screen and ofxPlotFunction to plot beat times) andrew@2: andrew@2: //-------------------------------------------------------------- andrew@2: void testApp::setup(){ andrew@2: pov.window.setToRelativeSize(0.1, 0.1, 0.8, 0.3); andrew@3: pov.pod = &preciseOnsetDetect;//set up pointer if we want to visualise the onsets in a window andrew@2: andrew@2: // preciseOnsetDetect.load("/Users/andrew/Documents/work/programming/MadMax/AudioFiles/AdamBetts/AdamBetss_1_Swing_Kick.wav"); andrew@2: // preciseOnsetDetect.load("/Users/andrew/Music/Logic/GreenOnionsChichester/GreenOnionsChichester/Bouncing/Snare_Sontronics#08edit.aif"); andrew@2: loadNewFile("/Users/andrew/Music/Logic/GreenOnionsChichester/GreenOnionsChichester/Audio Files/Ride_SM58#08.aif"); andrew@2: andrew@2: } andrew@2: andrew@2: andrew@2: void testApp::loadNewFile(std::string filename){ andrew@2: preciseOnsetDetect.load(filename); andrew@2: preciseOnsetDetect.printOnsetLocations(); andrew@2: andrew@2: pov.newFile(); andrew@2: } andrew@2: andrew@2: //-------------------------------------------------------------- andrew@2: void testApp::update(){ andrew@2: preciseOnsetDetect.update(); andrew@2: pov.update(); andrew@2: } andrew@2: andrew@2: //-------------------------------------------------------------- andrew@2: void testApp::draw(){ andrew@2: andrew@2: pov.draw(); andrew@3: andrew@2: } andrew@2: andrew@3: andrew@2: //-------------------------------------------------------------- andrew@2: void testApp::keyPressed(int key){ andrew@2: std::string loadName; andrew@2: switch (key) { andrew@2: case 'r': andrew@2: pov.resetWindow(); andrew@2: break; andrew@2: case 's': andrew@2: pov.cropStart(); andrew@2: break; andrew@2: case 'e': andrew@2: pov.cropEnd(); andrew@2: break; andrew@3: case 'x': andrew@3: printf("Exporting between %f and %f\n", pov.windowStart, pov.windowEnd); andrew@3: preciseOnsetDetect.exportOnsetTimes(pov.windowStart, pov.windowEnd); andrew@3: break; andrew@2: case 'o': andrew@2: if (getFilenameFromDialogBox(&loadName)){ andrew@2: printf("loading %s\n", (loadName).c_str()); andrew@2: loadNewFile(loadName); andrew@2: }; andrew@2: andrew@2: //delete testName; andrew@2: break; andrew@2: case ' ': andrew@2: pov.togglePlay(); andrew@2: break; andrew@2: case OF_KEY_RETURN: andrew@2: pov.soundPlay.stop(); andrew@2: break; andrew@2: andrew@2: default: andrew@2: break; andrew@2: } andrew@2: } andrew@2: andrew@2: //-------------------------------------------------------------- andrew@2: void testApp::keyReleased(int key){ andrew@2: andrew@2: } andrew@2: andrew@2: //-------------------------------------------------------------- andrew@2: void testApp::mouseMoved(int x, int y){ andrew@2: andrew@2: } andrew@2: andrew@2: //-------------------------------------------------------------- andrew@2: void testApp::mouseDragged(int x, int y, int button){ andrew@2: andrew@2: } andrew@2: andrew@2: //-------------------------------------------------------------- andrew@2: void testApp::mousePressed(int x, int y, int button){ andrew@2: // if (window.tapped(x, y)){ andrew@2: // windowPress = windowStart + (windowEnd-windowStart)*(x - window.x)/window.width; andrew@2: // andrew@2: // printf("window position is %f\n", windowPress); andrew@2: // } andrew@2: pov.mousePressed(x, y); andrew@2: andrew@2: } andrew@2: andrew@2: //-------------------------------------------------------------- andrew@2: void testApp::mouseReleased(int x, int y, int button){ andrew@2: andrew@2: } andrew@2: andrew@2: //-------------------------------------------------------------- andrew@2: void testApp::windowResized(int w, int h){ andrew@2: andrew@2: } andrew@2: andrew@2: //-------------------------------------------------------------- andrew@2: void testApp::gotMessage(ofMessage msg){ andrew@2: andrew@2: } andrew@2: andrew@2: //-------------------------------------------------------------- andrew@2: void testApp::dragEvent(ofDragInfo dragInfo){ andrew@2: andrew@2: } andrew@2: andrew@2: andrew@2: andrew@2: bool testApp::getFilenameFromDialogBox(std::string* fileNameToSave){ andrew@2: //this uses a pointer structure within the loader and returns true if the dialogue box was used successfully andrew@2: // first, create a string that will hold the URL andrew@2: string URL; andrew@2: andrew@2: // // openFile(string& URL) returns 1 if a file was picked andrew@2: // // returns 0 when something went wrong or the user pressed 'cancel' andrew@2: // int response = ofxFileDialogOSX::openFile(URL); andrew@2: // if(response){ andrew@2: // // now you can use the URL andrew@2: // *fileNameToSave = URL; andrew@2: // //printf("\n filename is %s \n", soundFileName.c_str()); andrew@2: // return true; andrew@2: // } andrew@2: // else { andrew@2: // // soundFileName = "OPEN canceled. "; andrew@2: // printf("\n open file cancelled \n"); andrew@2: // return false; andrew@2: // } andrew@2: andrew@2: // openFile(string& URL) returns 1 if a file was picked andrew@2: // returns 0 when something went wrong or the user pressed 'cancel' andrew@2: ofFileDialogResult fileResult = ofSystemLoadDialog("Choose audio file to load"); andrew@2: andrew@2: if(fileResult.bSuccess){ andrew@2: // now you can use the URL andrew@2: *fileNameToSave = fileResult.filePath; andrew@2: //printf("\n filename is %s \n", soundFileName.c_str()); andrew@2: return true; andrew@2: } andrew@2: else { andrew@2: // soundFileName = "OPEN canceled. "; andrew@2: printf("\n open file cancelled \n"); andrew@2: return false; andrew@2: } andrew@2: } andrew@2: