Added menus for chorus feedback and waveform.

master
Holger Wirtz 5 years ago
parent 47fea61034
commit bf0a407059
  1. 2
      MicroMDAEPiano.ino
  2. 192
      UI.hpp
  3. 10
      config.h

@ -126,6 +126,8 @@ config_t configuration = {
ENC_CHORUS_FREQUENCY_DEFAULT, // chorus_frequency ENC_CHORUS_FREQUENCY_DEFAULT, // chorus_frequency
ENC_CHORUS_DELAY_DEFAULT, // chorus_delay ENC_CHORUS_DELAY_DEFAULT, // chorus_delay
ENC_CHORUS_INTENSITY_DEFAULT, // chorus_intensity ENC_CHORUS_INTENSITY_DEFAULT, // chorus_intensity
ENC_CHORUS_FEEDBACK_DEFAULT, // chorus_feedback
ENC_CHORUS_WAVEFORM_DEFAULT, // chorus_waveform
ENC_CHORUS_LEVEL_DEFAULT, // chorus_level ENC_CHORUS_LEVEL_DEFAULT, // chorus_level
ENC_BASS_LR_LEVEL_DEFAULT, // bass_lr_level ENC_BASS_LR_LEVEL_DEFAULT, // bass_lr_level
ENC_BASS_MONO_LEVEL_DEFAULT, // bass_mono_level ENC_BASS_MONO_LEVEL_DEFAULT, // bass_mono_level

192
UI.hpp

@ -28,7 +28,7 @@
const uint8_t MAX_VARIABLES = 5; ///< @note Default: 5 const uint8_t MAX_VARIABLES = 5; ///< @note Default: 5
/// Configures the number of available functions per line. /// Configures the number of available functions per line.
const uint8_t MAX_FUNCTIONS = 40; ///< @note Default: 8 const uint8_t MAX_FUNCTIONS = 42; ///< @note Default: 8
/// Configures the number of available lines per screen. /// Configures the number of available lines per screen.
const uint8_t MAX_LINES = 20; ///< @note Default: 12 const uint8_t MAX_LINES = 20; ///< @note Default: 12
@ -37,7 +37,7 @@
const uint8_t MAX_SCREENS = 2; ///< @note Default: 14 const uint8_t MAX_SCREENS = 2; ///< @note Default: 14
/// Configures the number of available menus per menus system. /// Configures the number of available menus per menus system.
const uint8_t MAX_MENUS = 43; ///< @note Default: 8 const uint8_t MAX_MENUS = 45; ///< @note Default: 8
*/ */
@ -56,7 +56,7 @@ int32_t encoder_value[NUM_ENCODER];
Bounce but[NUM_ENCODER] = {Bounce(BUT_L_PIN, BUT_DEBOUNCE_MS), Bounce(BUT_R_PIN, BUT_DEBOUNCE_MS)}; Bounce but[NUM_ENCODER] = {Bounce(BUT_L_PIN, BUT_DEBOUNCE_MS), Bounce(BUT_R_PIN, BUT_DEBOUNCE_MS)};
elapsedMillis back_to_main; elapsedMillis back_to_main;
#define NUM_MENUS 43 #define NUM_MENUS 45
#define MAIN 0 #define MAIN 0
/*************************************/ /*************************************/
@ -92,20 +92,22 @@ elapsedMillis back_to_main;
#define CHORUS_FREQ 28 #define CHORUS_FREQ 28
#define CHORUS_DELAY 29 #define CHORUS_DELAY 29
#define CHORUS_INTENSITY 30 #define CHORUS_INTENSITY 30
#define CHORUS_LEVEL 31 #define CHORUS_FEEDBACK 31
#define BASS_LR_LEVEL 32 #define CHORUS_WAVEFORM 32
#define BASS_MONO_LEVEL 33 #define CHORUS_LEVEL 33
#define EQ_BASS 34 #define BASS_LR_LEVEL 34
#define EQ_TREBLE 35 #define BASS_MONO_LEVEL 35
#define EQ_BASS 36
#define EQ_TREBLE 37
/*************************************/ /*************************************/
#define LOUDNESS 36 #define LOUDNESS 38
#define MIDI_CHANNEL 37 #define MIDI_CHANNEL 39
#define MIDI_SOFT_THRU 38 #define MIDI_SOFT_THRU 40
#define MAX_POLY 39 #define MAX_POLY 41
/*************************************/ /*************************************/
#define STORE_QUESTION 40 #define STORE_QUESTION 42
/*************************************/ /*************************************/
#define MASTER_VOLUME 41 #define MASTER_VOLUME 43
/*************************************/ /*************************************/
int8_t menu_position[NUM_MENUS]; int8_t menu_position[NUM_MENUS];
@ -423,7 +425,7 @@ LiquidMenu velocity_sense_menu(lcd);
/****************************************** /******************************************
EFFECTS MENU EFFECTS MENU
******************************************/ ******************************************/
#define NUM_EFFECTS_MENUS 20 #define NUM_EFFECTS_MENUS 22
const char effects_text1[] PROGMEM = "Pan/Trem Freq."; const char effects_text1[] PROGMEM = "Pan/Trem Freq.";
const char effects_text2[] PROGMEM = "Pan/Trem Level"; const char effects_text2[] PROGMEM = "Pan/Trem Level";
const char effects_text3[] PROGMEM = "Overdrive"; const char effects_text3[] PROGMEM = "Overdrive";
@ -439,11 +441,13 @@ const char effects_text12[] PROGMEM = "Rev. Level";
const char effects_text13[] PROGMEM = "Chorus Freq."; const char effects_text13[] PROGMEM = "Chorus Freq.";
const char effects_text14[] PROGMEM = "Chorus Delay"; const char effects_text14[] PROGMEM = "Chorus Delay";
const char effects_text15[] PROGMEM = "Chorus Intens."; const char effects_text15[] PROGMEM = "Chorus Intens.";
const char effects_text16[] PROGMEM = "Chorus Level"; const char effects_text16[] PROGMEM = "Chorus FB";
const char effects_text17[] PROGMEM = "Bass LR Level"; const char effects_text17[] PROGMEM = "Chorus Wave";
const char effects_text18[] PROGMEM = "Bass M Level"; const char effects_text18[] PROGMEM = "Chorus Level";
const char effects_text19[] PROGMEM = "EQ Bass"; const char effects_text19[] PROGMEM = "Bass LR Level";
const char effects_text20[] PROGMEM = "EQ Treble"; const char effects_text20[] PROGMEM = "Bass M Level";
const char effects_text21[] PROGMEM = "EQ Bass";
const char effects_text22[] PROGMEM = "EQ Treble";
LiquidLine effects_line1(1, 0, effects_text1); LiquidLine effects_line1(1, 0, effects_text1);
LiquidLine effects_line2(1, 1, effects_text2); LiquidLine effects_line2(1, 1, effects_text2);
LiquidLine effects_line3(1, 1, effects_text3); LiquidLine effects_line3(1, 1, effects_text3);
@ -464,6 +468,8 @@ LiquidLine effects_line17(1, 1, effects_text17);
LiquidLine effects_line18(1, 1, effects_text18); LiquidLine effects_line18(1, 1, effects_text18);
LiquidLine effects_line19(1, 1, effects_text19); LiquidLine effects_line19(1, 1, effects_text19);
LiquidLine effects_line20(1, 1, effects_text20); LiquidLine effects_line20(1, 1, effects_text20);
LiquidLine effects_line21(1, 1, effects_text21);
LiquidLine effects_line22(1, 1, effects_text22);
LiquidScreen effects_screen; LiquidScreen effects_screen;
LiquidMenu effects_menu(lcd); LiquidMenu effects_menu(lcd);
@ -619,6 +625,26 @@ LiquidLine chorus_intensity_line2(1, 1, configuration.chorus_intensity);
LiquidScreen chorus_intensity_screen; LiquidScreen chorus_intensity_screen;
LiquidMenu chorus_intensity_menu(lcd); LiquidMenu chorus_intensity_menu(lcd);
/******************************************
CHORUS_FEEDBACK MENU
******************************************/
#define NUM_CHORUS_FEEDBACK_MENUS 1
const char chorus_feedback_text1[] PROGMEM = "Chorus FB";
LiquidLine chorus_feedback_line1(1, 0, chorus_feedback_text1);
LiquidLine chorus_feedback_line2(1, 1, configuration.chorus_feedback);
LiquidScreen chorus_feedback_screen;
LiquidMenu chorus_feedback_menu(lcd);
/******************************************
CHORUS_WAVEFORM MENU
******************************************/
#define NUM_CHORUS_WAVEFORM_MENUS 1
const char chorus_waveform_text1[] PROGMEM = "Chorus Wave";
LiquidLine chorus_waveform_line1(1, 0, chorus_waveform_text1);
LiquidLine chorus_waveform_line2(1, 1, configuration.chorus_waveform);
LiquidScreen chorus_waveform_screen;
LiquidMenu chorus_waveform_menu(lcd);
/****************************************** /******************************************
CHORUS_LEVEL MENU CHORUS_LEVEL MENU
******************************************/ ******************************************/
@ -1124,6 +1150,34 @@ void callback_chorus_intensity_function(void)
menu_system.update(); menu_system.update();
} }
void callback_chorus_feedback_function(void)
{
#ifdef SHOW_DEBUG
Serial.println(F("callback_chorus_feedback_function"));
#endif
Serial.println("D-1");delay(100);
menu_system.change_menu(chorus_feedback_menu);
Serial.println("D0");delay(100);
menu_position[EFFECTS] = encoder_value[RIGHT_ENCODER];
encoder_value[RIGHT_ENCODER] = configuration.chorus_feedback;
enc[RIGHT_ENCODER].write(configuration.chorus_feedback, ENC_CHORUS_FEEDBACK_MIN, ENC_CHORUS_FEEDBACK_MAX);
Serial.println("D1");delay(100);
menu_system.update();
Serial.println("D2");
}
void callback_chorus_waveform_function(void)
{
#ifdef SHOW_DEBUG
Serial.println(F("callback_chorus_waveform_function"));
#endif
menu_system.change_menu(chorus_waveform_menu);
menu_position[EFFECTS] = encoder_value[RIGHT_ENCODER];
encoder_value[RIGHT_ENCODER] = configuration.chorus_waveform;
enc[RIGHT_ENCODER].write(configuration.chorus_waveform, ENC_CHORUS_WAVEFORM_MIN, ENC_CHORUS_WAVEFORM_MAX);
menu_system.update();
}
void callback_chorus_level_function(void) void callback_chorus_level_function(void)
{ {
#ifdef SHOW_DEBUG #ifdef SHOW_DEBUG
@ -1509,6 +1563,8 @@ void init_menus(void)
effects_screen.add_line(effects_line18); effects_screen.add_line(effects_line18);
effects_screen.add_line(effects_line19); effects_screen.add_line(effects_line19);
effects_screen.add_line(effects_line20); effects_screen.add_line(effects_line20);
effects_screen.add_line(effects_line21);
effects_screen.add_line(effects_line22);
effects_screen.set_displayLineCount(2); effects_screen.set_displayLineCount(2);
effects_menu.add_screen(effects_screen); effects_menu.add_screen(effects_screen);
@ -1527,11 +1583,13 @@ void init_menus(void)
effects_line13.attach_function(CHORUS_FREQ, callback_chorus_frequency_function); effects_line13.attach_function(CHORUS_FREQ, callback_chorus_frequency_function);
effects_line14.attach_function(CHORUS_DELAY, callback_chorus_delay_function); effects_line14.attach_function(CHORUS_DELAY, callback_chorus_delay_function);
effects_line15.attach_function(CHORUS_INTENSITY, callback_chorus_intensity_function); effects_line15.attach_function(CHORUS_INTENSITY, callback_chorus_intensity_function);
effects_line16.attach_function(CHORUS_LEVEL, callback_chorus_level_function); effects_line16.attach_function(CHORUS_FEEDBACK, callback_chorus_feedback_function);
effects_line17.attach_function(BASS_LR_LEVEL, callback_bass_lr_level_function); effects_line17.attach_function(CHORUS_WAVEFORM, callback_chorus_waveform_function);
effects_line18.attach_function(BASS_MONO_LEVEL, callback_bass_mono_level_function); effects_line18.attach_function(CHORUS_LEVEL, callback_chorus_level_function);
effects_line19.attach_function(EQ_BASS, callback_eq_bass_function); effects_line19.attach_function(BASS_LR_LEVEL, callback_bass_lr_level_function);
effects_line20.attach_function(EQ_TREBLE, callback_eq_treble_function); effects_line20.attach_function(BASS_MONO_LEVEL, callback_bass_mono_level_function);
effects_line21.attach_function(EQ_BASS, callback_eq_bass_function);
effects_line22.attach_function(EQ_TREBLE, callback_eq_treble_function);
// setup pan_trem_frequency menu // setup pan_trem_frequency menu
pan_trem_frequency_screen.add_line(pan_trem_frequency_line1); pan_trem_frequency_screen.add_line(pan_trem_frequency_line1);
@ -1623,6 +1681,18 @@ void init_menus(void)
chorus_intensity_screen.set_displayLineCount(2); chorus_intensity_screen.set_displayLineCount(2);
chorus_intensity_menu.add_screen(chorus_intensity_screen); chorus_intensity_menu.add_screen(chorus_intensity_screen);
// setup chorus_feedback menu
chorus_feedback_screen.add_line(chorus_feedback_line1);
chorus_feedback_screen.add_line(chorus_feedback_line2);
chorus_feedback_screen.set_displayLineCount(2);
chorus_feedback_menu.add_screen(chorus_feedback_screen);
// setup chorus_waveform menu
chorus_waveform_screen.add_line(chorus_waveform_line1);
chorus_waveform_screen.add_line(chorus_waveform_line2);
chorus_waveform_screen.set_displayLineCount(2);
chorus_waveform_menu.add_screen(chorus_waveform_screen);
// setup chorus_level menu // setup chorus_level menu
chorus_level_screen.add_line(chorus_level_line1); chorus_level_screen.add_line(chorus_level_line1);
chorus_level_screen.add_line(chorus_level_line2); chorus_level_screen.add_line(chorus_level_line2);
@ -1746,6 +1816,8 @@ void init_menus(void)
menu_system.add_menu(chorus_frequency_menu); menu_system.add_menu(chorus_frequency_menu);
menu_system.add_menu(chorus_delay_menu); menu_system.add_menu(chorus_delay_menu);
menu_system.add_menu(chorus_intensity_menu); menu_system.add_menu(chorus_intensity_menu);
menu_system.add_menu(chorus_feedback_menu);
menu_system.add_menu(chorus_waveform_menu);
menu_system.add_menu(chorus_level_menu); menu_system.add_menu(chorus_level_menu);
menu_system.add_menu(bass_lr_level_menu); menu_system.add_menu(bass_lr_level_menu);
menu_system.add_menu(bass_mono_level_menu); menu_system.add_menu(bass_mono_level_menu);
@ -2061,6 +2133,38 @@ void set_chorus_intensity(uint8_t value)
configuration.chorus_intensity = value; configuration.chorus_intensity = value;
} }
void set_chorus_feedback(uint8_t value)
{
#ifdef SHOW_DEBUG
Serial.print(F("Set CHORUS_FEEDBACK "));
Serial.println(value);
#endif
modchorus_r.feedback(mapfloat(float(value), ENC_CHORUS_FEEDBACK_MIN, ENC_CHORUS_FEEDBACK_MAX, 0.0, 1.0));
modchorus_l.feedback(mapfloat(float(value), ENC_CHORUS_FEEDBACK_MIN, ENC_CHORUS_FEEDBACK_MAX, 0.0, 1.0));
configuration.chorus_feedback = value;
}
void set_chorus_waveform(uint8_t value)
{
#ifdef SHOW_DEBUG
Serial.print(F("Set CHORUS_WAVEFORM "));
//Serial.println(value);
Serial.println("=> Setting CHORUS_WAVEFORM not yet available!");
#endif
switch (value)
{
case 1:
//modulator.waveform(WAVEFORM_TRIANGLE);
break;
case 2:
//modulator.waveform(WAVEFORM_SINE);
default:
//modulator.waveform(WAVEFORM_TRIANGLE);
break;
}
configuration.chorus_waveform = value;
}
void set_chorus_level(uint8_t value) void set_chorus_level(uint8_t value)
{ {
#ifdef SHOW_DEBUG #ifdef SHOW_DEBUG
@ -2189,6 +2293,8 @@ void set_complete_configuration(void)
set_chorus_frequency(configuration.chorus_frequency); set_chorus_frequency(configuration.chorus_frequency);
set_chorus_delay(configuration.chorus_delay); set_chorus_delay(configuration.chorus_delay);
set_chorus_intensity(configuration.chorus_intensity); set_chorus_intensity(configuration.chorus_intensity);
set_chorus_feedback(configuration.chorus_feedback);
set_chorus_waveform(configuration.chorus_waveform);
set_chorus_level(configuration.chorus_level); set_chorus_level(configuration.chorus_level);
set_bass_lr_level(configuration.bass_lr_level); set_bass_lr_level(configuration.bass_lr_level);
set_bass_mono_level(configuration.bass_mono_level); set_bass_mono_level(configuration.bass_mono_level);
@ -2433,6 +2539,15 @@ void handle_ui(void)
menu_system.update(); menu_system.update();
} }
} }
else if (menu_system.get_currentScreen() == &chorus_delay_screen)
{
if (encoder_tmp != encoder_value[RIGHT_ENCODER])
{
// value up/down
set_chorus_delay(encoder_tmp);
menu_system.update();
}
}
else if (menu_system.get_currentScreen() == &chorus_intensity_screen) else if (menu_system.get_currentScreen() == &chorus_intensity_screen)
{ {
if (encoder_tmp != encoder_value[RIGHT_ENCODER]) if (encoder_tmp != encoder_value[RIGHT_ENCODER])
@ -2442,12 +2557,21 @@ void handle_ui(void)
menu_system.update(); menu_system.update();
} }
} }
else if (menu_system.get_currentScreen() == &chorus_delay_screen) else if (menu_system.get_currentScreen() == &chorus_feedback_screen)
{ {
if (encoder_tmp != encoder_value[RIGHT_ENCODER]) if (encoder_tmp != encoder_value[RIGHT_ENCODER])
{ {
// value up/down // value up/down
set_chorus_delay(encoder_tmp); set_chorus_feedback(encoder_tmp);
menu_system.update();
}
}
else if (menu_system.get_currentScreen() == &chorus_waveform_screen)
{
if (encoder_tmp != encoder_value[RIGHT_ENCODER])
{
// value up/down
set_chorus_waveform(encoder_tmp);
menu_system.update(); menu_system.update();
} }
} }
@ -2886,6 +3010,20 @@ void handle_ui(void)
#endif #endif
goto_effects_menu(CHORUS_INTENSITY); goto_effects_menu(CHORUS_INTENSITY);
} }
else if (menu_system.get_currentScreen() == &chorus_feedback_screen) // chorus_feedback menu
{
#ifdef SHOW_DEBUG
Serial.println(F("from chorus_feedback to effects"));
#endif
goto_effects_menu(CHORUS_FEEDBACK);
}
else if (menu_system.get_currentScreen() == &chorus_waveform_screen) // chorus_waveform menu
{
#ifdef SHOW_DEBUG
Serial.println(F("from chorus_waveform to effects"));
#endif
goto_effects_menu(CHORUS_WAVEFORM);
}
else if (menu_system.get_currentScreen() == &chorus_level_screen) // chorus_level menu else if (menu_system.get_currentScreen() == &chorus_level_screen) // chorus_level menu
{ {
#ifdef SHOW_DEBUG #ifdef SHOW_DEBUG

@ -238,6 +238,14 @@
#define ENC_CHORUS_INTENSITY_MAX 100 #define ENC_CHORUS_INTENSITY_MAX 100
#define ENC_CHORUS_INTENSITY_DEFAULT 50 #define ENC_CHORUS_INTENSITY_DEFAULT 50
// //
#define ENC_CHORUS_FEEDBACK_MIN 0
#define ENC_CHORUS_FEEDBACK_MAX 10
#define ENC_CHORUS_FEEDBACK_DEFAULT 0
//
#define ENC_CHORUS_WAVEFORM_MIN 1
#define ENC_CHORUS_WAVEFORM_MAX 2
#define ENC_CHORUS_WAVEFORM_DEFAULT 1
//
#define ENC_CHORUS_LEVEL_MIN 0 #define ENC_CHORUS_LEVEL_MIN 0
#define ENC_CHORUS_LEVEL_MAX 99 #define ENC_CHORUS_LEVEL_MAX 99
#define ENC_CHORUS_LEVEL_DEFAULT 50 #define ENC_CHORUS_LEVEL_DEFAULT 50
@ -328,6 +336,8 @@ struct config_t {
uint8_t chorus_frequency; uint8_t chorus_frequency;
uint8_t chorus_delay; uint8_t chorus_delay;
uint8_t chorus_intensity; uint8_t chorus_intensity;
uint8_t chorus_feedback;
uint8_t chorus_waveform;
uint8_t chorus_level; uint8_t chorus_level;
uint8_t bass_lr_level; uint8_t bass_lr_level;
uint8_t bass_mono_level; uint8_t bass_mono_level;

Loading…
Cancel
Save