MCPcopy Create free account
hub / github.com/cinder/Cinder / drawAudioBuffer

Function drawAudioBuffer

samples/_audio/common/AudioDrawUtils.cpp:37–67  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

35using namespace ci;
36
37void drawAudioBuffer( const audio::Buffer &buffer, const Rectf &bounds, bool drawFrame, const ci::ColorA &color )
38{
39 gl::ScopedGlslProg glslScope( getStockShader( gl::ShaderDef().color() ) );
40
41 gl::color( color );
42
43 const float waveHeight = bounds.getHeight() / (float)buffer.getNumChannels();
44 const float xScale = bounds.getWidth() / (float)buffer.getNumFrames();
45
46 float yOffset = bounds.y1;
47 for( size_t ch = 0; ch < buffer.getNumChannels(); ch++ ) {
48 PolyLine2f waveform;
49 const float *channel = buffer.getChannel( ch );
50 float x = bounds.x1;
51 for( size_t i = 0; i < buffer.getNumFrames(); i++ ) {
52 x += xScale;
53 float y = ( 1 - ( channel[i] * 0.5f + 0.5f ) ) * waveHeight + yOffset;
54 waveform.push_back( vec2( x, y ) );
55 }
56
57 if( ! waveform.getPoints().empty() )
58 gl::draw( waveform );
59
60 yOffset += waveHeight;
61 }
62
63 if( drawFrame ) {
64 gl::color( color.r, color.g, color.b, color.a * 0.6f );
65 gl::drawStrokedRect( bounds );
66 }
67}
68
69// ----------------------------------------------------------------------------------------------------
70// MARK: - WaveformPlot

Callers 9

drawMethod · 0.85
drawMethod · 0.85
drawMethod · 0.85
drawMethod · 0.85
drawMethod · 0.85
drawMethod · 0.85
drawMethod · 0.85
drawMethod · 0.85
drawMethod · 0.85

Calls 12

drawStrokedRectFunction · 0.85
colorMethod · 0.80
getChannelMethod · 0.80
ShaderDefClass · 0.50
colorFunction · 0.50
drawFunction · 0.50
getHeightMethod · 0.45
getNumChannelsMethod · 0.45
getWidthMethod · 0.45
getNumFramesMethod · 0.45
push_backMethod · 0.45
emptyMethod · 0.45

Tested by 6

drawMethod · 0.68
drawMethod · 0.68
drawMethod · 0.68
drawMethod · 0.68
drawMethod · 0.68
drawMethod · 0.68