void SamplePlayerNodeTestApp::fileDrop( FileDropEvent event ) { const fs::path &filePath = event.getFile( 0 ); CI_LOG_V( "File dropped: " << filePath ); setSourceFile( loadFile( filePath ) ); mSamplePlayerNode->seek( 0 ); CI_LOG_V( "output samplerate: " << mSourceFile->getSampleRate() ); auto bufferPlayer = dynamic_pointer_cast<audio::BufferPlayerNode>( mSamplePlayerNode ); if( bufferPlayer ) { bufferPlayer->loadBuffer( mSourceFile ); mWaveformPlot.load( bufferPlayer->getBuffer(), getWindowBounds() ); } else { auto filePlayer = dynamic_pointer_cast<audio::FilePlayerNode>( mSamplePlayerNode ); CI_ASSERT_MSG( filePlayer, "expected sample player to be either BufferPlayerNode or FilePlayerNode" ); filePlayer->setSourceFile( mSourceFile ); } mLoopBeginSlider.mMax = mLoopEndSlider.mMax = (float)mSamplePlayerNode->getNumSeconds(); CI_LOG_V( "loaded and set new source buffer, channels: " << mSourceFile->getNumChannels() << ", frames: " << mSourceFile->getNumFrames() ); PRINT_GRAPH( audio::master() ); }
void SamplePlayerNodeTestApp::seek( size_t xPos ) { mSamplePlayerNode->seek( mSamplePlayerNode->getNumFrames() * xPos / getWindowWidth() ); }