From fe1b68a069bab75dfc5fc92b3c4f05999a5aa48f Mon Sep 17 00:00:00 2001 From: Georg Krause Date: Sat, 31 Mar 2018 14:30:24 +0200 Subject: [PATCH 1/5] reduce magic numbers on calculating tempo limits --- src/config.hxx | 4 ++++ src/gmastertrack.cxx | 4 ++-- 2 files changed, 6 insertions(+), 2 deletions(-) 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..080c485 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); } @@ -269,7 +269,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() ); From ac6d1fc4cc24848a6896e01d5a262f1cd0ce460f Mon Sep 17 00:00:00 2001 From: Georg Krause Date: Sat, 31 Mar 2018 15:05:16 +0200 Subject: [PATCH 2/5] add sanity check for bpm value --- src/gmastertrack.cxx | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/gmastertrack.cxx b/src/gmastertrack.cxx index 080c485..b7b46ad 100644 --- a/src/gmastertrack.cxx +++ b/src/gmastertrack.cxx @@ -173,8 +173,11 @@ static void gmastertrack_button_callback(Fl_Widget *w, void *data) const char* answer = fl_input("Enter BPM value: "); 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; From fe77d3ca63e2d3d98dcfc548e202239d6b8f6ceb Mon Sep 17 00:00:00 2001 From: Georg Krause Date: Sat, 31 Mar 2018 15:22:33 +0200 Subject: [PATCH 3/5] add hint for bpm limits --- src/gmastertrack.cxx | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/gmastertrack.cxx b/src/gmastertrack.cxx index b7b46ad..5e8bb94 100644 --- a/src/gmastertrack.cxx +++ b/src/gmastertrack.cxx @@ -170,7 +170,9 @@ 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: "); + string question = "Enter BPM value (between " + to_string(MIN_TEMPO) + " and " + + to_string(MAX_TEMPO) + "):"; + const char* answer = fl_input(question.c_str()); if(answer) { int bpm = atoi(answer); From 31a6de2b2751a7c7a60c07ee4f6a05810ab648bb Mon Sep 17 00:00:00 2001 From: Georg Krause Date: Sat, 31 Mar 2018 20:37:48 +0200 Subject: [PATCH 4/5] fix formatting --- src/gmastertrack.cxx | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/gmastertrack.cxx b/src/gmastertrack.cxx index 5e8bb94..a100d7f 100644 --- a/src/gmastertrack.cxx +++ b/src/gmastertrack.cxx @@ -170,8 +170,7 @@ static void gmastertrack_button_callback(Fl_Widget *w, void *data) } else if ( strcmp( w->label(), "Tap" ) == 0 ) { if ( Fl::event_button() == FL_RIGHT_MOUSE ) { - string question = "Enter BPM value (between " + to_string(MIN_TEMPO) + " and " - + to_string(MAX_TEMPO) + "):"; + string question = "Enter BPM value (between " + to_string(MIN_TEMPO) + " and " + to_string(MAX_TEMPO) + "):"; const char* answer = fl_input(question.c_str()); if(answer) { int bpm = atoi(answer); @@ -274,7 +273,7 @@ GMasterTrack::GMasterTrack(int x, int y, int w, int h, const char* l ) : void GMasterTrack::setBpm( int b ) { bpm = b; - tempoDial.value( ( bpm - MIN_TEMPO ) / (float)(MAX_TEMPO-MIN_TEMPO) ); + tempoDial.value( ( bpm - MIN_TEMPO ) / (float)(MAX_TEMPO - MIN_TEMPO) ); std::stringstream s; s << bpm; tempoDial.copy_label( s.str().c_str() ); From 06d88ff7f5e86aaed884eaf8cf5e8e80d1d02dca Mon Sep 17 00:00:00 2001 From: Harry van Haaren Date: Sun, 1 Apr 2018 09:41:30 +0200 Subject: [PATCH 5/5] Clean up string stuff --- src/gmastertrack.cxx | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/gmastertrack.cxx b/src/gmastertrack.cxx index a100d7f..a25106a 100644 --- a/src/gmastertrack.cxx +++ b/src/gmastertrack.cxx @@ -170,8 +170,7 @@ static void gmastertrack_button_callback(Fl_Widget *w, void *data) } else if ( strcmp( w->label(), "Tap" ) == 0 ) { if ( Fl::event_button() == FL_RIGHT_MOUSE ) { - string question = "Enter BPM value (between " + to_string(MIN_TEMPO) + " and " + to_string(MAX_TEMPO) + "):"; - const char* answer = fl_input(question.c_str()); + const char* answer = fl_input("Enter BPM value (range %d and %d):", 0, MIN_TEMPO, MAX_TEMPO); if(answer) { int bpm = atoi(answer);