// Runs update logic void KissFileSampleApp::update() { // Check if track is playing and has a PCM buffer available if (mTrack->isPlaying() && mTrack->isPcmBuffering()) { // Get buffer mBuffer = mTrack->getPcmBuffer(); if (mBuffer && mBuffer->getInterleavedData()) { // Get sample count uint32_t mSampleCount = mBuffer->getInterleavedData()->mSampleCount; if (mSampleCount > 0) { // Initialize analyzer, if needed if (!mFftInit) { mFftInit = true; mFft.setDataSize(mSampleCount); } // Analyze data if (mBuffer->getInterleavedData()->mData != 0) mFft.setData(mBuffer->getInterleavedData()->mData); } } } }
//************************************************************************* void BeatDetectorApp::NextFile() { roto = 0; if(mTrack && mTrack->isPlaying()) { mTrack->enablePcmBuffering(false); mTrack->stop(); } #ifdef WIN32 time_t now; time(&now); int time_int = (int)now; #else timeval now; gettimeofday(&now, NULL); int time_int = now.tv_sec; #endif Rand r; r.seed(time_int); int rand_file = r.nextInt(m_FileList.size()); path my_path = m_FileList[rand_file].path(); m_CurrentFile = my_path.string(); if(!write_frames) { mAudioSource = audio::load(m_CurrentFile); mTrack = audio::Output::addTrack(mAudioSource, false); mTrack->enablePcmBuffering(true); mTrack->play(); } //rot_inc = r.nextFloat(1.5f, 30.0f); }
//************************************************************************* void BeatDetectorApp::keyDown(KeyEvent event) { switch(event.getChar()) { case 'n': NextFile(); break; case 'f': setFullScreen(!isFullScreen()); break; case 'p': if(mTrack) { if(mTrack->isPlaying()) { mTrack->stop(); } else { mTrack->play(); } } break; } }
//************************************************************************* void BeatDetectorApp::update() { if(write_frames) { if(curr_sample < p_sample->m_SampleCount) { // Initialize analyzer, if needed if (!mFftInit) { Init(samples_per_frame); } mFft.setData(p_sample->mp_Buffer + (curr_sample)); curr_sample += samples_per_frame; CSoundAnalyzer::Get().ProcessData(mFft.getAmplitude(), mFft.getData()); } else { shutdown(); } } else { // Check if track is playing and has a PCM buffer available if (mTrack->isPlaying() && mTrack->isPcmBuffering()) { // Get buffer mBuffer = mTrack->getPcmBuffer(); if (mBuffer && mBuffer->getInterleavedData()) { // Get sample count uint32_t mSampleCount = mBuffer->getChannelData(CHANNEL_FRONT_LEFT)->mSampleCount; if (mSampleCount > 0) { // Initialize analyzer, if needed if (!mFftInit) { Init(samples_per_frame); } // Analyze data if (mBuffer->getChannelData(CHANNEL_FRONT_LEFT)->mData != 0) mFft.setData(mBuffer->getChannelData(CHANNEL_FRONT_LEFT)->mData); CSoundAnalyzer::Get().ProcessData(mFft.getAmplitude(), mFft.getData()); } } } } }
void AudioAnalysisSampleApp::keyDown( KeyEvent e ) { if( e.getChar() == 'p' ) { ( mTrack1->isPlaying() ) ? mTrack1->stop() : mTrack1->play(); } }