void _TBOX_PREFIX_App::update() { mPcmBuffer = mMonitorNode->getBuffer(); if ( !mPcmBuffer.isEmpty() ) mXtract->update( mPcmBuffer.getData() ); }
void _TBOX_PREFIX_App::drawPcmData() { if ( mPcmBuffer.isEmpty() ) return; // draw the first(left) channel in the PCM buffer // getData() returns a pointer to the first sample in the buffer uint32_t bufferLength = mPcmBuffer.getSize() / mPcmBuffer.getNumChannels(); float *leftBuffer = mPcmBuffer.getData(); int displaySize = getWindowWidth(); float scale = displaySize / (float)bufferLength; PolyLine<Vec2f> leftBufferLine; gl::color( Color::gray( 0.4f ) ); for( int i = 0; i < bufferLength; i++ ) { float x = i * scale; float y = 50 + leftBuffer[i] * 60; leftBufferLine.push_back( Vec2f( x , y) ); } gl::draw( leftBufferLine ); }