diff --git a/src/config.hxx b/src/config.hxx index bc035ab..b238204 100644 --- a/src/config.hxx +++ b/src/config.hxx @@ -51,6 +51,10 @@ #define NSCENES 10 #define MAX_BUFFER_SIZE 1024 +/// TEMPO +#define MIN_TEMPO 60 +#define MAX_TEMPO 220 + #define CONTROLLERS_PREALLOC 20 // nsamples remaining during recording before Looper requests larger buffer diff --git a/src/gmastertrack.cxx b/src/gmastertrack.cxx index dfbe255..a25106a 100644 --- a/src/gmastertrack.cxx +++ b/src/gmastertrack.cxx @@ -23,7 +23,7 @@ static void gmastertrack_tempoDial_callback(Fl_Widget *w, void *data) { Avtk::Dial* b = (Avtk::Dial*)w; - float bpm = (int)(b->value() * 160.f + 60); + float bpm = (int)(b->value() * (float)(MAX_TEMPO - MIN_TEMPO) + MIN_TEMPO); if(std::fabs(bpm-round(bpm))) { LUPPP_WARN("%f",bpm); } @@ -170,11 +170,14 @@ static void gmastertrack_button_callback(Fl_Widget *w, void *data) } else if ( strcmp( w->label(), "Tap" ) == 0 ) { if ( Fl::event_button() == FL_RIGHT_MOUSE ) { - const char* answer = fl_input("Enter BPM value: "); + const char* answer = fl_input("Enter BPM value (range %d and %d):", 0, MIN_TEMPO, MAX_TEMPO); if(answer) { int bpm = atoi(answer); - EventTimeBPM e = EventTimeBPM( bpm ); - writeToDspRingbuffer( &e ); + + if ( bpm >= MIN_TEMPO && bpm <= MAX_TEMPO) { + EventTimeBPM e = EventTimeBPM( bpm ); + writeToDspRingbuffer( &e ); + } } } else { EventTimeTempoTap e; @@ -269,7 +272,7 @@ GMasterTrack::GMasterTrack(int x, int y, int w, int h, const char* l ) : void GMasterTrack::setBpm( int b ) { bpm = b; - tempoDial.value( ( bpm - 60 ) / 160.f ); + tempoDial.value( ( bpm - MIN_TEMPO ) / (float)(MAX_TEMPO - MIN_TEMPO) ); std::stringstream s; s << bpm; tempoDial.copy_label( s.str().c_str() );