Disable Free Mode if >= 1 Clip is recorded

main
Georg Krause 2019-06-15 10:24:13 +02:00
parent 74e5ab65bd
commit d210216c72
9 changed files with 61 additions and 11 deletions

View File

@ -896,6 +896,7 @@ public:
class EventFreeRecordMode : public EventBase { class EventFreeRecordMode : public EventBase {
public: public:
static const char *prettyName; static const char *prettyName;
bool active;
bool enable; bool enable;
const char *name() { const char *name() {
@ -911,10 +912,17 @@ public:
} }
EventFreeRecordMode() { EventFreeRecordMode() {
active = true;
enable = true; enable = true;
} }
EventFreeRecordMode(bool e) { EventFreeRecordMode(bool a) {
active = a;
enable = true;
}
EventFreeRecordMode ( bool a, bool e ) {
active = a;
enable = e; enable = e;
} }
}; };

View File

@ -294,7 +294,9 @@ void handleDspEvents()
jack_ringbuffer_read(rbToDsp, jack_ringbuffer_read(rbToDsp,
(char *)&e, (char *)&e,
sizeof(EventFreeRecordMode)); sizeof(EventFreeRecordMode));
jack->setFreeRecMode(e.enable); if(jack->getRecordedClips() == 0)
jack->setFreeRecMode (
e.active );
} }
break; break;
} }

View File

@ -143,12 +143,12 @@ void handleGuiEvents()
sizeof(EventFreeRecordMode)); sizeof(EventFreeRecordMode));
GMasterTrack *gm = GMasterTrack *gm =
gui->getMasterTrack(); gui->getMasterTrack();
gm->setFreeRecMode( gm->setFreeRecMode ( e.active );
e.enable); gm->metronomeEnable ( !e.active );
gm->metronomeEnable(!e.enable); gm->tapEnable ( !e.active );
gm->tapEnable(!e.enable); gm->beatLightEnable ( !e.active );
gm->beatLightEnable(!e.enable); gm->tempoDialEnable ( !e.active );
gm->tempoDialEnable(!e.enable); gm->enableFreeRecMode ( e.enable );
} }
break; break;
} }

View File

@ -422,6 +422,14 @@ void GMasterTrack::setFreeRecMode(bool e) {
freeRec.value(e); freeRec.value(e);
} }
void GMasterTrack::enableFreeRecMode ( bool e ) {
if ( e ) {
freeRec.activate ();
} else {
freeRec.deactivate ();
}
}
float GMasterTrack::getBpm() float GMasterTrack::getBpm()
{ {
return bpm; return bpm;

View File

@ -66,6 +66,7 @@ public:
void tapEnable(bool b); void tapEnable(bool b);
void beatLightEnable(bool b); void beatLightEnable(bool b);
void tempoDialEnable(bool b); void tempoDialEnable(bool b);
void enableFreeRecMode ( bool e );
Avtk::Volume *getInputVolume(); Avtk::Volume *getInputVolume();
Avtk::Volume* getVolume(); Avtk::Volume* getVolume();

View File

@ -222,7 +222,7 @@ void GridLogic::pressed( int track, int scene )
void GridLogic::clear( int track, int scene ) void GridLogic::clear( int track, int scene )
{ {
jack->getLooper( track )->getClip( scene )->init(); jack->getLooper( track )->getClip( scene )->reset();
} }
void GridLogic::released( int track, int scene ) void GridLogic::released( int track, int scene )

View File

@ -311,6 +311,7 @@ Jack::Jack( std::string name ) :
// call into the GUI, telling it to register default controllers // call into the GUI, telling it to register default controllers
gui->setupMidiControllers(); gui->setupMidiControllers();
recordedClips = 0;
} }
Jack::~Jack() Jack::~Jack()
@ -792,4 +793,21 @@ void Jack::setFreeRecMode(bool e)
writeToGuiRingbuffer(&ev); writeToGuiRingbuffer(&ev);
if(e) if(e)
getLogic()->metronomeEnable(false); getLogic()->metronomeEnable(false);
} }
void Jack::addRecordedClip () {
recordedClips++;
cout << "Recorded Clips: " << recordedClips << "\n";
if ( recordedClips > 0 ) {
EventFreeRecordMode e = EventFreeRecordMode ( false, false );
writeToGuiRingbuffer ( &e );
}
};
void Jack::subRecordedClip () {
recordedClips--;
cout << "Recorded Clips: " << recordedClips << "\n";
if ( recordedClips == 0 ) {
EventFreeRecordMode e = EventFreeRecordMode ( false, true );
writeToGuiRingbuffer ( &e );
}
};

View File

@ -149,6 +149,14 @@ public:
JackSendReturn *getJackSendReturn(int t); JackSendReturn *getJackSendReturn(int t);
float smoothing_value; float smoothing_value;
// Functions to count number of clips
int getRecordedClips () {
return recordedClips;
};
void addRecordedClip ();
void subRecordedClip ();
private: private:
int lastnframes; int lastnframes;
jack_client_t* client; jack_client_t* client;
@ -163,6 +171,7 @@ private:
int clipLength; int clipLength;
bool freeRecMode; bool freeRecMode;
unsigned int recordedClips;
vector<Looper*> loopers; vector<Looper*> loopers;
vector<JackSendReturn*> tracksendreturns; vector<JackSendReturn*> tracksendreturns;

View File

@ -94,7 +94,10 @@ void LooperClip::save()
void LooperClip::reset() void LooperClip::reset()
{ {
init(); if(_loaded) {
jack->subRecordedClip ();
}
init ();
} }
/// loads a sample: eg from disk, unloading current sample if necessary /// loads a sample: eg from disk, unloading current sample if necessary
@ -374,6 +377,7 @@ void LooperClip::setRecording()
} }
jack->getControllerUpdater()->setSceneState(track, scene, getState()); jack->getControllerUpdater()->setSceneState(track, scene, getState());
jack->addRecordedClip ();
} }
void LooperClip::setPlaying() void LooperClip::setPlaying()