From 38ec68e924e843f1d788375cfbfdd049865b111d Mon Sep 17 00:00:00 2001 From: Roy Macdonald Date: Wed, 15 May 2024 04:09:36 +0200 Subject: [PATCH] added helper function to set circular buffer size in millisecods --- src/SoundObjects/waveformDraw.cpp | 23 ++++++++++++------ src/SoundObjects/waveformDraw.h | 4 +++- src/ofxSoundSpliter.cpp | 9 ++++++- src/ofxSoundUtils.h | 39 ++++++++++++++++++++++++++++--- 4 files changed, 63 insertions(+), 12 deletions(-) diff --git a/src/SoundObjects/waveformDraw.cpp b/src/SoundObjects/waveformDraw.cpp index 7e4aa85..b9d11b1 100644 --- a/src/SoundObjects/waveformDraw.cpp +++ b/src/SoundObjects/waveformDraw.cpp @@ -143,15 +143,15 @@ void waveformDraw_::draw(const ofRectangle& viewport){ if(!viewport.isZero() && viewport != (ofRectangle)*this){ this->set(viewport); bRenderWaveforms = true; - } + } - if(bRenderWaveforms){ - makeWaveformMesh(); - updateWaveformMesh(); - bRenderWaveforms = false; - if(bUseFbo) bUpdateFbo = true; - } + if(bRenderWaveforms){ + makeWaveformMesh(); + updateWaveformMesh(); + bRenderWaveforms = false; + if(bUseFbo) bUpdateFbo = true; + } makeGrid(); if(!bCanvasIsSetup){ @@ -428,6 +428,15 @@ size_t circularBufferWaveformDraw::getNumBuffers(){ return buffer.getNumBuffersToStore(); } +//-------------------------------------------------------------- +size_t circularBufferWaveformDraw::getBufferLengthInMs(){ + return buffer.getBufferLengthInMs(); +} +//-------------------------------------------------------------- +void circularBufferWaveformDraw::setBufferLengthInMs(size_t lengthMs){ + buffer.setBufferLengthInMs(lengthMs); +} + //-------------------------------------------------------------- void circularBufferWaveformDraw::updateWaveformMesh() { diff --git a/src/SoundObjects/waveformDraw.h b/src/SoundObjects/waveformDraw.h index fa42a18..c84e384 100644 --- a/src/SoundObjects/waveformDraw.h +++ b/src/SoundObjects/waveformDraw.h @@ -137,7 +137,9 @@ class circularBufferWaveformDraw : public waveformDraw_{ void setNumBuffers(size_t numBuffers); size_t getNumBuffers(); - + size_t getBufferLengthInMs(); + void setBufferLengthInMs(size_t lengthMs); + ///\brief Push a buffer into the cicularbuffer and render it. void pushBuffer(const ofSoundBuffer& buffer); void pushBuffer(const float* src, const size_t& srcSizePerChannel, int numChannels, int sampleRate); diff --git a/src/ofxSoundSpliter.cpp b/src/ofxSoundSpliter.cpp index 467fbb9..e3747ee 100644 --- a/src/ofxSoundSpliter.cpp +++ b/src/ofxSoundSpliter.cpp @@ -79,7 +79,14 @@ bool ofxSoundSpliter::getObjectConnectionIndex(ofxSoundObject& obj, size_t& inde bool ofxSoundSpliter::disconnectOutput(ofxSoundObject &soundObject){ if(isConnectedTo(soundObject)){ std::lock_guard lck(connectionMutex); - ofRemove(connections, [&](ofxSoundObject * o){ return o == &soundObject; }); +// ofRemove(connections, [&](ofxSoundObject * o){ return o == &soundObject; }); + + for (size_t i =0; i bNeedsAllocation; + bool bSetNumBuffers = false; // std::atomic newAllocSize; - size_t numBuffers = 100; + size_t numBuffers = 0; + size_t bufferLengthInMs = 0; size_t lastPushSize = 0;