diff --git a/src/audiobuffer.hxx b/src/audiobuffer.hxx index 25c85af..aa1cd98 100644 --- a/src/audiobuffer.hxx +++ b/src/audiobuffer.hxx @@ -11,21 +11,22 @@ class AudioBuffer public: AudioBuffer() { - //ID = privateID++; + ID = privateID++; + numBeats = 0; } AudioBuffer(unsigned long size) { //ID = id; - numBeats = 4; + numBeats = 0; buffer.resize(size); } - /* + int getID() { return ID; } - */ + int getBeats() { return numBeats; @@ -48,8 +49,8 @@ class AudioBuffer } protected: - //static int privateID; - //int ID; + static int privateID; + int ID; int numBeats; diff --git a/src/jack.cxx b/src/jack.cxx index d1f0dd6..b52675d 100644 --- a/src/jack.cxx +++ b/src/jack.cxx @@ -5,12 +5,14 @@ #include #include +#include "audiobuffer.hxx" #include "eventhandler.hxx" - #include "controller/gui.hxx" using namespace std; +int AudioBuffer::privateID = 0; + extern int jackSamplerate; Jack::Jack() : diff --git a/src/looperclip.cxx b/src/looperclip.cxx index 289c157..68e02c2 100644 --- a/src/looperclip.cxx +++ b/src/looperclip.cxx @@ -22,7 +22,7 @@ LooperClip::LooperClip(int t, int s) : _queueStop = false; _queueRecord= false; - _buffer = 0; //new AudioBuffer(44100); + _buffer = new AudioBuffer(44100); _newBufferInTransit = false; _playhead = 0; @@ -65,6 +65,8 @@ void LooperClip::setRequestedBuffer( AudioBuffer* ab ) ab->getData().at(i) = _buffer->getData().at( i ); } + ab->setBeats( _buffer->getBeats() ); + EventDeallocateBuffer e( _buffer ); writeToGuiRingbuffer( &e ); } @@ -162,6 +164,13 @@ void LooperClip::bar() _recordhead = 0; } + if ( _recording ) + { + + // FIXME: assumes 4 beats in a bar + _buffer->setBeats( _buffer->getBeats() + 4 ); + } + if ( change ) { jack->getControllerUpdater()->setSceneState(track, scene, s );