From 3c5421de844521f5e7499f2a5280f4000d65ac45 Mon Sep 17 00:00:00 2001 From: Holger Wirtz Date: Tue, 31 Mar 2020 15:41:17 +0200 Subject: [PATCH] Refurbished menu structure and handling. --- UI.hpp | 434 +++++++++++++++++++++++++++++++++++++++++++++++-------- config.h | 2 +- 2 files changed, 373 insertions(+), 63 deletions(-) diff --git a/UI.hpp b/UI.hpp index 3ac9444..cac5d2b 100644 --- a/UI.hpp +++ b/UI.hpp @@ -565,7 +565,13 @@ void lcdml_menu_control(void) Serial.println(F("ENC-L down")); #endif encoderDir[ENC_L].Down(true); - LCDML.BT_down(); + if (LCDML.FUNC_getID() < 255) + LCDML.BT_down(); + else + { + last_menu = 255; + LCDML.OTHER_jumpToFunc(UI_func_volume); + } } ENCODER[ENC_L].write(g_LCDML_CONTROL_Encoder_position[ENC_L] + 4); } @@ -587,7 +593,13 @@ void lcdml_menu_control(void) Serial.println(F("ENC-L up")); #endif encoderDir[ENC_L].Up(true); - LCDML.BT_up(); + if (LCDML.FUNC_getID() < 255) + LCDML.BT_up(); + else + { + last_menu = 255; + LCDML.OTHER_jumpToFunc(UI_func_volume); + } } ENCODER[ENC_L].write(g_LCDML_CONTROL_Encoder_position[ENC_L] - 4); } @@ -786,7 +798,11 @@ void UI_func_reverb_roomsize(uint8_t param) if (LCDML.FUNC_loop()) // ****** LOOP ********* { - if ((LCDML.BT_checkDown() && encoderDir[ENC_R].Down()) || (LCDML.BT_checkUp() && encoderDir[ENC_R].Up())) + if ((LCDML.BT_checkDown() && encoderDir[ENC_L].Down()) || (LCDML.BT_checkUp() && encoderDir[ENC_L].Up())) + { + LCDML.OTHER_jumpToFunc(UI_func_volume); + } + else if ((LCDML.BT_checkDown() && encoderDir[ENC_R].Down()) || (LCDML.BT_checkUp() && encoderDir[ENC_R].Up())) { if (LCDML.BT_checkDown()) configuration.reverb_roomsize = constrain(configuration.reverb_roomsize + ENCODER[ENC_R].speed(), REVERB_ROOMSIZE_MIN, REVERB_ROOMSIZE_MAX); @@ -805,7 +821,7 @@ void UI_func_reverb_roomsize(uint8_t param) lcd_special_chars(SCROLLBAR); eeprom_write(); encoderDir[ENC_R].reset(); - last_menu = 255; + } } @@ -814,6 +830,7 @@ void UI_func_reverb_damping(uint8_t param) if (LCDML.FUNC_setup()) // ****** SETUP ********* { encoderDir[ENC_R].reset(); + last_menu = LCDML.FUNC_getID(); lcd_special_chars(BLOCKBAR); lcd_display_bar_int("Reverb Damp.", configuration.reverb_damping, 1.0, REVERB_DAMPING_MIN, REVERB_DAMPING_MAX, 3, false, false, false, true); @@ -821,7 +838,11 @@ void UI_func_reverb_damping(uint8_t param) if (LCDML.FUNC_loop()) // ****** LOOP ********* { - if ((LCDML.BT_checkDown() && encoderDir[ENC_R].Down()) || (LCDML.BT_checkUp() && encoderDir[ENC_R].Up())) + if ((LCDML.BT_checkDown() && encoderDir[ENC_L].Down()) || (LCDML.BT_checkUp() && encoderDir[ENC_L].Up())) + { + LCDML.OTHER_jumpToFunc(UI_func_volume); + } + else if ((LCDML.BT_checkDown() && encoderDir[ENC_R].Down()) || (LCDML.BT_checkUp() && encoderDir[ENC_R].Up())) { if (LCDML.BT_checkDown()) configuration.reverb_damping = constrain(configuration.reverb_damping + ENCODER[ENC_R].speed(), REVERB_DAMPING_MIN, REVERB_DAMPING_MAX); @@ -840,6 +861,7 @@ void UI_func_reverb_damping(uint8_t param) lcd_special_chars(SCROLLBAR); eeprom_write(); encoderDir[ENC_R].reset(); + } } @@ -853,6 +875,7 @@ void UI_func_reverb_send(uint8_t param) if (LCDML.FUNC_setup()) // ****** SETUP ********* { encoderDir[ENC_R].reset(); + last_menu = LCDML.FUNC_getID(); lcd_special_chars(BLOCKBAR); lcd_display_bar_int("Reverb Send", configuration.dexed[instance_id].reverb_send, 1.0, REVERB_SEND_MIN, REVERB_SEND_MAX, 3, false, false, false, true); @@ -860,7 +883,11 @@ void UI_func_reverb_send(uint8_t param) if (LCDML.FUNC_loop()) // ****** LOOP ********* { - if ((LCDML.BT_checkDown() && encoderDir[ENC_R].Down()) || (LCDML.BT_checkUp() && encoderDir[ENC_R].Up())) + if ((LCDML.BT_checkDown() && encoderDir[ENC_L].Down()) || (LCDML.BT_checkUp() && encoderDir[ENC_L].Up())) + { + LCDML.OTHER_jumpToFunc(UI_func_volume); + } + else if ((LCDML.BT_checkDown() && encoderDir[ENC_R].Down()) || (LCDML.BT_checkUp() && encoderDir[ENC_R].Up())) { if (LCDML.BT_checkDown()) configuration.dexed[instance_id].reverb_send = constrain(configuration.dexed[instance_id].reverb_send + ENCODER[ENC_R].speed(), REVERB_SEND_MIN, REVERB_SEND_MAX); @@ -879,6 +906,7 @@ void UI_func_reverb_send(uint8_t param) lcd_special_chars(SCROLLBAR); eeprom_write(); encoderDir[ENC_R].reset(); + } } @@ -887,6 +915,7 @@ void UI_func_reverb_level(uint8_t param) if (LCDML.FUNC_setup()) // ****** SETUP ********* { encoderDir[ENC_R].reset(); + last_menu = LCDML.FUNC_getID(); lcd_special_chars(BLOCKBAR); lcd_display_bar_int("Reverb Level", configuration.reverb_level, 1.0, REVERB_LEVEL_MIN, REVERB_LEVEL_MAX, 3, false, false, false, true); @@ -894,7 +923,11 @@ void UI_func_reverb_level(uint8_t param) if (LCDML.FUNC_loop()) // ****** LOOP ********* { - if ((LCDML.BT_checkDown() && encoderDir[ENC_R].Down()) || (LCDML.BT_checkUp() && encoderDir[ENC_R].Up())) + if ((LCDML.BT_checkDown() && encoderDir[ENC_L].Down()) || (LCDML.BT_checkUp() && encoderDir[ENC_L].Up())) + { + LCDML.OTHER_jumpToFunc(UI_func_volume); + } + else if ((LCDML.BT_checkDown() && encoderDir[ENC_R].Down()) || (LCDML.BT_checkUp() && encoderDir[ENC_R].Up())) { if (LCDML.BT_checkDown()) configuration.reverb_level = constrain(configuration.reverb_level + ENCODER[ENC_R].speed(), REVERB_LEVEL_MIN, REVERB_LEVEL_MAX); @@ -913,6 +946,7 @@ void UI_func_reverb_level(uint8_t param) lcd_special_chars(SCROLLBAR); eeprom_write(); encoderDir[ENC_R].reset(); + } } @@ -921,6 +955,7 @@ void UI_func_chorus_frequency(uint8_t param) if (LCDML.FUNC_setup()) // ****** SETUP ********* { encoderDir[ENC_R].reset(); + last_menu = LCDML.FUNC_getID(); lcd_special_chars(BLOCKBAR); lcd_display_bar_float("Chorus Frq.", configuration.chorus_frequency, 0.1, CHORUS_FREQUENCY_MIN, CHORUS_FREQUENCY_MAX, 2, 1, false, false, false, true); @@ -928,7 +963,11 @@ void UI_func_chorus_frequency(uint8_t param) if (LCDML.FUNC_loop()) // ****** LOOP ********* { - if ((LCDML.BT_checkDown() && encoderDir[ENC_R].Down()) || (LCDML.BT_checkUp() && encoderDir[ENC_R].Up())) + if ((LCDML.BT_checkDown() && encoderDir[ENC_L].Down()) || (LCDML.BT_checkUp() && encoderDir[ENC_L].Up())) + { + LCDML.OTHER_jumpToFunc(UI_func_volume); + } + else if ((LCDML.BT_checkDown() && encoderDir[ENC_R].Down()) || (LCDML.BT_checkUp() && encoderDir[ENC_R].Up())) { if (LCDML.BT_checkDown()) configuration.chorus_frequency = constrain(configuration.chorus_frequency + ENCODER[ENC_R].speed(), CHORUS_FREQUENCY_MIN, CHORUS_FREQUENCY_MAX); @@ -946,6 +985,7 @@ void UI_func_chorus_frequency(uint8_t param) lcd_special_chars(SCROLLBAR); eeprom_write(); encoderDir[ENC_R].reset(); + } } @@ -954,6 +994,7 @@ void UI_func_chorus_waveform(uint8_t param) if (LCDML.FUNC_setup()) // ****** SETUP ********* { encoderDir[ENC_R].reset(); + last_menu = LCDML.FUNC_getID(); lcd.setCursor(0, 0); lcd.print(F("Chorus Waveform")); @@ -961,9 +1002,13 @@ void UI_func_chorus_waveform(uint8_t param) if (LCDML.FUNC_loop()) // ****** LOOP ********* { - if (LCDML.BT_checkDown()) + if ((LCDML.BT_checkDown() && encoderDir[ENC_L].Down()) || (LCDML.BT_checkUp() && encoderDir[ENC_L].Up())) + { + LCDML.OTHER_jumpToFunc(UI_func_volume); + } + else if (LCDML.BT_checkDown() && encoderDir[ENC_R].Down()) configuration.chorus_waveform = constrain(configuration.chorus_waveform + 1, CHORUS_WAVEFORM_MIN, CHORUS_WAVEFORM_MAX); - else if (LCDML.BT_checkUp()) + else if (LCDML.BT_checkUp() && encoderDir[ENC_R].Up()) configuration.chorus_waveform = constrain(configuration.chorus_waveform - 1, CHORUS_WAVEFORM_MIN, CHORUS_WAVEFORM_MAX); lcd.setCursor(0, 1); @@ -989,6 +1034,7 @@ void UI_func_chorus_waveform(uint8_t param) // you can here reset some global vars or do nothing eeprom_write(); encoderDir[ENC_R].reset(); + } } @@ -997,6 +1043,7 @@ void UI_func_chorus_depth(uint8_t param) if (LCDML.FUNC_setup()) // ****** SETUP ********* { encoderDir[ENC_R].reset(); + last_menu = LCDML.FUNC_getID(); lcd_special_chars(BLOCKBAR); lcd_display_bar_int("Chorus Dpt.", configuration.chorus_depth, 1.0, CHORUS_DEPTH_MIN, CHORUS_DEPTH_MAX, 3, false, false, false, true); @@ -1004,7 +1051,11 @@ void UI_func_chorus_depth(uint8_t param) if (LCDML.FUNC_loop()) // ****** LOOP ********* { - if ((LCDML.BT_checkDown() && encoderDir[ENC_R].Down()) || (LCDML.BT_checkUp() && encoderDir[ENC_R].Up())) + if ((LCDML.BT_checkDown() && encoderDir[ENC_L].Down()) || (LCDML.BT_checkUp() && encoderDir[ENC_L].Up())) + { + LCDML.OTHER_jumpToFunc(UI_func_volume); + } + else if ((LCDML.BT_checkDown() && encoderDir[ENC_R].Down()) || (LCDML.BT_checkUp() && encoderDir[ENC_R].Up())) { if (LCDML.BT_checkDown()) configuration.chorus_depth = constrain(configuration.chorus_depth + ENCODER[ENC_R].speed(), CHORUS_DEPTH_MIN, CHORUS_DEPTH_MAX); @@ -1022,6 +1073,7 @@ void UI_func_chorus_depth(uint8_t param) lcd_special_chars(SCROLLBAR); eeprom_write(); encoderDir[ENC_R].reset(); + } } @@ -1035,6 +1087,7 @@ void UI_func_chorus_send(uint8_t param) if (LCDML.FUNC_setup()) // ****** SETUP ********* { encoderDir[ENC_R].reset(); + last_menu = LCDML.FUNC_getID(); lcd_special_chars(BLOCKBAR); lcd_display_bar_int("Chorus Send", configuration.dexed[instance_id].chorus_send, 1.0, CHORUS_SEND_MIN, CHORUS_SEND_MAX, 3, false, false, false, true); @@ -1042,7 +1095,11 @@ void UI_func_chorus_send(uint8_t param) if (LCDML.FUNC_loop()) // ****** LOOP ********* { - if ((LCDML.BT_checkDown() && encoderDir[ENC_R].Down()) || (LCDML.BT_checkUp() && encoderDir[ENC_R].Up())) + if ((LCDML.BT_checkDown() && encoderDir[ENC_L].Down()) || (LCDML.BT_checkUp() && encoderDir[ENC_L].Up())) + { + LCDML.OTHER_jumpToFunc(UI_func_volume); + } + else if ((LCDML.BT_checkDown() && encoderDir[ENC_R].Down()) || (LCDML.BT_checkUp() && encoderDir[ENC_R].Up())) { if (LCDML.BT_checkDown()) configuration.dexed[instance_id].chorus_send = constrain(configuration.dexed[instance_id].chorus_send + ENCODER[ENC_R].speed(), CHORUS_SEND_MIN, CHORUS_SEND_MAX); @@ -1061,6 +1118,7 @@ void UI_func_chorus_send(uint8_t param) lcd_special_chars(SCROLLBAR); eeprom_write(); encoderDir[ENC_R].reset(); + } } @@ -1069,6 +1127,7 @@ void UI_func_chorus_level(uint8_t param) if (LCDML.FUNC_setup()) // ****** SETUP ********* { encoderDir[ENC_R].reset(); + last_menu = LCDML.FUNC_getID(); lcd_special_chars(BLOCKBAR); lcd_display_bar_int("Chorus Lvl.", configuration.chorus_level, 1.0, CHORUS_LEVEL_MIN, CHORUS_LEVEL_MAX, 3, false, false, false, true); @@ -1076,7 +1135,11 @@ void UI_func_chorus_level(uint8_t param) if (LCDML.FUNC_loop()) // ****** LOOP ********* { - if ((LCDML.BT_checkDown() && encoderDir[ENC_R].Down()) || (LCDML.BT_checkUp() && encoderDir[ENC_R].Up())) + if ((LCDML.BT_checkDown() && encoderDir[ENC_L].Down()) || (LCDML.BT_checkUp() && encoderDir[ENC_L].Up())) + { + LCDML.OTHER_jumpToFunc(UI_func_volume); + } + else if ((LCDML.BT_checkDown() && encoderDir[ENC_R].Down()) || (LCDML.BT_checkUp() && encoderDir[ENC_R].Up())) { if (LCDML.BT_checkDown()) configuration.chorus_level = constrain(configuration.chorus_level + ENCODER[ENC_R].speed(), CHORUS_LEVEL_MIN, CHORUS_LEVEL_MAX); @@ -1095,6 +1158,7 @@ void UI_func_chorus_level(uint8_t param) lcd_special_chars(SCROLLBAR); eeprom_write(); encoderDir[ENC_R].reset(); + } } @@ -1103,6 +1167,7 @@ void UI_func_delay_time(uint8_t param) if (LCDML.FUNC_setup()) // ****** SETUP ********* { encoderDir[ENC_R].reset(); + last_menu = LCDML.FUNC_getID(); lcd_special_chars(BLOCKBAR); lcd_display_bar_int("Delay Time", configuration.delay_time, 10.0, DELAY_TIME_MIN, DELAY_TIME_MAX, 3, false, false, false, true); @@ -1110,7 +1175,11 @@ void UI_func_delay_time(uint8_t param) if (LCDML.FUNC_loop()) // ****** LOOP ********* { - if ((LCDML.BT_checkDown() && encoderDir[ENC_R].Down()) || (LCDML.BT_checkUp() && encoderDir[ENC_R].Up())) + if ((LCDML.BT_checkDown() && encoderDir[ENC_L].Down()) || (LCDML.BT_checkUp() && encoderDir[ENC_L].Up())) + { + LCDML.OTHER_jumpToFunc(UI_func_volume); + } + else if ((LCDML.BT_checkDown() && encoderDir[ENC_R].Down()) || (LCDML.BT_checkUp() && encoderDir[ENC_R].Up())) { if (LCDML.BT_checkDown()) configuration.delay_time = constrain(configuration.delay_time + ENCODER[ENC_R].speed(), DELAY_TIME_MIN, DELAY_TIME_MAX); @@ -1129,6 +1198,7 @@ void UI_func_delay_time(uint8_t param) lcd_special_chars(SCROLLBAR); eeprom_write(); encoderDir[ENC_R].reset(); + } } @@ -1137,6 +1207,7 @@ void UI_func_delay_feedback(uint8_t param) if (LCDML.FUNC_setup()) // ****** SETUP ********* { encoderDir[ENC_R].reset(); + last_menu = LCDML.FUNC_getID(); lcd_special_chars(BLOCKBAR); lcd_display_bar_int("Delay Feedb.", configuration.delay_feedback, 1.0, DELAY_FEEDBACK_MIN, DELAY_FEEDBACK_MAX, 3, false, false, false, true); @@ -1144,7 +1215,11 @@ void UI_func_delay_feedback(uint8_t param) if (LCDML.FUNC_loop()) // ****** LOOP ********* { - if ((LCDML.BT_checkDown() && encoderDir[ENC_R].Down()) || (LCDML.BT_checkUp() && encoderDir[ENC_R].Up())) + if ((LCDML.BT_checkDown() && encoderDir[ENC_L].Down()) || (LCDML.BT_checkUp() && encoderDir[ENC_L].Up())) + { + LCDML.OTHER_jumpToFunc(UI_func_volume); + } + else if ((LCDML.BT_checkDown() && encoderDir[ENC_R].Down()) || (LCDML.BT_checkUp() && encoderDir[ENC_R].Up())) { if (LCDML.BT_checkDown()) configuration.delay_feedback = constrain(configuration.delay_feedback + ENCODER[ENC_R].speed(), DELAY_FEEDBACK_MIN, DELAY_FEEDBACK_MAX); @@ -1164,6 +1239,7 @@ void UI_func_delay_feedback(uint8_t param) lcd_special_chars(SCROLLBAR); eeprom_write(); encoderDir[ENC_R].reset(); + } } @@ -1177,6 +1253,7 @@ void UI_func_delay_send(uint8_t param) if (LCDML.FUNC_setup()) // ****** SETUP ********* { encoderDir[ENC_R].reset(); + last_menu = LCDML.FUNC_getID(); lcd_special_chars(BLOCKBAR); lcd_display_bar_int("Delay Send", configuration.dexed[instance_id].delay_send, 1.0, DELAY_SEND_MIN, DELAY_SEND_MAX, 3, false, false, false, true); @@ -1184,7 +1261,11 @@ void UI_func_delay_send(uint8_t param) if (LCDML.FUNC_loop()) // ****** LOOP ********* { - if ((LCDML.BT_checkDown() && encoderDir[ENC_R].Down()) || (LCDML.BT_checkUp() && encoderDir[ENC_R].Up())) + if ((LCDML.BT_checkDown() && encoderDir[ENC_L].Down()) || (LCDML.BT_checkUp() && encoderDir[ENC_L].Up())) + { + LCDML.OTHER_jumpToFunc(UI_func_volume); + } + else if ((LCDML.BT_checkDown() && encoderDir[ENC_R].Down()) || (LCDML.BT_checkUp() && encoderDir[ENC_R].Up())) { if (LCDML.BT_checkDown()) configuration.dexed[instance_id].delay_send = constrain(configuration.dexed[instance_id].delay_send + ENCODER[ENC_R].speed(), DELAY_SEND_MIN, DELAY_SEND_MAX); @@ -1203,6 +1284,7 @@ void UI_func_delay_send(uint8_t param) lcd_special_chars(SCROLLBAR); eeprom_write(); encoderDir[ENC_R].reset(); + } } @@ -1211,6 +1293,7 @@ void UI_func_delay_level(uint8_t param) if (LCDML.FUNC_setup()) // ****** SETUP ********* { encoderDir[ENC_R].reset(); + last_menu = LCDML.FUNC_getID(); lcd_special_chars(BLOCKBAR); lcd_display_bar_int("Delay Lvl.", configuration.delay_level, 1.0, DELAY_LEVEL_MIN, DELAY_LEVEL_MAX, 3, false, false, false, true); @@ -1218,7 +1301,11 @@ void UI_func_delay_level(uint8_t param) if (LCDML.FUNC_loop()) // ****** LOOP ********* { - if ((LCDML.BT_checkDown() && encoderDir[ENC_R].Down()) || (LCDML.BT_checkUp() && encoderDir[ENC_R].Up())) + if ((LCDML.BT_checkDown() && encoderDir[ENC_L].Down()) || (LCDML.BT_checkUp() && encoderDir[ENC_L].Up())) + { + LCDML.OTHER_jumpToFunc(UI_func_volume); + } + else if ((LCDML.BT_checkDown() && encoderDir[ENC_R].Down()) || (LCDML.BT_checkUp() && encoderDir[ENC_R].Up())) { if (LCDML.BT_checkDown()) configuration.delay_level = constrain(configuration.delay_level + ENCODER[ENC_R].speed(), DELAY_LEVEL_MIN, DELAY_LEVEL_MAX); @@ -1237,6 +1324,7 @@ void UI_func_delay_level(uint8_t param) lcd_special_chars(SCROLLBAR); eeprom_write(); encoderDir[ENC_R].reset(); + } } @@ -1250,13 +1338,19 @@ void UI_func_filter_cutoff(uint8_t param) if (LCDML.FUNC_setup()) // ****** SETUP ********* { encoderDir[ENC_R].reset(); + last_menu = LCDML.FUNC_getID(); lcd_special_chars(BLOCKBAR); lcd_display_bar_int("Filter Cut", configuration.dexed[instance_id].filter_cutoff, 1.0, FILTER_CUTOFF_MIN, FILTER_CUTOFF_MAX, 3, false, false, false, true); } if (LCDML.FUNC_loop()) // ****** LOOP ********* - { if ((LCDML.BT_checkDown() && encoderDir[ENC_R].Down()) || (LCDML.BT_checkUp() && encoderDir[ENC_R].Up())) + { + if ((LCDML.BT_checkDown() && encoderDir[ENC_L].Down()) || (LCDML.BT_checkUp() && encoderDir[ENC_L].Up())) + { + LCDML.OTHER_jumpToFunc(UI_func_volume); + } + else if ((LCDML.BT_checkDown() && encoderDir[ENC_R].Down()) || (LCDML.BT_checkUp() && encoderDir[ENC_R].Up())) { if (LCDML.BT_checkDown()) configuration.dexed[instance_id].filter_cutoff = constrain(configuration.dexed[instance_id].filter_cutoff + ENCODER[ENC_R].speed(), FILTER_CUTOFF_MIN, FILTER_CUTOFF_MAX); @@ -1274,6 +1368,7 @@ void UI_func_filter_cutoff(uint8_t param) lcd_special_chars(SCROLLBAR); eeprom_write(); encoderDir[ENC_R].reset(); + } } @@ -1287,6 +1382,7 @@ void UI_func_filter_resonance(uint8_t param) if (LCDML.FUNC_setup()) // ****** SETUP ********* { encoderDir[ENC_R].reset(); + last_menu = LCDML.FUNC_getID(); lcd_special_chars(BLOCKBAR); lcd_display_bar_int("Filter Res", configuration.dexed[instance_id].filter_resonance, 1.0, FILTER_RESONANCE_MIN, FILTER_RESONANCE_MAX, 3, false, false, false, true); @@ -1294,7 +1390,11 @@ void UI_func_filter_resonance(uint8_t param) if (LCDML.FUNC_loop()) // ****** LOOP ********* { - if ((LCDML.BT_checkDown() && encoderDir[ENC_R].Down()) || (LCDML.BT_checkUp() && encoderDir[ENC_R].Up())) + if ((LCDML.BT_checkDown() && encoderDir[ENC_L].Down()) || (LCDML.BT_checkUp() && encoderDir[ENC_L].Up())) + { + LCDML.OTHER_jumpToFunc(UI_func_volume); + } + else if ((LCDML.BT_checkDown() && encoderDir[ENC_R].Down()) || (LCDML.BT_checkUp() && encoderDir[ENC_R].Up())) { if (LCDML.BT_checkDown()) configuration.dexed[instance_id].filter_resonance = constrain(configuration.dexed[instance_id].filter_resonance + ENCODER[ENC_R].speed(), FILTER_RESONANCE_MIN, FILTER_RESONANCE_MAX); @@ -1312,6 +1412,7 @@ void UI_func_filter_resonance(uint8_t param) lcd_special_chars(SCROLLBAR); eeprom_write(); encoderDir[ENC_R].reset(); + } } #endif @@ -1326,6 +1427,7 @@ void UI_func_transpose(uint8_t param) if (LCDML.FUNC_setup()) // ****** SETUP ********* { encoderDir[ENC_R].reset(); + last_menu = LCDML.FUNC_getID(); lcd_special_chars(METERBAR); lcd_display_meter_int("Transpose", configuration.dexed[instance_id].transpose, 1.0, -24.0, TRANSPOSE_MIN, TRANSPOSE_MAX, 3, false, false, true, true); @@ -1333,7 +1435,11 @@ void UI_func_transpose(uint8_t param) if (LCDML.FUNC_loop()) // ****** LOOP ********* { - if ((LCDML.BT_checkDown() && encoderDir[ENC_R].Down()) || (LCDML.BT_checkUp() && encoderDir[ENC_R].Up())) + if ((LCDML.BT_checkDown() && encoderDir[ENC_L].Down()) || (LCDML.BT_checkUp() && encoderDir[ENC_L].Up())) + { + LCDML.OTHER_jumpToFunc(UI_func_volume); + } + else if ((LCDML.BT_checkDown() && encoderDir[ENC_R].Down()) || (LCDML.BT_checkUp() && encoderDir[ENC_R].Up())) { if (LCDML.BT_checkDown()) configuration.dexed[instance_id].transpose = constrain(configuration.dexed[instance_id].transpose + ENCODER[ENC_R].speed(), TRANSPOSE_MIN, TRANSPOSE_MAX); @@ -1352,6 +1458,7 @@ void UI_func_transpose(uint8_t param) lcd_special_chars(SCROLLBAR); eeprom_write(); encoderDir[ENC_R].reset(); + } } @@ -1365,6 +1472,7 @@ void UI_func_tune(uint8_t param) if (LCDML.FUNC_setup()) // ****** SETUP ********* { encoderDir[ENC_R].reset(); + last_menu = LCDML.FUNC_getID(); lcd_special_chars(METERBAR); lcd_display_meter_int("Tune", configuration.dexed[instance_id].tune, 1.0, -100.0, TUNE_MIN, TUNE_MAX, 3, false, false, true, true); @@ -1372,7 +1480,11 @@ void UI_func_tune(uint8_t param) if (LCDML.FUNC_loop()) // ****** LOOP ********* { - if ((LCDML.BT_checkDown() && encoderDir[ENC_R].Down()) || (LCDML.BT_checkUp() && encoderDir[ENC_R].Up())) + if ((LCDML.BT_checkDown() && encoderDir[ENC_L].Down()) || (LCDML.BT_checkUp() && encoderDir[ENC_L].Up())) + { + LCDML.OTHER_jumpToFunc(UI_func_volume); + } + else if ((LCDML.BT_checkDown() && encoderDir[ENC_R].Down()) || (LCDML.BT_checkUp() && encoderDir[ENC_R].Up())) { if (LCDML.BT_checkDown()) configuration.dexed[instance_id].tune = constrain(configuration.dexed[instance_id].tune + ENCODER[ENC_R].speed(), TUNE_MIN, TUNE_MAX); @@ -1391,6 +1503,7 @@ void UI_func_tune(uint8_t param) lcd_special_chars(SCROLLBAR); eeprom_write(); encoderDir[ENC_R].reset(); + } } @@ -1404,6 +1517,7 @@ void UI_func_midi_channel(uint8_t param) if (LCDML.FUNC_setup()) // ****** SETUP ********* { encoderDir[ENC_R].reset(); + last_menu = LCDML.FUNC_getID(); lcd.setCursor(0, 0); lcd.print(F("MIDI Channel")); @@ -1411,7 +1525,11 @@ void UI_func_midi_channel(uint8_t param) if (LCDML.FUNC_loop()) // ****** LOOP ********* { - if (LCDML.BT_checkDown()) + if ((LCDML.BT_checkDown() && encoderDir[ENC_L].Down()) || (LCDML.BT_checkUp() && encoderDir[ENC_L].Up())) + { + LCDML.OTHER_jumpToFunc(UI_func_volume); + } + else if (LCDML.BT_checkDown()) configuration.dexed[instance_id].midi_channel = constrain(configuration.dexed[instance_id].midi_channel + ENCODER[ENC_R].speed(), MIDI_CHANNEL_MIN, MIDI_CHANNEL_MAX); else if (LCDML.BT_checkUp()) configuration.dexed[instance_id].midi_channel = constrain(configuration.dexed[instance_id].midi_channel - ENCODER[ENC_R].speed(), MIDI_CHANNEL_MIN, MIDI_CHANNEL_MAX); @@ -1432,6 +1550,7 @@ void UI_func_midi_channel(uint8_t param) // you can here reset some global vars or do nothing eeprom_write(); encoderDir[ENC_R].reset(); + } } @@ -1455,6 +1574,7 @@ void UI_func_lowest_note(uint8_t param) if (LCDML.FUNC_setup()) // ****** SETUP ********* { encoderDir[ENC_R].reset(); + last_menu = LCDML.FUNC_getID(); getNoteName(note_name, configuration.dexed[instance_id].lowest_note); lcd.setCursor(0, 0); @@ -1467,7 +1587,11 @@ void UI_func_lowest_note(uint8_t param) if (LCDML.FUNC_loop()) // ****** LOOP ********* { - if ((LCDML.BT_checkDown() && encoderDir[ENC_R].Down()) || (LCDML.BT_checkUp() && encoderDir[ENC_R].Up())) + if ((LCDML.BT_checkDown() && encoderDir[ENC_L].Down()) || (LCDML.BT_checkUp() && encoderDir[ENC_L].Up())) + { + LCDML.OTHER_jumpToFunc(UI_func_volume); + } + else if ((LCDML.BT_checkDown() && encoderDir[ENC_R].Down()) || (LCDML.BT_checkUp() && encoderDir[ENC_R].Up())) { if (LCDML.BT_checkDown()) configuration.dexed[instance_id].lowest_note = constrain(configuration.dexed[instance_id].lowest_note + ENCODER[ENC_R].speed(), INSTANCE_LOWEST_NOTE_MIN, INSTANCE_LOWEST_NOTE_MAX); @@ -1484,6 +1608,7 @@ void UI_func_lowest_note(uint8_t param) { eeprom_write(); encoderDir[ENC_R].reset(); + } } @@ -1498,6 +1623,7 @@ void UI_func_highest_note(uint8_t param) if (LCDML.FUNC_setup()) // ****** SETUP ********* { encoderDir[ENC_R].reset(); + last_menu = LCDML.FUNC_getID(); getNoteName(note_name, configuration.dexed[instance_id].highest_note); lcd.setCursor(0, 0); @@ -1510,7 +1636,11 @@ void UI_func_highest_note(uint8_t param) if (LCDML.FUNC_loop()) // ****** LOOP ********* { - if ((LCDML.BT_checkDown() && encoderDir[ENC_R].Down()) || (LCDML.BT_checkUp() && encoderDir[ENC_R].Up())) + if ((LCDML.BT_checkDown() && encoderDir[ENC_L].Down()) || (LCDML.BT_checkUp() && encoderDir[ENC_L].Up())) + { + LCDML.OTHER_jumpToFunc(UI_func_volume); + } + else if ((LCDML.BT_checkDown() && encoderDir[ENC_R].Down()) || (LCDML.BT_checkUp() && encoderDir[ENC_R].Up())) { if (LCDML.BT_checkDown()) configuration.dexed[instance_id].highest_note = constrain(configuration.dexed[instance_id].highest_note + ENCODER[ENC_R].speed(), INSTANCE_HIGHEST_NOTE_MIN, INSTANCE_HIGHEST_NOTE_MAX); @@ -1527,6 +1657,7 @@ void UI_func_highest_note(uint8_t param) { eeprom_write(); encoderDir[ENC_R].reset(); + } } @@ -1540,6 +1671,7 @@ void UI_func_sound_intensity(uint8_t param) if (LCDML.FUNC_setup()) // ****** SETUP ********* { encoderDir[ENC_R].reset(); + last_menu = LCDML.FUNC_getID(); lcd_special_chars(BLOCKBAR); lcd_display_bar_float("Volume", float(configuration.dexed[instance_id].sound_intensity), 1.0, SOUND_INTENSITY_MIN, SOUND_INTENSITY_MAX, 3, 0, false, false, false, true); @@ -1547,7 +1679,11 @@ void UI_func_sound_intensity(uint8_t param) if (LCDML.FUNC_loop()) // ****** LOOP ********* { - if ((LCDML.BT_checkDown() && encoderDir[ENC_R].Down()) || (LCDML.BT_checkUp() && encoderDir[ENC_R].Up())) + if ((LCDML.BT_checkDown() && encoderDir[ENC_L].Down()) || (LCDML.BT_checkUp() && encoderDir[ENC_L].Up())) + { + LCDML.OTHER_jumpToFunc(UI_func_volume); + } + else if ((LCDML.BT_checkDown() && encoderDir[ENC_R].Down()) || (LCDML.BT_checkUp() && encoderDir[ENC_R].Up())) { if (LCDML.BT_checkDown()) configuration.dexed[instance_id].sound_intensity = constrain(configuration.dexed[instance_id].sound_intensity + ENCODER[ENC_R].speed(), SOUND_INTENSITY_MIN, SOUND_INTENSITY_MAX); @@ -1566,6 +1702,7 @@ void UI_func_sound_intensity(uint8_t param) lcd_special_chars(SCROLLBAR); eeprom_write(); encoderDir[ENC_R].reset(); + } } @@ -1579,6 +1716,7 @@ void UI_func_panorama(uint8_t param) if (LCDML.FUNC_setup()) // ****** SETUP ********* { encoderDir[ENC_R].reset(); + last_menu = LCDML.FUNC_getID(); if (configuration.mono > 0) { @@ -1594,7 +1732,11 @@ void UI_func_panorama(uint8_t param) if (LCDML.FUNC_loop()) // ****** LOOP ********* { - if (LCDML.BT_checkDown() && configuration.mono == 0) + if ((LCDML.BT_checkDown() && encoderDir[ENC_L].Down()) || (LCDML.BT_checkUp() && encoderDir[ENC_L].Up())) + { + LCDML.OTHER_jumpToFunc(UI_func_volume); + } + else if (LCDML.BT_checkDown() && configuration.mono == 0) configuration.dexed[instance_id].pan = constrain(configuration.dexed[instance_id].pan + ENCODER[ENC_R].speed(), PANORAMA_MIN, PANORAMA_MAX); else if (LCDML.BT_checkUp() && configuration.mono == 0) configuration.dexed[instance_id].pan = constrain(configuration.dexed[instance_id].pan - ENCODER[ENC_R].speed(), PANORAMA_MIN, PANORAMA_MAX); @@ -1611,6 +1753,7 @@ void UI_func_panorama(uint8_t param) lcd_special_chars(SCROLLBAR); eeprom_write(); encoderDir[ENC_R].reset(); + } } @@ -1619,6 +1762,7 @@ void UI_func_stereo_mono(uint8_t param) if (LCDML.FUNC_setup()) // ****** SETUP ********* { encoderDir[ENC_R].reset(); + last_menu = LCDML.FUNC_getID(); lcd.setCursor(0, 0); lcd.print(F("Stereo/Mono")); @@ -1646,7 +1790,11 @@ void UI_func_stereo_mono(uint8_t param) if (LCDML.FUNC_loop()) // ****** LOOP ********* { - if (LCDML.BT_checkDown()) + if ((LCDML.BT_checkDown() && encoderDir[ENC_L].Down()) || (LCDML.BT_checkUp() && encoderDir[ENC_L].Up())) + { + LCDML.OTHER_jumpToFunc(UI_func_volume); + } + else if (LCDML.BT_checkDown()) configuration.mono = constrain(configuration.mono + 1, MONO_MIN, MONO_MAX); else if (LCDML.BT_checkUp()) configuration.mono = constrain(configuration.mono - 1, MONO_MIN, MONO_MAX); @@ -1678,6 +1826,7 @@ void UI_func_stereo_mono(uint8_t param) { eeprom_write(); encoderDir[ENC_R].reset(); + } } @@ -1691,6 +1840,7 @@ void UI_func_polyphony(uint8_t param) if (LCDML.FUNC_setup()) // ****** SETUP ********* { encoderDir[ENC_R].reset(); + last_menu = LCDML.FUNC_getID(); lcd_special_chars(BLOCKBAR); lcd_display_bar_int("Polyphony", configuration.dexed[instance_id].polyphony, 1.0, POLYPHONY_MIN, POLYPHONY_MAX, 3, false, false, false, true); @@ -1698,7 +1848,11 @@ void UI_func_polyphony(uint8_t param) if (LCDML.FUNC_loop()) // ****** LOOP ********* { - if ((LCDML.BT_checkDown() && encoderDir[ENC_R].Down()) || (LCDML.BT_checkUp() && encoderDir[ENC_R].Up())) + if ((LCDML.BT_checkDown() && encoderDir[ENC_L].Down()) || (LCDML.BT_checkUp() && encoderDir[ENC_L].Up())) + { + LCDML.OTHER_jumpToFunc(UI_func_volume); + } + else if ((LCDML.BT_checkDown() && encoderDir[ENC_R].Down()) || (LCDML.BT_checkUp() && encoderDir[ENC_R].Up())) { if (LCDML.BT_checkDown()) configuration.dexed[instance_id].polyphony = constrain(configuration.dexed[instance_id].polyphony + ENCODER[ENC_R].speed(), POLYPHONY_MIN, POLYPHONY_MAX); @@ -1716,6 +1870,7 @@ void UI_func_polyphony(uint8_t param) lcd_special_chars(SCROLLBAR); eeprom_write(); encoderDir[ENC_R].reset(); + } } @@ -1729,6 +1884,7 @@ void UI_func_engine(uint8_t param) if (LCDML.FUNC_setup()) // ****** SETUP ********* { encoderDir[ENC_R].reset(); + last_menu = LCDML.FUNC_getID(); lcd.setCursor(0, 0); lcd.print(F("Engine")); @@ -1736,7 +1892,11 @@ void UI_func_engine(uint8_t param) if (LCDML.FUNC_loop()) // ****** LOOP ********* { - if ((LCDML.BT_checkDown() && encoderDir[ENC_R].Down()) || (LCDML.BT_checkUp() && encoderDir[ENC_R].Up())) + if ((LCDML.BT_checkDown() && encoderDir[ENC_L].Down()) || (LCDML.BT_checkUp() && encoderDir[ENC_L].Up())) + { + LCDML.OTHER_jumpToFunc(UI_func_volume); + } + else if ((LCDML.BT_checkDown() && encoderDir[ENC_R].Down()) || (LCDML.BT_checkUp() && encoderDir[ENC_R].Up())) { if (LCDML.BT_checkDown()) configuration.dexed[instance_id].engine = constrain(configuration.dexed[instance_id].engine + 1, ENGINE_MIN, ENGINE_MAX); @@ -1765,6 +1925,7 @@ void UI_func_engine(uint8_t param) { eeprom_write(); encoderDir[ENC_R].reset(); + } } @@ -1778,6 +1939,7 @@ void UI_func_mono_poly(uint8_t param) if (LCDML.FUNC_setup()) // ****** SETUP ********* { encoderDir[ENC_R].reset(); + last_menu = LCDML.FUNC_getID(); lcd.setCursor(0, 0); lcd.print(F("Mono/Polyphonic")); @@ -1785,16 +1947,19 @@ void UI_func_mono_poly(uint8_t param) if (LCDML.FUNC_loop()) // ****** LOOP ********* { - if (LCDML.BT_checkEnter() && encoderDir[ENC_R].ButtonShort()) - if ((LCDML.BT_checkDown() && encoderDir[ENC_R].Down()) || (LCDML.BT_checkUp() && encoderDir[ENC_R].Up())) - { - if (LCDML.BT_checkDown()) - configuration.dexed[instance_id].monopoly = constrain(configuration.dexed[instance_id].monopoly + 1, MONOPOLY_MIN, MONOPOLY_MAX); - else if (LCDML.BT_checkUp()) - configuration.dexed[instance_id].monopoly = constrain(configuration.dexed[instance_id].monopoly - 1, MONOPOLY_MIN, MONOPOLY_MAX); + if ((LCDML.BT_checkDown() && encoderDir[ENC_L].Down()) || (LCDML.BT_checkUp() && encoderDir[ENC_L].Up())) + { + LCDML.OTHER_jumpToFunc(UI_func_volume); + } + else if ((LCDML.BT_checkDown() && encoderDir[ENC_R].Down()) || (LCDML.BT_checkUp() && encoderDir[ENC_R].Up())) + { + if (LCDML.BT_checkDown()) + configuration.dexed[instance_id].monopoly = constrain(configuration.dexed[instance_id].monopoly + 1, MONOPOLY_MIN, MONOPOLY_MAX); + else if (LCDML.BT_checkUp()) + configuration.dexed[instance_id].monopoly = constrain(configuration.dexed[instance_id].monopoly - 1, MONOPOLY_MIN, MONOPOLY_MAX); - MicroDexed[instance_id]->setMonoMode(!configuration.dexed[instance_id].monopoly); - } + MicroDexed[instance_id]->setMonoMode(!configuration.dexed[instance_id].monopoly); + } lcd.setCursor(0, 1); switch (configuration.dexed[instance_id].monopoly) @@ -1812,6 +1977,7 @@ void UI_func_mono_poly(uint8_t param) { eeprom_write(); encoderDir[ENC_R].reset(); + } } @@ -1825,6 +1991,7 @@ void UI_func_note_refresh(uint8_t param) if (LCDML.FUNC_setup()) // ****** SETUP ********* { encoderDir[ENC_R].reset(); + last_menu = LCDML.FUNC_getID(); lcd.setCursor(0, 0); lcd.print(F("Note Refresh")); @@ -1832,7 +1999,11 @@ void UI_func_note_refresh(uint8_t param) if (LCDML.FUNC_loop()) // ****** LOOP ********* { - if ((LCDML.BT_checkDown() && encoderDir[ENC_R].Down()) || (LCDML.BT_checkUp() && encoderDir[ENC_R].Up())) + if ((LCDML.BT_checkDown() && encoderDir[ENC_L].Down()) || (LCDML.BT_checkUp() && encoderDir[ENC_L].Up())) + { + LCDML.OTHER_jumpToFunc(UI_func_volume); + } + else if ((LCDML.BT_checkDown() && encoderDir[ENC_R].Down()) || (LCDML.BT_checkUp() && encoderDir[ENC_R].Up())) { if (LCDML.BT_checkDown()) configuration.dexed[instance_id].note_refresh = constrain(configuration.dexed[instance_id].note_refresh + 1, NOTE_REFRESH_MIN, NOTE_REFRESH_MAX); @@ -1858,6 +2029,7 @@ void UI_func_note_refresh(uint8_t param) { eeprom_write(); encoderDir[ENC_R].reset(); + } } @@ -1871,6 +2043,7 @@ void UI_func_pb_range(uint8_t param) if (LCDML.FUNC_setup()) // ****** SETUP ********* { encoderDir[ENC_R].reset(); + last_menu = LCDML.FUNC_getID(); lcd_special_chars(BLOCKBAR); lcd_display_bar_int("PB Range", configuration.dexed[instance_id].pb_range, 1.0, PB_RANGE_MIN, PB_RANGE_MAX, 2, false, false, false, true); @@ -1878,7 +2051,11 @@ void UI_func_pb_range(uint8_t param) if (LCDML.FUNC_loop()) // ****** LOOP ********* { - if ((LCDML.BT_checkDown() && encoderDir[ENC_R].Down()) || (LCDML.BT_checkUp() && encoderDir[ENC_R].Up())) + if ((LCDML.BT_checkDown() && encoderDir[ENC_L].Down()) || (LCDML.BT_checkUp() && encoderDir[ENC_L].Up())) + { + LCDML.OTHER_jumpToFunc(UI_func_volume); + } + else if ((LCDML.BT_checkDown() && encoderDir[ENC_R].Down()) || (LCDML.BT_checkUp() && encoderDir[ENC_R].Up())) { if (LCDML.BT_checkDown()) configuration.dexed[instance_id].pb_range = constrain(configuration.dexed[instance_id].pb_range + ENCODER[ENC_R].speed(), PB_RANGE_MIN, PB_RANGE_MAX); @@ -1896,6 +2073,7 @@ void UI_func_pb_range(uint8_t param) lcd_special_chars(SCROLLBAR); eeprom_write(); encoderDir[ENC_R].reset(); + } } @@ -1909,13 +2087,20 @@ void UI_func_pb_step(uint8_t param) if (LCDML.FUNC_setup()) // ****** SETUP ********* { encoderDir[ENC_R].reset(); + last_menu = LCDML.FUNC_getID(); + + lcd_special_chars(BLOCKBAR); lcd_display_bar_int("PB Step", configuration.dexed[instance_id].pb_step, 1.0, PB_STEP_MIN, PB_STEP_MAX, 2, false, false, false, true); } if (LCDML.FUNC_loop()) // ****** LOOP ********* { - if ((LCDML.BT_checkDown() && encoderDir[ENC_R].Down()) || (LCDML.BT_checkUp() && encoderDir[ENC_R].Up())) + if ((LCDML.BT_checkDown() && encoderDir[ENC_L].Down()) || (LCDML.BT_checkUp() && encoderDir[ENC_L].Up())) + { + LCDML.OTHER_jumpToFunc(UI_func_volume); + } + else if ((LCDML.BT_checkDown() && encoderDir[ENC_R].Down()) || (LCDML.BT_checkUp() && encoderDir[ENC_R].Up())) { if (LCDML.BT_checkDown()) configuration.dexed[instance_id].pb_step = constrain(configuration.dexed[instance_id].pb_step + ENCODER[ENC_R].speed(), PB_STEP_MIN, PB_STEP_MAX); @@ -1931,8 +2116,10 @@ void UI_func_pb_step(uint8_t param) if (LCDML.FUNC_close()) // ****** STABLE END ********* { lcd_special_chars(SCROLLBAR); + eeprom_write(); encoderDir[ENC_R].reset(); + } } @@ -1946,13 +2133,19 @@ void UI_func_mw_range(uint8_t param) if (LCDML.FUNC_setup()) // ****** SETUP ********* { encoderDir[ENC_R].reset(); + last_menu = LCDML.FUNC_getID(); + lcd_special_chars(BLOCKBAR); lcd_display_bar_int("MW Range", configuration.dexed[instance_id].mw_range, 1.0, MW_RANGE_MIN, MW_RANGE_MAX, 2, false, false, false, true); } if (LCDML.FUNC_loop()) // ****** LOOP ********* { - if ((LCDML.BT_checkDown() && encoderDir[ENC_R].Down()) || (LCDML.BT_checkUp() && encoderDir[ENC_R].Up())) + if ((LCDML.BT_checkDown() && encoderDir[ENC_L].Down()) || (LCDML.BT_checkUp() && encoderDir[ENC_L].Up())) + { + LCDML.OTHER_jumpToFunc(UI_func_volume); + } + else if ((LCDML.BT_checkDown() && encoderDir[ENC_R].Down()) || (LCDML.BT_checkUp() && encoderDir[ENC_R].Up())) { if (LCDML.BT_checkDown()) configuration.dexed[instance_id].mw_range = constrain(configuration.dexed[instance_id].mw_range + ENCODER[ENC_R].speed(), MW_RANGE_MIN, MW_RANGE_MAX); @@ -1970,6 +2163,7 @@ void UI_func_mw_range(uint8_t param) lcd_special_chars(SCROLLBAR); eeprom_write(); encoderDir[ENC_R].reset(); + } } @@ -1983,6 +2177,7 @@ void UI_func_mw_assign(uint8_t param) if (LCDML.FUNC_setup()) // ****** SETUP ********* { encoderDir[ENC_R].reset(); + last_menu = LCDML.FUNC_getID(); lcd.setCursor(0, 0); lcd.print(F("MW Assign")); @@ -1990,7 +2185,11 @@ void UI_func_mw_assign(uint8_t param) if (LCDML.FUNC_loop()) // ****** LOOP ********* { - if ((LCDML.BT_checkDown() && encoderDir[ENC_R].Down()) || (LCDML.BT_checkUp() && encoderDir[ENC_R].Up())) + if ((LCDML.BT_checkDown() && encoderDir[ENC_L].Down()) || (LCDML.BT_checkUp() && encoderDir[ENC_L].Up())) + { + LCDML.OTHER_jumpToFunc(UI_func_volume); + } + else if ((LCDML.BT_checkDown() && encoderDir[ENC_R].Down()) || (LCDML.BT_checkUp() && encoderDir[ENC_R].Up())) { if (LCDML.BT_checkDown()) configuration.dexed[instance_id].mw_assign = constrain(configuration.dexed[instance_id].mw_assign + 1, MW_ASSIGN_MIN, MW_ASSIGN_MAX); @@ -2034,6 +2233,7 @@ void UI_func_mw_assign(uint8_t param) { eeprom_write(); encoderDir[ENC_R].reset(); + } } @@ -2047,6 +2247,7 @@ void UI_func_mw_mode(uint8_t param) if (LCDML.FUNC_setup()) // ****** SETUP ********* { encoderDir[ENC_R].reset(); + last_menu = LCDML.FUNC_getID(); lcd.setCursor(0, 0); lcd.print(F("MW Mode")); @@ -2054,7 +2255,11 @@ void UI_func_mw_mode(uint8_t param) if (LCDML.FUNC_loop()) // ****** LOOP ********* { - if ((LCDML.BT_checkDown() && encoderDir[ENC_R].Down()) || (LCDML.BT_checkUp() && encoderDir[ENC_R].Up())) + if ((LCDML.BT_checkDown() && encoderDir[ENC_L].Down()) || (LCDML.BT_checkUp() && encoderDir[ENC_L].Up())) + { + LCDML.OTHER_jumpToFunc(UI_func_volume); + } + else if ((LCDML.BT_checkDown() && encoderDir[ENC_R].Down()) || (LCDML.BT_checkUp() && encoderDir[ENC_R].Up())) { if (LCDML.BT_checkDown()) configuration.dexed[instance_id].mw_mode = constrain(configuration.dexed[instance_id].mw_mode + 1, MW_MODE_MIN, MW_MODE_MAX); @@ -2084,6 +2289,7 @@ void UI_func_mw_mode(uint8_t param) { eeprom_write(); encoderDir[ENC_R].reset(); + } } @@ -2097,6 +2303,7 @@ void UI_func_fc_range(uint8_t param) if (LCDML.FUNC_setup()) // ****** SETUP ********* { encoderDir[ENC_R].reset(); + last_menu = LCDML.FUNC_getID(); lcd_special_chars(BLOCKBAR); lcd_display_bar_int("FC Range", configuration.dexed[instance_id].fc_range, 1.0, FC_RANGE_MIN, FC_RANGE_MAX, 2, false, false, false, true); @@ -2104,7 +2311,11 @@ void UI_func_fc_range(uint8_t param) if (LCDML.FUNC_loop()) // ****** LOOP ********* { - if ((LCDML.BT_checkDown() && encoderDir[ENC_R].Down()) || (LCDML.BT_checkUp() && encoderDir[ENC_R].Up())) + if ((LCDML.BT_checkDown() && encoderDir[ENC_L].Down()) || (LCDML.BT_checkUp() && encoderDir[ENC_L].Up())) + { + LCDML.OTHER_jumpToFunc(UI_func_volume); + } + else if ((LCDML.BT_checkDown() && encoderDir[ENC_R].Down()) || (LCDML.BT_checkUp() && encoderDir[ENC_R].Up())) { if (LCDML.BT_checkDown()) configuration.dexed[instance_id].fc_range = constrain(configuration.dexed[instance_id].fc_range + ENCODER[ENC_R].speed(), FC_RANGE_MIN, FC_RANGE_MAX); @@ -2123,6 +2334,7 @@ void UI_func_fc_range(uint8_t param) lcd_special_chars(SCROLLBAR); eeprom_write(); encoderDir[ENC_R].reset(); + } } @@ -2136,6 +2348,7 @@ void UI_func_fc_assign(uint8_t param) if (LCDML.FUNC_setup()) // ****** SETUP ********* { encoderDir[ENC_R].reset(); + last_menu = LCDML.FUNC_getID(); lcd.setCursor(0, 0); lcd.print(F("FC Assign")); @@ -2145,7 +2358,11 @@ void UI_func_fc_assign(uint8_t param) { if ((LCDML.BT_checkDown() && encoderDir[ENC_R].Down()) || (LCDML.BT_checkUp() && encoderDir[ENC_R].Up())) { - if (LCDML.BT_checkDown()) + if ((LCDML.BT_checkDown() && encoderDir[ENC_L].Down()) || (LCDML.BT_checkUp() && encoderDir[ENC_L].Up())) + { + LCDML.OTHER_jumpToFunc(UI_func_volume); + } + else if (LCDML.BT_checkDown()) configuration.dexed[instance_id].fc_assign = constrain(configuration.dexed[instance_id].fc_assign + 1, FC_ASSIGN_MIN, FC_ASSIGN_MAX); else if (LCDML.BT_checkUp()) configuration.dexed[instance_id].fc_assign = constrain(configuration.dexed[instance_id].fc_assign - 1, FC_ASSIGN_MIN, FC_ASSIGN_MAX); @@ -2187,6 +2404,7 @@ void UI_func_fc_assign(uint8_t param) { eeprom_write(); encoderDir[ENC_R].reset(); + } } @@ -2200,6 +2418,7 @@ void UI_func_fc_mode(uint8_t param) if (LCDML.FUNC_setup()) // ****** SETUP ********* { encoderDir[ENC_R].reset(); + last_menu = LCDML.FUNC_getID(); lcd.setCursor(0, 0); lcd.print(F("FC Mode")); @@ -2207,7 +2426,11 @@ void UI_func_fc_mode(uint8_t param) if (LCDML.FUNC_loop()) // ****** LOOP ********* { - if ((LCDML.BT_checkDown() && encoderDir[ENC_R].Down()) || (LCDML.BT_checkUp() && encoderDir[ENC_R].Up())) + if ((LCDML.BT_checkDown() && encoderDir[ENC_L].Down()) || (LCDML.BT_checkUp() && encoderDir[ENC_L].Up())) + { + LCDML.OTHER_jumpToFunc(UI_func_volume); + } + else if ((LCDML.BT_checkDown() && encoderDir[ENC_R].Down()) || (LCDML.BT_checkUp() && encoderDir[ENC_R].Up())) { if (LCDML.BT_checkDown()) configuration.dexed[instance_id].fc_mode = constrain(configuration.dexed[instance_id].fc_mode + 1, FC_MODE_MIN, FC_MODE_MAX); @@ -2237,6 +2460,7 @@ void UI_func_fc_mode(uint8_t param) { eeprom_write(); encoderDir[ENC_R].reset(); + } } @@ -2250,6 +2474,7 @@ void UI_func_bc_range(uint8_t param) if (LCDML.FUNC_setup()) // ****** SETUP ********* { encoderDir[ENC_R].reset(); + last_menu = LCDML.FUNC_getID(); lcd_special_chars(BLOCKBAR); lcd_display_bar_int("BC Range", configuration.dexed[instance_id].bc_range, 1.0, BC_RANGE_MIN, BC_RANGE_MAX, 2, false, false, false, true); @@ -2257,7 +2482,11 @@ void UI_func_bc_range(uint8_t param) if (LCDML.FUNC_loop()) // ****** LOOP ********* { - if ((LCDML.BT_checkDown() && encoderDir[ENC_R].Down()) || (LCDML.BT_checkUp() && encoderDir[ENC_R].Up())) + if ((LCDML.BT_checkDown() && encoderDir[ENC_L].Down()) || (LCDML.BT_checkUp() && encoderDir[ENC_L].Up())) + { + LCDML.OTHER_jumpToFunc(UI_func_volume); + } + else if ((LCDML.BT_checkDown() && encoderDir[ENC_R].Down()) || (LCDML.BT_checkUp() && encoderDir[ENC_R].Up())) { if (LCDML.BT_checkDown()) configuration.dexed[instance_id].bc_range = constrain(configuration.dexed[instance_id].bc_range + ENCODER[ENC_R].speed(), BC_RANGE_MIN, BC_RANGE_MAX); @@ -2275,6 +2504,7 @@ void UI_func_bc_range(uint8_t param) lcd_special_chars(SCROLLBAR); eeprom_write(); encoderDir[ENC_R].reset(); + } } @@ -2288,6 +2518,7 @@ void UI_func_bc_assign(uint8_t param) if (LCDML.FUNC_setup()) // ****** SETUP ********* { encoderDir[ENC_R].reset(); + last_menu = LCDML.FUNC_getID(); lcd.setCursor(0, 0); lcd.print(F("BC Assign")); @@ -2295,7 +2526,11 @@ void UI_func_bc_assign(uint8_t param) if (LCDML.FUNC_loop()) // ****** LOOP ********* { - if ((LCDML.BT_checkDown() && encoderDir[ENC_R].Down()) || (LCDML.BT_checkUp() && encoderDir[ENC_R].Up())) + if ((LCDML.BT_checkDown() && encoderDir[ENC_L].Down()) || (LCDML.BT_checkUp() && encoderDir[ENC_L].Up())) + { + LCDML.OTHER_jumpToFunc(UI_func_volume); + } + else if ((LCDML.BT_checkDown() && encoderDir[ENC_R].Down()) || (LCDML.BT_checkUp() && encoderDir[ENC_R].Up())) { if (LCDML.BT_checkDown()) configuration.dexed[instance_id].bc_assign = constrain(configuration.dexed[instance_id].bc_assign + 1, BC_ASSIGN_MIN, BC_ASSIGN_MAX); @@ -2339,6 +2574,7 @@ void UI_func_bc_assign(uint8_t param) { eeprom_write(); encoderDir[ENC_R].reset(); + } } @@ -2352,6 +2588,7 @@ void UI_func_bc_mode(uint8_t param) if (LCDML.FUNC_setup()) // ****** SETUP ********* { encoderDir[ENC_R].reset(); + last_menu = LCDML.FUNC_getID(); lcd.setCursor(0, 0); lcd.print(F("BC Mode")); @@ -2359,7 +2596,11 @@ void UI_func_bc_mode(uint8_t param) if (LCDML.FUNC_loop()) // ****** LOOP ********* { - if ((LCDML.BT_checkDown() && encoderDir[ENC_R].Down()) || (LCDML.BT_checkUp() && encoderDir[ENC_R].Up())) + if ((LCDML.BT_checkDown() && encoderDir[ENC_L].Down()) || (LCDML.BT_checkUp() && encoderDir[ENC_L].Up())) + { + LCDML.OTHER_jumpToFunc(UI_func_volume); + } + else if ((LCDML.BT_checkDown() && encoderDir[ENC_R].Down()) || (LCDML.BT_checkUp() && encoderDir[ENC_R].Up())) { if (LCDML.BT_checkDown()) configuration.dexed[instance_id].bc_mode = constrain(configuration.dexed[instance_id].bc_mode + 1, BC_MODE_MIN, BC_MODE_MAX); @@ -2389,6 +2630,7 @@ void UI_func_bc_mode(uint8_t param) { eeprom_write(); encoderDir[ENC_R].reset(); + } } @@ -2402,6 +2644,7 @@ void UI_func_at_range(uint8_t param) if (LCDML.FUNC_setup()) // ****** SETUP ********* { encoderDir[ENC_R].reset(); + last_menu = LCDML.FUNC_getID(); lcd_special_chars(BLOCKBAR); lcd_display_bar_int("AT Range", configuration.dexed[instance_id].at_range, 1.0, AT_RANGE_MIN, AT_RANGE_MAX, 2, false, false, false, true); @@ -2409,7 +2652,11 @@ void UI_func_at_range(uint8_t param) if (LCDML.FUNC_loop()) // ****** LOOP ********* { - if ((LCDML.BT_checkDown() && encoderDir[ENC_R].Down()) || (LCDML.BT_checkUp() && encoderDir[ENC_R].Up())) + if ((LCDML.BT_checkDown() && encoderDir[ENC_L].Down()) || (LCDML.BT_checkUp() && encoderDir[ENC_L].Up())) + { + LCDML.OTHER_jumpToFunc(UI_func_volume); + } + else if ((LCDML.BT_checkDown() && encoderDir[ENC_R].Down()) || (LCDML.BT_checkUp() && encoderDir[ENC_R].Up())) { if (LCDML.BT_checkDown()) configuration.dexed[instance_id].at_range = constrain(configuration.dexed[instance_id].at_range + ENCODER[ENC_R].speed(), AT_RANGE_MIN, AT_RANGE_MAX); @@ -2427,6 +2674,7 @@ void UI_func_at_range(uint8_t param) lcd_special_chars(SCROLLBAR); eeprom_write(); encoderDir[ENC_R].reset(); + } } @@ -2440,6 +2688,7 @@ void UI_func_at_assign(uint8_t param) if (LCDML.FUNC_setup()) // ****** SETUP ********* { encoderDir[ENC_R].reset(); + last_menu = LCDML.FUNC_getID(); lcd.setCursor(0, 0); lcd.print(F("AT Assign")); @@ -2447,7 +2696,11 @@ void UI_func_at_assign(uint8_t param) if (LCDML.FUNC_loop()) // ****** LOOP ********* { - if ((LCDML.BT_checkDown() && encoderDir[ENC_R].Down()) || (LCDML.BT_checkUp() && encoderDir[ENC_R].Up())) + if ((LCDML.BT_checkDown() && encoderDir[ENC_L].Down()) || (LCDML.BT_checkUp() && encoderDir[ENC_L].Up())) + { + LCDML.OTHER_jumpToFunc(UI_func_volume); + } + else if ((LCDML.BT_checkDown() && encoderDir[ENC_R].Down()) || (LCDML.BT_checkUp() && encoderDir[ENC_R].Up())) { if (LCDML.BT_checkDown()) configuration.dexed[instance_id].at_assign = constrain(configuration.dexed[instance_id].at_assign + 1, AT_ASSIGN_MIN, AT_ASSIGN_MAX); @@ -2491,6 +2744,7 @@ void UI_func_at_assign(uint8_t param) { eeprom_write(); encoderDir[ENC_R].reset(); + } } @@ -2504,6 +2758,7 @@ void UI_func_at_mode(uint8_t param) if (LCDML.FUNC_setup()) // ****** SETUP ********* { encoderDir[ENC_R].reset(); + last_menu = LCDML.FUNC_getID(); lcd.setCursor(0, 0); lcd.print(F("AT Mode")); @@ -2511,7 +2766,11 @@ void UI_func_at_mode(uint8_t param) if (LCDML.FUNC_loop()) // ****** LOOP ********* { - if ((LCDML.BT_checkDown() && encoderDir[ENC_R].Down()) || (LCDML.BT_checkUp() && encoderDir[ENC_R].Up())) + if ((LCDML.BT_checkDown() && encoderDir[ENC_L].Down()) || (LCDML.BT_checkUp() && encoderDir[ENC_L].Up())) + { + LCDML.OTHER_jumpToFunc(UI_func_volume); + } + else if ((LCDML.BT_checkDown() && encoderDir[ENC_R].Down()) || (LCDML.BT_checkUp() && encoderDir[ENC_R].Up())) { if (LCDML.BT_checkDown()) configuration.dexed[instance_id].at_mode = constrain(configuration.dexed[instance_id].at_mode + 1, AT_MODE_MIN, AT_MODE_MAX); @@ -2541,6 +2800,7 @@ void UI_func_at_mode(uint8_t param) { eeprom_write(); encoderDir[ENC_R].reset(); + } } @@ -2554,6 +2814,7 @@ void UI_func_portamento_mode(uint8_t param) if (LCDML.FUNC_setup()) // ****** SETUP ********* { encoderDir[ENC_R].reset(); + last_menu = LCDML.FUNC_getID(); lcd.setCursor(0, 0); lcd.print(F("Portamento Mode")); @@ -2561,7 +2822,11 @@ void UI_func_portamento_mode(uint8_t param) if (LCDML.FUNC_loop()) // ****** LOOP ********* { - if ((LCDML.BT_checkDown() && encoderDir[ENC_R].Down()) || (LCDML.BT_checkUp() && encoderDir[ENC_R].Up())) + if ((LCDML.BT_checkDown() && encoderDir[ENC_L].Down()) || (LCDML.BT_checkUp() && encoderDir[ENC_L].Up())) + { + LCDML.OTHER_jumpToFunc(UI_func_volume); + } + else if ((LCDML.BT_checkDown() && encoderDir[ENC_R].Down()) || (LCDML.BT_checkUp() && encoderDir[ENC_R].Up())) { if (LCDML.BT_checkDown()) configuration.dexed[instance_id].portamento_mode = constrain(configuration.dexed[instance_id].portamento_mode + 1, PORTAMENTO_MODE_MIN, PORTAMENTO_MODE_MAX); @@ -2593,6 +2858,7 @@ void UI_func_portamento_mode(uint8_t param) { eeprom_write(); encoderDir[ENC_R].reset(); + } } @@ -2606,6 +2872,7 @@ void UI_func_portamento_glissando(uint8_t param) if (LCDML.FUNC_setup()) // ****** SETUP ********* { encoderDir[ENC_R].reset(); + last_menu = LCDML.FUNC_getID(); lcd.setCursor(0, 0); lcd.print(F("Portam. Gliss.")); @@ -2613,7 +2880,11 @@ void UI_func_portamento_glissando(uint8_t param) if (LCDML.FUNC_loop()) // ****** LOOP ********* { - if ((LCDML.BT_checkDown() && encoderDir[ENC_R].Down()) || (LCDML.BT_checkUp() && encoderDir[ENC_R].Up())) + if ((LCDML.BT_checkDown() && encoderDir[ENC_L].Down()) || (LCDML.BT_checkUp() && encoderDir[ENC_L].Up())) + { + LCDML.OTHER_jumpToFunc(UI_func_volume); + } + else if ((LCDML.BT_checkDown() && encoderDir[ENC_R].Down()) || (LCDML.BT_checkUp() && encoderDir[ENC_R].Up())) { if (LCDML.BT_checkDown()) configuration.dexed[instance_id].portamento_glissando = constrain(configuration.dexed[instance_id].portamento_glissando + 1, PORTAMENTO_GLISSANDO_MIN, PORTAMENTO_GLISSANDO_MAX); @@ -2639,6 +2910,7 @@ void UI_func_portamento_glissando(uint8_t param) { eeprom_write(); encoderDir[ENC_R].reset(); + } } @@ -2652,6 +2924,7 @@ void UI_func_portamento_time(uint8_t param) if (LCDML.FUNC_setup()) // ****** SETUP ********* { encoderDir[ENC_R].reset(); + last_menu = LCDML.FUNC_getID(); lcd_special_chars(BLOCKBAR); lcd_display_bar_int("Portam. Time", configuration.dexed[instance_id].portamento_time, 1.0, PORTAMENTO_TIME_MIN, PORTAMENTO_TIME_MAX, 2, false, false, false, true); @@ -2659,7 +2932,11 @@ void UI_func_portamento_time(uint8_t param) if (LCDML.FUNC_loop()) // ****** LOOP ********* { - if ((LCDML.BT_checkDown() && encoderDir[ENC_R].Down()) || (LCDML.BT_checkUp() && encoderDir[ENC_R].Up())) + if ((LCDML.BT_checkDown() && encoderDir[ENC_L].Down()) || (LCDML.BT_checkUp() && encoderDir[ENC_L].Up())) + { + LCDML.OTHER_jumpToFunc(UI_func_volume); + } + else if ((LCDML.BT_checkDown() && encoderDir[ENC_R].Down()) || (LCDML.BT_checkUp() && encoderDir[ENC_R].Up())) { if (LCDML.BT_checkDown()) configuration.dexed[instance_id].portamento_time = constrain(configuration.dexed[instance_id].portamento_time + ENCODER[ENC_R].speed(), PORTAMENTO_TIME_MIN, PORTAMENTO_TIME_MAX); @@ -2677,6 +2954,7 @@ void UI_func_portamento_time(uint8_t param) lcd_special_chars(SCROLLBAR); eeprom_write(); encoderDir[ENC_R].reset(); + } } @@ -2747,6 +3025,7 @@ void UI_handle_OP(uint8_t param, uint8_t op, uint8_t instance_id) if (LCDML.FUNC_setup()) // ****** SETUP ********* { encoderDir[ENC_R].reset(); + last_menu = LCDML.FUNC_getID(); lcd.setCursor(0, 0); lcd.print(F("Operator ")); @@ -2764,7 +3043,11 @@ void UI_handle_OP(uint8_t param, uint8_t op, uint8_t instance_id) if (LCDML.FUNC_loop()) // ****** LOOP ********* { - if (LCDML.BT_checkUp() && state == true) + if ((LCDML.BT_checkDown() && encoderDir[ENC_L].Down()) || (LCDML.BT_checkUp() && encoderDir[ENC_L].Up())) + { + LCDML.OTHER_jumpToFunc(UI_func_volume); + } + else if (LCDML.BT_checkUp() && state == true) { bitClear(configuration.dexed[instance_id].op_enabled, op); state = false; @@ -2795,6 +3078,7 @@ void UI_handle_OP(uint8_t param, uint8_t op, uint8_t instance_id) { eeprom_write(); encoderDir[ENC_R].reset(); + } } @@ -2805,6 +3089,7 @@ void UI_func_information(uint8_t param) char version_string[LCD_cols + 1]; encoderDir[ENC_R].reset(); + last_menu = LCDML.FUNC_getID(); generate_version_string(version_string, sizeof(version_string)); @@ -2815,7 +3100,11 @@ void UI_func_information(uint8_t param) lcd.print(sd_string); } - if (LCDML.FUNC_loop()) // ****** LOOP ********* + if ((LCDML.BT_checkDown() && encoderDir[ENC_L].Down()) || (LCDML.BT_checkUp() && encoderDir[ENC_L].Up())) + { + LCDML.OTHER_jumpToFunc(UI_func_volume); + } + else if (LCDML.FUNC_loop()) // ****** LOOP ********* { ; } @@ -2823,6 +3112,7 @@ void UI_func_information(uint8_t param) if (LCDML.FUNC_close()) // ****** STABLE END ********* { encoderDir[ENC_R].reset(); + } } @@ -2831,6 +3121,7 @@ void UI_func_midi_soft_thru(uint8_t param) if (LCDML.FUNC_setup()) // ****** SETUP ********* { encoderDir[ENC_R].reset(); + last_menu = LCDML.FUNC_getID(); lcd.setCursor(0, 0); lcd.print(F("MIDI Soft THRU")); @@ -2838,7 +3129,11 @@ void UI_func_midi_soft_thru(uint8_t param) if (LCDML.FUNC_loop()) // ****** LOOP ********* { - if ((LCDML.BT_checkDown() && encoderDir[ENC_R].Down()) || (LCDML.BT_checkUp() && encoderDir[ENC_R].Up())) + if ((LCDML.BT_checkDown() && encoderDir[ENC_L].Down()) || (LCDML.BT_checkUp() && encoderDir[ENC_L].Up())) + { + LCDML.OTHER_jumpToFunc(UI_func_volume); + } + else if ((LCDML.BT_checkDown() && encoderDir[ENC_R].Down()) || (LCDML.BT_checkUp() && encoderDir[ENC_R].Up())) { if (LCDML.BT_checkDown()) configuration.soft_midi_thru = constrain(configuration.soft_midi_thru + 1, SOFT_MIDI_THRU_MIN, SOFT_MIDI_THRU_MAX); @@ -2861,6 +3156,7 @@ void UI_func_midi_soft_thru(uint8_t param) { eeprom_write(); encoderDir[ENC_R].reset(); + } } @@ -2874,6 +3170,7 @@ void UI_func_velocity_level(uint8_t param) if (LCDML.FUNC_setup()) // ****** SETUP ********* { encoderDir[ENC_R].reset(); + last_menu = LCDML.FUNC_getID(); lcd_special_chars(BLOCKBAR); lcd_display_bar_int("Velocity Lvl", configuration.dexed[instance_id].velocity_level, 1.0, VELOCITY_LEVEL_MIN, VELOCITY_LEVEL_MAX, 3, false, false, false, true); @@ -2881,7 +3178,11 @@ void UI_func_velocity_level(uint8_t param) if (LCDML.FUNC_loop()) // ****** LOOP ********* { - if ((LCDML.BT_checkDown() && encoderDir[ENC_R].Down()) || (LCDML.BT_checkUp() && encoderDir[ENC_R].Up())) + if ((LCDML.BT_checkDown() && encoderDir[ENC_L].Down()) || (LCDML.BT_checkUp() && encoderDir[ENC_L].Up())) + { + LCDML.OTHER_jumpToFunc(UI_func_volume); + } + else if ((LCDML.BT_checkDown() && encoderDir[ENC_R].Down()) || (LCDML.BT_checkUp() && encoderDir[ENC_R].Up())) { if (LCDML.BT_checkDown()) configuration.dexed[instance_id].velocity_level = constrain(configuration.dexed[instance_id].velocity_level + ENCODER[ENC_R].speed(), VELOCITY_LEVEL_MIN, VELOCITY_LEVEL_MAX); @@ -2898,6 +3199,7 @@ void UI_func_velocity_level(uint8_t param) lcd_special_chars(SCROLLBAR); eeprom_write(); encoderDir[ENC_R].reset(); + } } @@ -2908,6 +3210,7 @@ void UI_func_firmware_reset(uint8_t param) if (LCDML.FUNC_setup()) // ****** SETUP ********* { encoderDir[ENC_R].reset(); + last_menu = LCDML.FUNC_getID(); // setup function lcd.print("Firmware reset?"); @@ -2917,7 +3220,11 @@ void UI_func_firmware_reset(uint8_t param) if (LCDML.FUNC_loop()) // ****** LOOP ********* { - if ((LCDML.BT_checkDown() && encoderDir[ENC_R].Down()) || (LCDML.BT_checkUp() && encoderDir[ENC_R].Up())) + if ((LCDML.BT_checkDown() && encoderDir[ENC_L].Down()) || (LCDML.BT_checkUp() && encoderDir[ENC_L].Up())) + { + LCDML.OTHER_jumpToFunc(UI_func_volume); + } + else if ((LCDML.BT_checkDown() && encoderDir[ENC_R].Down()) || (LCDML.BT_checkUp() && encoderDir[ENC_R].Up())) { if (LCDML.BT_checkDown()) yesno = true; @@ -2952,6 +3259,7 @@ void UI_func_firmware_reset(uint8_t param) } encoderDir[ENC_R].reset(); + } } @@ -3125,7 +3433,7 @@ void UI_func_voice_select(uint8_t param) { eeprom_write(); encoderDir[ENC_R].reset(); - last_menu = 255; + } } } @@ -3159,6 +3467,7 @@ void UI_func_volume(uint8_t param) } lcd_display_bar_int("Master Vol.", configuration.vol, 1.0, VOLUME_MIN, VOLUME_MAX, 3, false, false, false, false); + set_volume(configuration.vol, configuration.mono); } if (LCDML.FUNC_close()) // ****** STABLE END ********* @@ -3168,6 +3477,7 @@ void UI_func_volume(uint8_t param) eeprom_write(); encoderDir[ENC_L].reset(); + Serial.print(last_menu); if (last_menu < 255) LCDML.OTHER_jumpToID(last_menu); } diff --git a/config.h b/config.h index ff52a63..318470b 100644 --- a/config.h +++ b/config.h @@ -78,7 +78,7 @@ //************************************************************************************************* //* DEBUG OUTPUT SETTINGS //************************************************************************************************* -#define DEBUG 1 +//#define DEBUG 1 #define SERIAL_SPEED 230400 #define SHOW_XRUN 1 #define SHOW_CPU_LOAD_MSEC 5000