andrew@0: #include "testApp.h" andrew@0: #include "stdio.h" andrew@0: //#include "aubio.h" andrew@0: #include andrew@0: #include andrew@0: #include andrew@0: #include andrew@0: andrew@0: andrew@0: const double samplingFrequency = 44100.0; andrew@0: andrew@0: //-------------------------------------------------------------- andrew@0: void testApp::setup(){ andrew@0: andrew@0: // 2 output channels, andrew@0: // 0 input channels andrew@0: // 22050 samples per second andrew@0: // 256 samples per buffer andrew@0: // 4 num buffers (latency) andrew@0: andrew@0: //nb THIS CODE WOULD BE USEFUL IF WE EVER WANTED REAL-TIME INPUT - VIA ofSoundSteam andrew@0: andrew@0: receiver.setup( PORT ); andrew@0: andrew@0: sampleRate = 44100; andrew@0: ofSoundStreamSetup(2,0,this, sampleRate,256, 4); andrew@0: andrew@0: ofSetFrameRate(30); andrew@0: andrew@1: andrew@1: andrew@1: eventMatcher.recordedTracks.loadTestAudio(); andrew@1: andrew@7: eventMatcher.setWindowDimensions(); andrew@1: //audioFilePlayer.loadAudioFile(infilename); andrew@1: } andrew@1: andrew@0: andrew@0: //-------------------------------------------------------------- andrew@0: void testApp::update(){ andrew@9: eventMatcher.updatePosition(); andrew@0: andrew@0: checkForOSCmessages(); andrew@0: andrew@0: } andrew@0: andrew@0: void testApp::checkForOSCmessages(){ andrew@0: // check for waiting messages andrew@0: while( receiver.hasWaitingMessages() ) andrew@0: { andrew@0: // get the next message andrew@0: ofxOscMessage m; andrew@0: receiver.getNextMessage( &m ); andrew@0: andrew@0: // check for mouse moved message andrew@1: if ( m.getAddress() == "/aubioPitch" ){ andrew@6: int testChannel = m.getArgAsInt32(0); andrew@6: float pitchIn = m.getArgAsFloat(1); andrew@6: int timeIn = m.getArgAsInt32(2); andrew@3: printf("\nAUBIO PITCH RECEIVED %f at time %i\n", pitchIn, timeIn); andrew@6: eventMatcher.newPitchEvent(testChannel, pitchIn, timeIn); andrew@0: } andrew@2: andrew@2: if ( m.getAddress() == "/kick" ){ andrew@6: // float pitchIn = m.getArgAsFloat(0); andrew@6: int testChannel = m.getArgAsInt32(0); andrew@6: double timeIn = m.getArgAsInt32(1); andrew@7: printf("\nKICK RECEIVED at time %f\n", timeIn); andrew@6: eventMatcher.newKickEvent(testChannel, timeIn); andrew@2: } andrew@2: andrew@2: if ( m.getAddress() == "/snare" ){ andrew@7: int testChannel = m.getArgAsInt32(0); andrew@7: double timeIn = m.getArgAsInt32(1); andrew@7: printf("\nSNARE RECEIVED at time %f\n", timeIn); andrew@7: eventMatcher.newSnareEvent(testChannel, timeIn); andrew@2: } andrew@3: andrew@3: if ( m.getAddress() == "/start" ){ andrew@3: printf("start!\n"); andrew@3: eventMatcher.startPlaying(); andrew@3: } andrew@0: } andrew@0: } andrew@0: andrew@0: //-------------------------------------------------------------- andrew@0: void testApp::draw(){ andrew@0: andrew@0: eventMatcher.draw(); andrew@0: andrew@0: // audioFilePlayer.draw(); andrew@0: andrew@0: } andrew@0: andrew@0: andrew@0: andrew@0: //-------------------------------------------------------------- andrew@0: void testApp::keyPressed (int key){ andrew@0: if (key == '-'){ andrew@0: volume -= 0.05; andrew@0: volume = MAX(volume, 0); andrew@0: } else if (key == '+'){ andrew@0: volume += 0.05; andrew@0: volume = MIN(volume, 1); andrew@0: } andrew@0: andrew@0: if (key == 'q'){ andrew@1: eventMatcher.recordedTracks.switchScreens(); andrew@0: } andrew@0: andrew@0: if (key == OF_KEY_RIGHT){ andrew@0: // audioFilePlayer.loadedAudio.setPosition(min(1.0, audioFilePlayer.loadedAudio.getPosition() + (audioFilePlayer.fileLoader.audioHolder.audioScaleSamples/(4.0*audioFilePlayer.fileLoader.audioHolder.audioVector.size()))) ); andrew@0: andrew@0: } andrew@0: andrew@0: if (key == OF_KEY_LEFT){ andrew@0: // audioFilePlayer.loadedAudio.setPosition(max(0.0, audioFilePlayer.loadedAudio.getPosition() - (audioFilePlayer.fileLoader.audioHolder.audioScaleSamples/(4.0*audioFilePlayer.fileLoader.audioHolder.audioVector.size())))); andrew@0: andrew@0: } andrew@0: andrew@0: andrew@0: if (key == ' '){ andrew@1: andrew@1: eventMatcher.recordedTracks.togglePlay(); andrew@0: } andrew@0: andrew@0: if (key == OF_KEY_RETURN){ andrew@1: andrew@0: andrew@1: eventMatcher.recordedTracks.stop(); andrew@0: } andrew@0: andrew@0: andrew@0: if (key == 'o'){ andrew@0: openNewAudioFileWithdialogBox(); andrew@0: andrew@0: } andrew@0: andrew@0: if (key == 'p'){ andrew@3: eventMatcher.bayesianStruct.posterior.printArray(); andrew@0: } andrew@0: andrew@0: andrew@0: if (key == OF_KEY_UP){ andrew@1: eventMatcher.recordedTracks.zoomOut(); andrew@1: andrew@0: } andrew@0: andrew@0: if (key == OF_KEY_DOWN){ andrew@1: eventMatcher.recordedTracks.zoomIn(); andrew@0: } andrew@0: andrew@0: } andrew@0: andrew@0: //-------------------------------------------------------------- andrew@0: void testApp::keyReleased (int key){ andrew@0: andrew@0: } andrew@0: andrew@0: andrew@0: //-------------------------------------------------------------- andrew@0: void testApp::mouseMoved(int x, int y ){ andrew@0: andrew@0: andrew@0: } andrew@0: andrew@0: //-------------------------------------------------------------- andrew@0: void testApp::mouseDragged(int x, int y, int button){ andrew@0: andrew@0: } andrew@0: andrew@0: //-------------------------------------------------------------- andrew@0: void testApp::mousePressed(int x, int y, int button){ andrew@0: andrew@0: } andrew@0: andrew@0: andrew@0: //-------------------------------------------------------------- andrew@0: void testApp::mouseReleased(int x, int y, int button){ andrew@0: andrew@0: } andrew@0: andrew@0: //-------------------------------------------------------------- andrew@0: void testApp::windowResized(int w, int h){ andrew@1: andrew@1: eventMatcher.windowResized(w, h); andrew@0: andrew@0: andrew@0: } andrew@0: //-------------------------------------------------------------- andrew@0: void testApp::audioRequested (float * output, int bufferSize, int nChannels){ andrew@0: //pan = 0.5f; andrew@0: float leftScale = 1 - pan; andrew@0: float rightScale = pan; andrew@0: andrew@0: } andrew@0: andrew@0: andrew@0: andrew@0: //-------------------------------------------------------------- andrew@0: void testApp::openNewAudioFileWithdialogBox(){ andrew@0: std::string filename; andrew@0: getFilenameFromDialogBox(&filename); andrew@0: loadNewAudio(filename); andrew@0: andrew@0: } andrew@0: andrew@0: andrew@0: void testApp::loadNewAudio(string soundFileName){ andrew@0: andrew@1: eventMatcher.recordedTracks.loadedAudioFiles[0].loadAudioFile(soundFileName); andrew@0: andrew@0: // for (int i = 0;i < numberOfAudioTracks;i++) andrew@0: // loadedAudioFiles[i].loadAudioFile(soundFileName); andrew@0: andrew@0: // audioFilePlayer.loadAudioFile(soundFileName); andrew@0: andrew@0: } andrew@0: andrew@0: andrew@0: bool testApp::getFilenameFromDialogBox(std::string* fileNameToSave){ andrew@0: //this uses a pointer structure within the loader and returns true if the dialogue box was used successfully andrew@0: // first, create a string that will hold the URL andrew@0: string URL; andrew@0: andrew@0: // openFile(string& URL) returns 1 if a file was picked andrew@0: // returns 0 when something went wrong or the user pressed 'cancel' andrew@0: int response = ofxFileDialogOSX::openFile(URL); andrew@0: if(response){ andrew@0: // now you can use the URL andrew@0: *fileNameToSave = URL; andrew@0: //printf("\n filename is %s \n", soundFileName.c_str()); andrew@0: return true; andrew@0: } andrew@0: else { andrew@0: // soundFileName = "OPEN canceled. "; andrew@0: printf("\n open file cancelled \n"); andrew@0: return false; andrew@0: } andrew@0: andrew@0: } andrew@0: andrew@0: andrew@0: andrew@0: andrew@0: