From 8fce47f55036ddc8b1c231abc22d66d80e042d22 Mon Sep 17 00:00:00 2001 From: Holger Wirtz Date: Mon, 18 May 2020 10:29:16 +0200 Subject: [PATCH] Several fixes for polyphony. Now long pressing preset encoder changes between instances. Small display fixes. --- .swo | Bin 0 -> 12288 bytes UI.hpp | 220 ++++++++++++++----------------------------------------- config.h | 2 +- 3 files changed, 58 insertions(+), 164 deletions(-) create mode 100644 .swo diff --git a/.swo b/.swo new file mode 100644 index 0000000000000000000000000000000000000000..47f3149e186c8db10752b1a35598d9bbc8c1d685 GIT binary patch literal 12288 zcmeI%y$ZrG5Ww-Po0Fn1P<7Eo{6G+#9333%T56l2s72bS;NsKxF!~riiLDykI!GxF z|AY2u5^~26GK8)NtHsiu_6L$iJ$t?5F&8<7u|AuDoV+>gyvZbI0aFMd@CO1_XFM9d zj(VrvvYQR(4|<{n1Q0*~0R#|0009ILC`&-^ExDw{DxZQTTc2-}%j$SIBDeI({{Nf%|J{rgUy>aWKmY**5I_I{1Q0*~0R#|0;Aa6l ljjbQJp0C5Ba>FRmUgRq`I_%ae?j~xhe651-L>TmD@&wRiBS8QF literal 0 HcmV?d00001 diff --git a/UI.hpp b/UI.hpp index 963d945..0b5d52b 100644 --- a/UI.hpp +++ b/UI.hpp @@ -157,7 +157,7 @@ const uint8_t meter_bar[5][8] = { }; */ -const uint8_t special_chars[17][8] = { +const uint8_t special_chars[18][8] = { {B11111, B11011, B10011, B11011, B11011, B11011, B11011, B11111}, // [0] 1 small invers {B11111, B11011, B10101, B11101, B11011, B10111, B10001, B11111}, // [1] 2 small invers {B11111, B11011, B10011, B11011, B11011, B11011, B11011, B11111}, // [2] 1 OP invers @@ -174,7 +174,8 @@ const uint8_t special_chars[17][8] = { {B00000, B00000, B11111, B11111, B11111, B11111, B11111, B11111}, // [13] Level 6 {B00000, B11111, B11111, B11111, B11111, B11111, B11111, B11111}, // [14] Level 7 {B11111, B11111, B11111, B11111, B11111, B11111, B11111, B11111}, // [15] Level 8 - {B00100, B00110, B00101, B00101, B01101, B11101, B11100, B11000} // [16] Note + {B00100, B00110, B00101, B00101, B01101, B11101, B11100, B11000}, // [16] Note + {B01110, B10001, B10001, B11111, B11011, B11011, B11111, B00000} // [17] Disabled 2nd instance symbol }; enum { SCROLLBAR, BLOCKBAR, METERBAR }; @@ -592,16 +593,6 @@ void lcdml_menu_control(void) #endif //LCDML.BT_quit(); encoderDir[ENC_R].ButtonLong(true); - - /* - if (LCDML.FUNC_getID() < 0xff) - LCDML.FUNC_setGBAToLastFunc(); - else - LCDML.FUNC_setGBAToLastCursorPos(); - - //LCDML.FUNC_setGBA(); - LCDML.OTHER_jumpToFunc(UI_func_voice_select); - */ } else if ((millis() - g_LCDML_CONTROL_button_press_time[ENC_R]) >= BUT_DEBOUNCE_MS) { @@ -622,12 +613,27 @@ void lcdml_menu_control(void) #endif encoderDir[ENC_R].ButtonLong(true); - if (LCDML.FUNC_getID() < 0xff) - LCDML.FUNC_setGBAToLastFunc(); +#if NUM_DEXED > 1 + if (LCDML.FUNC_getID() == LCDML.OTHER_getIDFromFunction(UI_func_voice_select)) + { + selected_instance_id = !selected_instance_id; + lcd_active_instance_number(selected_instance_id); + LCDML.OTHER_updateFunc(); + LCDML.loop_menu(); + } else - LCDML.FUNC_setGBAToLastCursorPos(); + { +#endif + if (LCDML.FUNC_getID() < 0xff) + LCDML.FUNC_setGBAToLastFunc(); + else + LCDML.FUNC_setGBAToLastCursorPos(); - LCDML.OTHER_jumpToFunc(UI_func_voice_select); + LCDML.OTHER_jumpToFunc(UI_func_voice_select); +#if NUM_DEXED > 1 + } +#endif + encoderDir[ENC_R].reset(); } // LEFT @@ -708,10 +714,6 @@ void lcdml_menu_control(void) #endif //encoderDir[ENC_L].ButtonLong(true); //LCDML.BT_quit(); - /* - for (uint8_t i = 0; i < NUM_DEXED; i++) - MicroDexed[i]->panic(); - */ } else if ((millis() - g_LCDML_CONTROL_button_press_time[ENC_L]) >= BUT_DEBOUNCE_MS) { @@ -907,7 +909,7 @@ void UI_func_reverb_roomsize(uint8_t param) encoderDir[ENC_R].reset(); lcd_special_chars(BLOCKBAR); - lcd_display_bar_int("Reverb Room", configuration.fx.reverb_roomsize, 1.0, REVERB_ROOMSIZE_MIN, REVERB_ROOMSIZE_MAX, 3, false, false, true); + lcd_display_bar_int("Reverb Room", configuration.fx.reverb_roomsize, 1.0, REVERB_ROOMSIZE_MIN, REVERB_ROOMSIZE_MAX, 2, false, false, true); } if (LCDML.FUNC_loop()) // ****** LOOP ********* @@ -919,7 +921,7 @@ void UI_func_reverb_roomsize(uint8_t param) else if (LCDML.BT_checkUp()) configuration.fx.reverb_roomsize = constrain(configuration.fx.reverb_roomsize - ENCODER[ENC_R].speed(), REVERB_ROOMSIZE_MIN, REVERB_ROOMSIZE_MAX); } - lcd_display_bar_int("Reverb Room", configuration.fx.reverb_roomsize, 1.0, REVERB_ROOMSIZE_MIN, REVERB_ROOMSIZE_MAX, 3, false, false, false); + lcd_display_bar_int("Reverb Room", configuration.fx.reverb_roomsize, 1.0, REVERB_ROOMSIZE_MIN, REVERB_ROOMSIZE_MAX, 2, false, false, false); freeverb_r.roomsize(mapfloat(configuration.fx.reverb_roomsize, REVERB_ROOMSIZE_MIN, REVERB_ROOMSIZE_MAX, 0.0, 1.0)); freeverb_l.roomsize(mapfloat(configuration.fx.reverb_roomsize, REVERB_ROOMSIZE_MIN, REVERB_ROOMSIZE_MAX, 0.0, 1.0)); @@ -940,7 +942,7 @@ void UI_func_reverb_damping(uint8_t param) encoderDir[ENC_R].reset(); lcd_special_chars(BLOCKBAR); - lcd_display_bar_int("Reverb Damp.", configuration.fx.reverb_damping, 1.0, REVERB_DAMPING_MIN, REVERB_DAMPING_MAX, 3, false, false, true); + lcd_display_bar_int("Reverb Damp.", configuration.fx.reverb_damping, 1.0, REVERB_DAMPING_MIN, REVERB_DAMPING_MAX, 2, false, false, true); } if (LCDML.FUNC_loop()) // ****** LOOP ********* @@ -953,7 +955,7 @@ void UI_func_reverb_damping(uint8_t param) configuration.fx.reverb_damping = constrain(configuration.fx.reverb_damping - ENCODER[ENC_R].speed(), REVERB_DAMPING_MIN, REVERB_DAMPING_MAX); } - lcd_display_bar_int("Reverb Damp.", configuration.fx.reverb_damping, 1.0, REVERB_DAMPING_MIN, REVERB_DAMPING_MAX, 3, false, false, false); + lcd_display_bar_int("Reverb Damp.", configuration.fx.reverb_damping, 1.0, REVERB_DAMPING_MIN, REVERB_DAMPING_MAX, 2, false, false, false); freeverb_l.damping(mapfloat(configuration.fx.reverb_damping, REVERB_DAMPING_MIN, REVERB_DAMPING_MAX, 0.0, 1.0)); freeverb_r.damping(mapfloat(configuration.fx.reverb_damping, REVERB_DAMPING_MIN, REVERB_DAMPING_MAX, 0.0, 1.0)); @@ -974,7 +976,7 @@ void UI_func_reverb_level(uint8_t param) encoderDir[ENC_R].reset(); lcd_special_chars(BLOCKBAR); - lcd_display_bar_int("Reverb Level", configuration.fx.reverb_level, 1.0, REVERB_LEVEL_MIN, REVERB_LEVEL_MAX, 3, false, false, true); + lcd_display_bar_int("Reverb Level", configuration.fx.reverb_level, 1.0, REVERB_LEVEL_MIN, REVERB_LEVEL_MAX, 2, false, false, true); } if (LCDML.FUNC_loop()) // ****** LOOP ********* @@ -987,7 +989,7 @@ void UI_func_reverb_level(uint8_t param) configuration.fx.reverb_level = constrain(configuration.fx.reverb_level - ENCODER[ENC_R].speed(), REVERB_LEVEL_MIN, REVERB_LEVEL_MAX); } - lcd_display_bar_int("Reverb Level", configuration.fx.reverb_level, 1.0, REVERB_LEVEL_MIN, REVERB_LEVEL_MAX, 3, false, false, true); + lcd_display_bar_int("Reverb Level", configuration.fx.reverb_level, 1.0, REVERB_LEVEL_MIN, REVERB_LEVEL_MAX, 2, false, false, true); master_mixer_r.gain(3, configuration.fx.reverb_level / 100.0); master_mixer_l.gain(3, configuration.fx.reverb_level / 100.0); @@ -1010,14 +1012,11 @@ void UI_func_chorus_frequency(uint8_t param) lcd_special_chars(BLOCKBAR); lcd_display_bar_float("Chorus Frq.", configuration.fx.chorus_frequency[selected_instance_id], 0.1, CHORUS_FREQUENCY_MIN, CHORUS_FREQUENCY_MAX, 2, 1, false, false, true); -#if NUM_DEXED > 1 lcd_active_instance_number(selected_instance_id); lcd.setCursor(14, 0); lcd.write(0); lcd.setCursor(15, 0); lcd.write(1); -#endif - } if (LCDML.FUNC_loop()) // ****** LOOP ********* @@ -1065,13 +1064,11 @@ void UI_func_chorus_waveform(uint8_t param) lcd.setCursor(0, 0); lcd.print(F("Chorus Waveform")); -#if NUM_DEXED > 1 lcd_active_instance_number(selected_instance_id); lcd.setCursor(14, 0); lcd.write(0); lcd.setCursor(15, 0); lcd.write(1); -#endif } if (LCDML.FUNC_loop()) // ****** LOOP ********* @@ -1128,15 +1125,13 @@ void UI_func_chorus_depth(uint8_t param) encoderDir[ENC_R].reset(); lcd_special_chars(BLOCKBAR); - lcd_display_bar_int("Chorus Dpt.", configuration.fx.chorus_depth[selected_instance_id], 1.0, CHORUS_DEPTH_MIN, CHORUS_DEPTH_MAX, 3, false, false, true); + lcd_display_bar_int("Chorus Dpt.", configuration.fx.chorus_depth[selected_instance_id], 1.0, CHORUS_DEPTH_MIN, CHORUS_DEPTH_MAX, 2, false, false, true); -#if NUM_DEXED > 1 lcd_active_instance_number(selected_instance_id); lcd.setCursor(14, 0); lcd.write(0); lcd.setCursor(15, 0); lcd.write(1); -#endif } if (LCDML.FUNC_loop()) // ****** LOOP ********* @@ -1160,7 +1155,7 @@ void UI_func_chorus_depth(uint8_t param) #endif } - lcd_display_bar_int("Chorus Dpt.", configuration.fx.chorus_depth[selected_instance_id], 1.0, CHORUS_DEPTH_MIN, CHORUS_DEPTH_MAX, 3, false, false, false); + lcd_display_bar_int("Chorus Dpt.", configuration.fx.chorus_depth[selected_instance_id], 1.0, CHORUS_DEPTH_MIN, CHORUS_DEPTH_MAX, 2, false, false, false); chorus_modulator[selected_instance_id]->amplitude(configuration.fx.chorus_depth[selected_instance_id] / 100.0); } @@ -1183,15 +1178,13 @@ void UI_func_chorus_level(uint8_t param) encoderDir[ENC_R].reset(); lcd_special_chars(BLOCKBAR); - lcd_display_bar_int("Chorus Lvl.", configuration.fx.chorus_level[selected_instance_id], 1.0, CHORUS_LEVEL_MIN, CHORUS_LEVEL_MAX, 3, false, false, true); + lcd_display_bar_int("Chorus Lvl.", configuration.fx.chorus_level[selected_instance_id], 1.0, CHORUS_LEVEL_MIN, CHORUS_LEVEL_MAX, 2, false, false, true); -#if NUM_DEXED > 1 lcd_active_instance_number(selected_instance_id); lcd.setCursor(14, 0); lcd.write(0); lcd.setCursor(15, 0); lcd.write(1); -#endif } if (LCDML.FUNC_loop()) // ****** LOOP ********* @@ -1215,7 +1208,7 @@ void UI_func_chorus_level(uint8_t param) #endif } - lcd_display_bar_int("Chorus Lvl.", configuration.fx.chorus_level[selected_instance_id], 1.0, CHORUS_LEVEL_MIN, CHORUS_LEVEL_MAX, 3, false, false, false); + lcd_display_bar_int("Chorus Lvl.", configuration.fx.chorus_level[selected_instance_id], 1.0, CHORUS_LEVEL_MIN, CHORUS_LEVEL_MAX, 2, false, false, false); //chorus_mixer[selected_instance_id]->gain(0, 1.0 - pseudo_log_curve(mapfloat(configuration.fx.chorus_level[selected_instance_id], CHORUS_LEVEL_MIN, CHORUS_LEVEL_MAX, 0.0, 1.0), true)); //chorus_mixer[selected_instance_id]->gain(1, pseudo_log_curve(mapfloat(configuration.fx.chorus_level[selected_instance_id], CHORUS_LEVEL_MIN, CHORUS_LEVEL_MAX, 0.0, 1.0), true)); @@ -1241,15 +1234,13 @@ void UI_func_delay_time(uint8_t param) encoderDir[ENC_R].reset(); lcd_special_chars(BLOCKBAR); - lcd_display_bar_int("Delay Time", configuration.fx.delay_time[selected_instance_id], 10.0, DELAY_TIME_MIN, DELAY_TIME_MAX, 3, false, false, true); + lcd_display_bar_int("Delay Time", configuration.fx.delay_time[selected_instance_id], 10.0, DELAY_TIME_MIN, DELAY_TIME_MAX, 2, false, false, true); -#if NUM_DEXED > 1 lcd_active_instance_number(selected_instance_id); lcd.setCursor(14, 0); lcd.write(0); lcd.setCursor(15, 0); lcd.write(1); -#endif } if (LCDML.FUNC_loop()) // ****** LOOP ********* @@ -1273,7 +1264,7 @@ void UI_func_delay_time(uint8_t param) #endif } - lcd_display_bar_int("Delay Time", configuration.fx.delay_time[selected_instance_id], 10.0, DELAY_TIME_MIN, DELAY_TIME_MAX, 3, false, false, true); + lcd_display_bar_int("Delay Time", configuration.fx.delay_time[selected_instance_id], 10.0, DELAY_TIME_MIN, DELAY_TIME_MAX, 2, false, false, true); delay_fx[selected_instance_id]->delay(0, configuration.fx.delay_time[selected_instance_id] * 10); } @@ -1296,15 +1287,13 @@ void UI_func_delay_feedback(uint8_t param) encoderDir[ENC_R].reset(); lcd_special_chars(BLOCKBAR); - lcd_display_bar_int("Delay Feedb.", configuration.fx.delay_feedback[selected_instance_id], 1.0, DELAY_FEEDBACK_MIN, DELAY_FEEDBACK_MAX, 3, false, false, true); + lcd_display_bar_int("Delay Feedb.", configuration.fx.delay_feedback[selected_instance_id], 1.0, DELAY_FEEDBACK_MIN, DELAY_FEEDBACK_MAX, 2, false, false, true); -#if NUM_DEXED > 1 lcd_active_instance_number(selected_instance_id); lcd.setCursor(14, 0); lcd.write(0); lcd.setCursor(15, 0); lcd.write(1); -#endif } if (LCDML.FUNC_loop()) // ****** LOOP ********* @@ -1328,7 +1317,7 @@ void UI_func_delay_feedback(uint8_t param) #endif } - lcd_display_bar_int("Delay Feedb.", configuration.fx.delay_feedback[selected_instance_id], 1.0, DELAY_FEEDBACK_MIN, DELAY_FEEDBACK_MAX, 3, false, false, false); + lcd_display_bar_int("Delay Feedb.", configuration.fx.delay_feedback[selected_instance_id], 1.0, DELAY_FEEDBACK_MIN, DELAY_FEEDBACK_MAX, 2, false, false, false); delay_fb_mixer[selected_instance_id]->gain(1, configuration.fx.delay_feedback[selected_instance_id] / 100.0); // amount of feedback } @@ -1351,15 +1340,13 @@ void UI_func_delay_level(uint8_t param) encoderDir[ENC_R].reset(); lcd_special_chars(BLOCKBAR); - lcd_display_bar_int("Delay Lvl.", configuration.fx.delay_level[selected_instance_id], 1.0, DELAY_LEVEL_MIN, DELAY_LEVEL_MAX, 3, false, false, true); + lcd_display_bar_int("Delay Lvl.", configuration.fx.delay_level[selected_instance_id], 1.0, DELAY_LEVEL_MIN, DELAY_LEVEL_MAX, 2, false, false, true); -#if NUM_DEXED > 1 lcd_active_instance_number(selected_instance_id); lcd.setCursor(14, 0); lcd.write(0); lcd.setCursor(15, 0); lcd.write(1); -#endif } if (LCDML.FUNC_loop()) // ****** LOOP ********* @@ -1383,7 +1370,7 @@ void UI_func_delay_level(uint8_t param) #endif } - lcd_display_bar_int("Delay Lvl.", configuration.fx.delay_level[selected_instance_id], 1.0, DELAY_LEVEL_MIN, DELAY_LEVEL_MAX, 3, false, false, false); + lcd_display_bar_int("Delay Lvl.", configuration.fx.delay_level[selected_instance_id], 1.0, DELAY_LEVEL_MIN, DELAY_LEVEL_MAX, 2, false, false, false); delay_mixer[selected_instance_id]->gain(1, mapfloat(configuration.fx.delay_level[selected_instance_id], DELAY_LEVEL_MIN, DELAY_LEVEL_MAX, 0.0, 1.0)); } @@ -1406,15 +1393,13 @@ void UI_func_reverb_send(uint8_t param) encoderDir[ENC_R].reset(); lcd_special_chars(BLOCKBAR); - lcd_display_bar_int("Reverb Send", configuration.fx.reverb_send[selected_instance_id], 1.0, REVERB_SEND_MIN, REVERB_SEND_MAX, 3, false, false, true); + lcd_display_bar_int("Reverb Send", configuration.fx.reverb_send[selected_instance_id], 1.0, REVERB_SEND_MIN, REVERB_SEND_MAX, 2, false, false, true); -#if NUM_DEXED > 1 lcd_active_instance_number(selected_instance_id); lcd.setCursor(14, 0); lcd.write(0); lcd.setCursor(15, 0); lcd.write(1); -#endif } if (LCDML.FUNC_loop()) // ****** LOOP ********* @@ -1438,7 +1423,7 @@ void UI_func_reverb_send(uint8_t param) #endif } - lcd_display_bar_int("Reverb Send", configuration.fx.reverb_send[selected_instance_id], 1.0, REVERB_SEND_MIN, REVERB_SEND_MAX, 3, false, false, false); + lcd_display_bar_int("Reverb Send", configuration.fx.reverb_send[selected_instance_id], 1.0, REVERB_SEND_MIN, REVERB_SEND_MAX, 2, false, false, false); reverb_mixer_r.gain(selected_instance_id, configuration.fx.reverb_send[selected_instance_id] / 100.0); reverb_mixer_l.gain(selected_instance_id, configuration.fx.reverb_send[selected_instance_id] / 100.0); @@ -1462,15 +1447,13 @@ void UI_func_filter_cutoff(uint8_t param) encoderDir[ENC_R].reset(); lcd_special_chars(BLOCKBAR); - lcd_display_bar_int("Filter Cut", configuration.dexed[selected_instance_id].filter_cutoff, 1.0, FILTER_CUTOFF_MIN, FILTER_CUTOFF_MAX, 3, false, false, true); + lcd_display_bar_int("Filter Cut", configuration.dexed[selected_instance_id].filter_cutoff, 1.0, FILTER_CUTOFF_MIN, FILTER_CUTOFF_MAX, 2, false, false, true); -#if NUM_DEXED > 1 lcd_active_instance_number(selected_instance_id); lcd.setCursor(14, 0); lcd.write(0); lcd.setCursor(15, 0); lcd.write(1); -#endif } if (LCDML.FUNC_loop()) // ****** LOOP ********* @@ -1494,7 +1477,7 @@ void UI_func_filter_cutoff(uint8_t param) #endif } - lcd_display_bar_int("Filter Cut", configuration.dexed[selected_instance_id].filter_cutoff, 1.0, FILTER_CUTOFF_MIN, FILTER_CUTOFF_MAX, 3, false, false, false); + lcd_display_bar_int("Filter Cut", configuration.dexed[selected_instance_id].filter_cutoff, 1.0, FILTER_CUTOFF_MIN, FILTER_CUTOFF_MAX, 2, false, false, false); MicroDexed[selected_instance_id]->fx.Cutoff = mapfloat(configuration.dexed[selected_instance_id].filter_cutoff, FILTER_CUTOFF_MIN, FILTER_CUTOFF_MAX, 1.0, 0.0); } @@ -1517,15 +1500,13 @@ void UI_func_filter_resonance(uint8_t param) encoderDir[ENC_R].reset(); lcd_special_chars(BLOCKBAR); - lcd_display_bar_int("Filter Res", configuration.dexed[selected_instance_id].filter_resonance, 1.0, FILTER_RESONANCE_MIN, FILTER_RESONANCE_MAX, 3, false, false, true); + lcd_display_bar_int("Filter Res", configuration.dexed[selected_instance_id].filter_resonance, 1.0, FILTER_RESONANCE_MIN, FILTER_RESONANCE_MAX, 2, false, false, true); -#if NUM_DEXED > 1 lcd_active_instance_number(selected_instance_id); lcd.setCursor(14, 0); lcd.write(0); lcd.setCursor(15, 0); lcd.write(1); -#endif } if (LCDML.FUNC_loop()) // ****** LOOP ********* @@ -1549,7 +1530,7 @@ void UI_func_filter_resonance(uint8_t param) #endif } - lcd_display_bar_int("Filter Res", configuration.dexed[selected_instance_id].filter_resonance, 1.0, FILTER_RESONANCE_MIN, FILTER_RESONANCE_MAX, 3, false, false, false); + lcd_display_bar_int("Filter Res", configuration.dexed[selected_instance_id].filter_resonance, 1.0, FILTER_RESONANCE_MIN, FILTER_RESONANCE_MAX, 2, false, false, false); MicroDexed[selected_instance_id]->fx.Reso = mapfloat(configuration.dexed[selected_instance_id].filter_resonance, FILTER_RESONANCE_MIN, FILTER_RESONANCE_MAX, 1.0, 0.0); } @@ -1575,13 +1556,11 @@ void UI_func_transpose(uint8_t param) lcd_special_chars(METERBAR); lcd_display_meter_int("Transpose", configuration.dexed[selected_instance_id].transpose, 1.0, -24.0, TRANSPOSE_MIN, TRANSPOSE_MAX, 2, false, true, true); -#if NUM_DEXED > 1 lcd_active_instance_number(selected_instance_id); lcd.setCursor(14, 0); lcd.write(0); lcd.setCursor(15, 0); lcd.write(1); -#endif } if (LCDML.FUNC_loop()) // ****** LOOP ********* @@ -1631,13 +1610,11 @@ void UI_func_tune(uint8_t param) lcd_special_chars(METERBAR); lcd_display_meter_int("Fine Tune", configuration.dexed[selected_instance_id].tune, 1.0, -100.0, TUNE_MIN, TUNE_MAX, 2, false, true, true); -#if NUM_DEXED > 1 lcd_active_instance_number(selected_instance_id); lcd.setCursor(14, 0); lcd.write(0); lcd.setCursor(15, 0); lcd.write(1); -#endif } if (LCDML.FUNC_loop()) // ****** LOOP ********* @@ -1687,13 +1664,11 @@ void UI_func_midi_channel(uint8_t param) lcd.setCursor(0, 0); lcd.print(F("MIDI Channel")); -#if NUM_DEXED > 1 lcd_active_instance_number(selected_instance_id); lcd.setCursor(14, 0); lcd.write(0); lcd.setCursor(15, 0); lcd.write(1); -#endif } if (LCDML.FUNC_loop()) // ****** LOOP ********* @@ -1761,13 +1736,11 @@ void UI_func_lowest_note(uint8_t param) lcd.print(note_name); lcd.print(F("]")); -#if NUM_DEXED > 1 lcd_active_instance_number(selected_instance_id); lcd.setCursor(14, 0); lcd.write(0); lcd.setCursor(15, 0); lcd.write(1); -#endif } if (LCDML.FUNC_loop()) // ****** LOOP ********* @@ -1822,13 +1795,11 @@ void UI_func_highest_note(uint8_t param) lcd.print(note_name); lcd.print(F("]")); -#if NUM_DEXED > 1 lcd_active_instance_number(selected_instance_id); lcd.setCursor(14, 0); lcd.write(0); lcd.setCursor(15, 0); lcd.write(1); -#endif } if (LCDML.FUNC_loop()) // ****** LOOP ********* @@ -1876,13 +1847,11 @@ void UI_func_sound_intensity(uint8_t param) lcd_special_chars(BLOCKBAR); lcd_display_bar_int("Voice Level", configuration.dexed[selected_instance_id].sound_intensity, 1.0, SOUND_INTENSITY_MIN, SOUND_INTENSITY_MAX, 3, false, false, true); -#if NUM_DEXED > 1 lcd_active_instance_number(selected_instance_id); lcd.setCursor(14, 0); lcd.write(0); lcd.setCursor(15, 0); lcd.write(1); -#endif } if (LCDML.FUNC_loop()) // ****** LOOP ********* @@ -1940,13 +1909,11 @@ void UI_func_panorama(uint8_t param) lcd_special_chars(METERBAR); lcd_display_meter_float("Panorama", configuration.dexed[selected_instance_id].pan, 0.05, -20.0, PANORAMA_MIN, PANORAMA_MAX, 1, 1, false, true, true); -#if NUM_DEXED > 1 lcd_active_instance_number(selected_instance_id); lcd.setCursor(14, 0); lcd.write(0); lcd.setCursor(15, 0); lcd.write(1); -#endif } if (LCDML.FUNC_loop()) // ****** LOOP ********* @@ -2059,15 +2026,13 @@ void UI_func_polyphony(uint8_t param) encoderDir[ENC_R].reset(); lcd_special_chars(BLOCKBAR); - lcd_display_bar_int("Polyphony", configuration.dexed[selected_instance_id].polyphony, 1.0, POLYPHONY_MIN, POLYPHONY_MAX, 3, false, false, true); + lcd_display_bar_int("Polyphony", configuration.dexed[selected_instance_id].polyphony, 1.0, POLYPHONY_MIN, POLYPHONY_MAX, 2, false, false, true); -#if NUM_DEXED > 1 lcd_active_instance_number(selected_instance_id); lcd.setCursor(14, 0); lcd.write(0); lcd.setCursor(15, 0); lcd.write(1); -#endif } if (LCDML.FUNC_loop()) // ****** LOOP ********* @@ -2076,7 +2041,9 @@ void UI_func_polyphony(uint8_t param) { if (LCDML.BT_checkDown()) { +#if NUM_DEXED > 1 if (configuration.dexed[0].polyphony + configuration.dexed[1].polyphony + 1 <= POLYPHONY_MAX) +#endif configuration.dexed[selected_instance_id].polyphony = constrain(configuration.dexed[selected_instance_id].polyphony + 1, POLYPHONY_MIN, POLYPHONY_MAX); } else if (LCDML.BT_checkUp()) @@ -2096,11 +2063,11 @@ void UI_func_polyphony(uint8_t param) lcd.setCursor(15, 0); lcd.write(1); } -#endif lcd_active_instance_number(selected_instance_id); +#endif } - lcd_display_bar_int("Polyphony", configuration.dexed[selected_instance_id].polyphony, 1.0, POLYPHONY_MIN, POLYPHONY_MAX, 3, false, false, false); + lcd_display_bar_int("Polyphony", configuration.dexed[selected_instance_id].polyphony, 1.0, POLYPHONY_MIN, POLYPHONY_MAX, 2, false, false, false); MicroDexed[selected_instance_id]->setMaxNotes(configuration.dexed[selected_instance_id].polyphony); } @@ -2125,13 +2092,11 @@ void UI_func_engine(uint8_t param) lcd.setCursor(0, 0); lcd.print(F("Engine")); -#if NUM_DEXED > 1 lcd_active_instance_number(selected_instance_id); lcd.setCursor(14, 0); lcd.write(0); lcd.setCursor(15, 0); lcd.write(1); -#endif } if (LCDML.FUNC_loop()) // ****** LOOP ********* @@ -2191,13 +2156,11 @@ void UI_func_mono_poly(uint8_t param) lcd.setCursor(0, 0); lcd.print(F("Mono/Polyphonic")); -#if NUM_DEXED > 1 lcd_active_instance_number(selected_instance_id); lcd.setCursor(14, 0); lcd.write(0); lcd.setCursor(15, 0); lcd.write(1); -#endif } if (LCDML.FUNC_loop()) // ****** LOOP ********* @@ -2218,8 +2181,8 @@ void UI_func_mono_poly(uint8_t param) lcd.setCursor(15, 0); lcd.write(1); } -#endif lcd_active_instance_number(selected_instance_id); +#endif } MicroDexed[selected_instance_id]->setMonoMode(!configuration.dexed[selected_instance_id].monopoly); @@ -2257,13 +2220,11 @@ void UI_func_note_refresh(uint8_t param) lcd.setCursor(0, 0); lcd.print(F("Note Refresh")); -#if NUM_DEXED > 1 lcd_active_instance_number(selected_instance_id); lcd.setCursor(14, 0); lcd.write(0); lcd.setCursor(15, 0); lcd.write(1); -#endif } if (LCDML.FUNC_loop()) // ****** LOOP ********* @@ -2322,13 +2283,11 @@ void UI_func_pb_range(uint8_t param) lcd_special_chars(BLOCKBAR); lcd_display_bar_int("PB Range", configuration.dexed[selected_instance_id].pb_range, 1.0, PB_RANGE_MIN, PB_RANGE_MAX, 2, false, false, true); -#if NUM_DEXED > 1 lcd_active_instance_number(selected_instance_id); lcd.setCursor(14, 0); lcd.write(0); lcd.setCursor(15, 0); lcd.write(1); -#endif } if (LCDML.FUNC_loop()) // ****** LOOP ********* @@ -2377,13 +2336,11 @@ void UI_func_pb_step(uint8_t param) lcd_special_chars(BLOCKBAR); lcd_display_bar_int("PB Step", configuration.dexed[selected_instance_id].pb_step, 1.0, PB_STEP_MIN, PB_STEP_MAX, 2, false, false, true); -#if NUM_DEXED > 1 lcd_active_instance_number(selected_instance_id); lcd.setCursor(14, 0); lcd.write(0); lcd.setCursor(15, 0); lcd.write(1); -#endif } if (LCDML.FUNC_loop()) // ****** LOOP ********* @@ -2432,13 +2389,11 @@ void UI_func_mw_range(uint8_t param) lcd_special_chars(BLOCKBAR); lcd_display_bar_int("MW Range", configuration.dexed[selected_instance_id].mw_range, 1.0, MW_RANGE_MIN, MW_RANGE_MAX, 2, false, false, true); -#if NUM_DEXED > 1 lcd_active_instance_number(selected_instance_id); lcd.setCursor(14, 0); lcd.write(0); lcd.setCursor(15, 0); lcd.write(1); -#endif } if (LCDML.FUNC_loop()) // ****** LOOP ********* @@ -2487,13 +2442,11 @@ void UI_func_mw_assign(uint8_t param) lcd.setCursor(0, 0); lcd.print(F("MW Assign")); -#if NUM_DEXED > 1 lcd_active_instance_number(selected_instance_id); lcd.setCursor(14, 0); lcd.write(0); lcd.setCursor(15, 0); lcd.write(1); -#endif } if (LCDML.FUNC_loop()) // ****** LOOP ********* @@ -2569,13 +2522,11 @@ void UI_func_mw_mode(uint8_t param) lcd.setCursor(0, 0); lcd.print(F("MW Mode")); -#if NUM_DEXED > 1 lcd_active_instance_number(selected_instance_id); lcd.setCursor(14, 0); lcd.write(0); lcd.setCursor(15, 0); lcd.write(1); -#endif } if (LCDML.FUNC_loop()) // ****** LOOP ********* @@ -2637,14 +2588,11 @@ void UI_func_fc_range(uint8_t param) lcd_special_chars(BLOCKBAR); lcd_display_bar_int("FC Range", configuration.dexed[selected_instance_id].fc_range, 1.0, FC_RANGE_MIN, FC_RANGE_MAX, 2, false, false, true); -#if NUM_DEXED > 1 lcd_active_instance_number(selected_instance_id); lcd.setCursor(14, 0); lcd.write(0); lcd.setCursor(15, 0); lcd.write(1); -#endif - } if (LCDML.FUNC_loop()) // ****** LOOP ********* @@ -2693,13 +2641,11 @@ void UI_func_fc_assign(uint8_t param) lcd.setCursor(0, 0); lcd.print(F("FC Assign")); -#if NUM_DEXED > 1 lcd_active_instance_number(selected_instance_id); lcd.setCursor(14, 0); lcd.write(0); lcd.setCursor(15, 0); lcd.write(1); -#endif } if (LCDML.FUNC_loop()) // ****** LOOP ********* @@ -2775,13 +2721,11 @@ void UI_func_fc_mode(uint8_t param) lcd.setCursor(0, 0); lcd.print(F("FC Mode")); -#if NUM_DEXED > 1 lcd_active_instance_number(selected_instance_id); lcd.setCursor(14, 0); lcd.write(0); lcd.setCursor(15, 0); lcd.write(1); -#endif } if (LCDML.FUNC_loop()) // ****** LOOP ********* @@ -2843,13 +2787,11 @@ void UI_func_bc_range(uint8_t param) lcd_special_chars(BLOCKBAR); lcd_display_bar_int("BC Range", configuration.dexed[selected_instance_id].bc_range, 1.0, BC_RANGE_MIN, BC_RANGE_MAX, 2, false, false, true); -#if NUM_DEXED > 1 lcd_active_instance_number(selected_instance_id); lcd.setCursor(14, 0); lcd.write(0); lcd.setCursor(15, 0); lcd.write(1); -#endif } if (LCDML.FUNC_loop()) // ****** LOOP ********* @@ -2898,13 +2840,11 @@ void UI_func_bc_assign(uint8_t param) lcd.setCursor(0, 0); lcd.print(F("BC Assign")); -#if NUM_DEXED > 1 lcd_active_instance_number(selected_instance_id); lcd.setCursor(14, 0); lcd.write(0); lcd.setCursor(15, 0); lcd.write(1); -#endif } if (LCDML.FUNC_loop()) // ****** LOOP ********* @@ -2980,13 +2920,11 @@ void UI_func_bc_mode(uint8_t param) lcd.setCursor(0, 0); lcd.print(F("BC Mode")); -#if NUM_DEXED > 1 lcd_active_instance_number(selected_instance_id); lcd.setCursor(14, 0); lcd.write(0); lcd.setCursor(15, 0); lcd.write(1); -#endif } if (LCDML.FUNC_loop()) // ****** LOOP ********* @@ -3048,13 +2986,11 @@ void UI_func_at_range(uint8_t param) lcd_special_chars(BLOCKBAR); lcd_display_bar_int("AT Range", configuration.dexed[selected_instance_id].at_range, 1.0, AT_RANGE_MIN, AT_RANGE_MAX, 2, false, false, true); -#if NUM_DEXED > 1 lcd_active_instance_number(selected_instance_id); lcd.setCursor(14, 0); lcd.write(0); lcd.setCursor(15, 0); lcd.write(1); -#endif } if (LCDML.FUNC_loop()) // ****** LOOP ********* @@ -3104,13 +3040,11 @@ void UI_func_at_assign(uint8_t param) lcd.setCursor(0, 0); lcd.print(F("AT Assign")); -#if NUM_DEXED > 1 lcd_active_instance_number(selected_instance_id); lcd.setCursor(14, 0); lcd.write(0); lcd.setCursor(15, 0); lcd.write(1); -#endif } if (LCDML.FUNC_loop()) // ****** LOOP ********* @@ -3186,13 +3120,11 @@ void UI_func_at_mode(uint8_t param) lcd.setCursor(0, 0); lcd.print(F("AT Mode")); -#if NUM_DEXED > 1 lcd_active_instance_number(selected_instance_id); lcd.setCursor(14, 0); lcd.write(0); lcd.setCursor(15, 0); lcd.write(1); -#endif } if (LCDML.FUNC_loop()) // ****** LOOP ********* @@ -3254,13 +3186,11 @@ void UI_func_portamento_mode(uint8_t param) lcd.setCursor(0, 0); lcd.print(F("Portamento Mode")); -#if NUM_DEXED > 1 lcd_active_instance_number(selected_instance_id); lcd.setCursor(14, 0); lcd.write(0); lcd.setCursor(15, 0); lcd.write(1); -#endif } if (LCDML.FUNC_loop()) // ****** LOOP ********* @@ -3324,13 +3254,11 @@ void UI_func_portamento_glissando(uint8_t param) lcd.setCursor(0, 0); lcd.print(F("Portam. Gliss.")); -#if NUM_DEXED > 1 lcd_active_instance_number(selected_instance_id); lcd.setCursor(14, 0); lcd.write(0); lcd.setCursor(15, 0); lcd.write(1); -#endif } if (LCDML.FUNC_loop()) // ****** LOOP ********* @@ -3388,13 +3316,11 @@ void UI_func_portamento_time(uint8_t param) lcd_special_chars(BLOCKBAR); lcd_display_bar_int("Portam. Time", configuration.dexed[selected_instance_id].portamento_time, 1.0, PORTAMENTO_TIME_MIN, PORTAMENTO_TIME_MAX, 2, false, false, true); -#if NUM_DEXED > 1 lcd_active_instance_number(selected_instance_id); lcd.setCursor(14, 0); lcd.write(0); lcd.setCursor(15, 0); lcd.write(1); -#endif } if (LCDML.FUNC_loop()) // ****** LOOP ********* @@ -3450,12 +3376,10 @@ void UI_handle_OP(uint8_t param) for (uint8_t i = 2; i < 8; i++) lcd.write(i); -#if NUM_DEXED > 1 lcd.setCursor(14, 0); lcd.write(0); lcd.setCursor(15, 0); lcd.write(1); -#endif lcd.setCursor(op_selected, 1); lcd.blink(); @@ -3701,19 +3625,17 @@ void UI_func_voice_select(uint8_t param) if (!get_voice_by_bank_name(configuration.performance.bank[selected_instance_id], bank_name, configuration.performance.voice[selected_instance_id], voice_name, sizeof(voice_name))) strncpy(voice_name, "*ERROR*", sizeof(voice_name)); -#if NUM_DEXED > 1 lcd.setCursor(14, 0); lcd.write(0); lcd.setCursor(15, 0); lcd.write(1); -#endif -#ifdef TEENSY3 +#ifdef TEENSY3_6 lcd.createChar(6, (uint8_t*)special_chars[16]); // MIDI activity note symbol + lcd.createChar(7, (uint8_t*)special_chars[16]); // MIDI activity note symbol #endif } - if (LCDML.FUNC_loop()) // ****** LOOP ********* { char bank_name[BANK_NAME_LEN]; @@ -3807,7 +3729,6 @@ void UI_func_voice_select(uint8_t param) break; } } -#if NUM_DEXED == 1 else if (LCDML.BT_checkEnter()) { if (menu_voice_select == MENU_VOICE_BANK) @@ -3815,38 +3736,6 @@ void UI_func_voice_select(uint8_t param) else menu_voice_select = MENU_VOICE_BANK; } -#else - else if (LCDML.BT_checkEnter()) - { - if (menu_voice_select == MENU_VOICE_BANK) - { - menu_voice_select = MENU_VOICE_SOUND; - selected_instance_id = !selected_instance_id; - - lcd_active_instance_number(selected_instance_id); - - char bank_name[BANK_NAME_LEN]; - char voice_name[VOICE_NAME_LEN]; - - if (!get_bank_name(configuration.performance.bank[selected_instance_id], bank_name, sizeof(bank_name))) - strncpy(bank_name, "*ERROR*", sizeof(bank_name)); - if (!get_voice_by_bank_name(configuration.performance.bank[selected_instance_id], bank_name, configuration.performance.voice[selected_instance_id], voice_name, sizeof(voice_name))) - strncpy(voice_name, "*ERROR*", sizeof(voice_name)); - - lcd.show(0, 0, 2, configuration.performance.bank[selected_instance_id]); - lcd.show(1, 0, 2, configuration.performance.voice[selected_instance_id] + 1); - lcd.show(0, 3, 10, bank_name); - lcd.show(1, 3, 10, voice_name); - - lcd.setCursor(14, 0); - lcd.write(0); - lcd.setCursor(15, 0); - lcd.write(1); - } - else - menu_voice_select = MENU_VOICE_BANK; - } -#endif } if (strlen(g_bank_name[selected_instance_id]) > 0) @@ -5163,8 +5052,13 @@ void lcd_active_instance_number(uint8_t instance_id) } } +#if NUM_DEXED == 1 + lcd.createChar(0, instance_num[0]); + lcd.createChar(1, (uint8_t*)special_chars[17]); +#else lcd.createChar(0, instance_num[0]); lcd.createChar(1, instance_num[1]); +#endif } void lcd_OP_active_instance_number(uint8_t instance_id, uint8_t op) diff --git a/config.h b/config.h index bd01a91..0390fcf 100644 --- a/config.h +++ b/config.h @@ -245,7 +245,7 @@ //************************************************************************************************* //* DO NO CHANGE ANYTHING BEYOND IF YOU DON'T KNOW WHAT YOU ARE DOING !!! //************************************************************************************************* -#define NUM_DEXED 1 // 1 or 2 - nothing else! +#define NUM_DEXED 2 // 1 or 2 - nothing else! #define MAX_DEXED 2 // No! - even don't think about increasing this number! IT WILL PRODUCE MASSIVE PROBLEMS! //#define CPU_OVERLOAD_THROTTLE 95.0 // Level (in percent) when throttling should start #define CPU_OVERLOAD_THROTTLE_TIMER 100 // timer (in ms) when next throttling is possible