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 {
public:
static const char *prettyName;
bool active;
bool enable;
const char *name() {
@ -911,10 +912,17 @@ public:
}
EventFreeRecordMode() {
active = true;
enable = true;
}
EventFreeRecordMode(bool e) {
EventFreeRecordMode(bool a) {
active = a;
enable = true;
}
EventFreeRecordMode ( bool a, bool e ) {
active = a;
enable = e;
}
};

View File

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

View File

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

View File

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

View File

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

View File

@ -222,7 +222,7 @@ void GridLogic::pressed( 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 )

View File

@ -311,6 +311,7 @@ Jack::Jack( std::string name ) :
// call into the GUI, telling it to register default controllers
gui->setupMidiControllers();
recordedClips = 0;
}
Jack::~Jack()
@ -792,4 +793,21 @@ void Jack::setFreeRecMode(bool e)
writeToGuiRingbuffer(&ev);
if(e)
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);
float smoothing_value;
// Functions to count number of clips
int getRecordedClips () {
return recordedClips;
};
void addRecordedClip ();
void subRecordedClip ();
private:
int lastnframes;
jack_client_t* client;
@ -163,6 +171,7 @@ private:
int clipLength;
bool freeRecMode;
unsigned int recordedClips;
vector<Looper*> loopers;
vector<JackSendReturn*> tracksendreturns;

View File

@ -94,7 +94,10 @@ void LooperClip::save()
void LooperClip::reset()
{
init();
if(_loaded) {
jack->subRecordedClip ();
}
init ();
}
/// 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->addRecordedClip ();
}
void LooperClip::setPlaying()