Fixes for loading/saving.

Adding MIDI panic to long press left.
Fixing bank/voice loading.
pull/32/head
Holger Wirtz 5 years ago
parent b219264fce
commit 73e5827569
  1. 11
      MicroDexed.ino
  2. 110
      UI.hpp
  3. 4
      UI_1_FX.h
  4. 6
      config.h

@ -675,7 +675,8 @@ void handleControlChange(byte inChannel, byte inCtrl, byte inValue)
#ifdef DEBUG #ifdef DEBUG
Serial.println(F("BANK-SELECT CC")); Serial.println(F("BANK-SELECT CC"));
#endif #endif
configuration.performance.bank[instance_id] = inValue; configuration.performance.bank[instance_id] = constrain(inValue, 0, MAX_BANKS - 1);
load_sd_voice(configuration.performance.bank[instance_id], configuration.performance.voice[instance_id], instance_id);
break; break;
case 64: case 64:
MicroDexed[instance_id]->setSustain(inValue > 63); MicroDexed[instance_id]->setSustain(inValue > 63);
@ -769,18 +770,16 @@ void handleProgramChange(byte inChannel, byte inProgram)
{ {
if (checkMidiChannel(inChannel, instance_id)) if (checkMidiChannel(inChannel, instance_id))
{ {
if (inProgram < MAX_VOICES - 1) configuration.performance.voice[instance_id] = constrain(inProgram, 0, MAX_VOICES - 1);
{
#ifdef DISPLAY_LCD_SPI #ifdef DISPLAY_LCD_SPI
change_disp_sd(false); change_disp_sd(false);
#endif #endif
load_sd_voice(configuration.performance.bank[instance_id], inProgram, instance_id); load_sd_voice(configuration.performance.bank[instance_id], configuration.performance.voice[instance_id], instance_id);
#ifdef DISPLAY_LCD_SPI #ifdef DISPLAY_LCD_SPI
change_disp_sd(true); change_disp_sd(true);
#endif #endif
} }
} }
}
} }
void handleSystemExclusive(byte * sysex, uint len) void handleSystemExclusive(byte * sysex, uint len)
@ -1185,7 +1184,9 @@ void initial_values_from_eeprom(bool init)
for (uint8_t i = 0; i < NUM_DEXED; i++) for (uint8_t i = 0; i < NUM_DEXED; i++)
eeprom_get_dexed(i); eeprom_get_dexed(i);
#ifdef DEBUG
show_configuration(); show_configuration();
#endif
check_configuration(); check_configuration();

110
UI.hpp

@ -473,6 +473,7 @@ void lcdml_menu_control(void)
ENCODER[ENC_L].begin(); ENCODER[ENC_L].begin();
} }
//if (back_from_volume > BACK_FROM_VOLUME_MS && LCDML.FUNC_getID() == LCDML.OTHER_getIDFromFunction(UI_func_volume))
if (back_from_volume > BACK_FROM_VOLUME_MS && LCDML.FUNC_getID() == VOLUME_MENU_ID) if (back_from_volume > BACK_FROM_VOLUME_MS && LCDML.FUNC_getID() == VOLUME_MENU_ID)
{ {
encoderDir[ENC_L].reset(); encoderDir[ENC_L].reset();
@ -602,6 +603,7 @@ void lcdml_menu_control(void)
#endif #endif
encoderDir[ENC_L].Down(true); encoderDir[ENC_L].Down(true);
LCDML.BT_down(); LCDML.BT_down();
//if (LCDML.FUNC_getID() != LCDML.OTHER_getIDFromFunction(UI_func_volume))
if (LCDML.FUNC_getID() != VOLUME_MENU_ID) if (LCDML.FUNC_getID() != VOLUME_MENU_ID)
{ {
LCDML.OTHER_jumpToFunc(UI_func_volume); LCDML.OTHER_jumpToFunc(UI_func_volume);
@ -628,6 +630,7 @@ void lcdml_menu_control(void)
#endif #endif
encoderDir[ENC_L].Up(true); encoderDir[ENC_L].Up(true);
LCDML.BT_up(); LCDML.BT_up();
//if (LCDML.FUNC_getID() != LCDML.OTHER_getIDFromFunction(UI_func_volume))
if (LCDML.FUNC_getID() != VOLUME_MENU_ID) if (LCDML.FUNC_getID() != VOLUME_MENU_ID)
{ {
LCDML.OTHER_jumpToFunc(UI_func_volume); LCDML.OTHER_jumpToFunc(UI_func_volume);
@ -658,6 +661,8 @@ void lcdml_menu_control(void)
#endif #endif
//encoderDir[ENC_L].ButtonLong(true); //encoderDir[ENC_L].ButtonLong(true);
//LCDML.BT_quit(); //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]) >= g_LCDML_CONTROL_button_short_press) else if ((millis() - g_LCDML_CONTROL_button_press_time[ENC_L]) >= g_LCDML_CONTROL_button_short_press)
{ {
@ -3412,6 +3417,8 @@ void UI_func_load_performance(uint8_t param)
if (LCDML.FUNC_setup()) // ****** SETUP ********* if (LCDML.FUNC_setup()) // ****** SETUP *********
{ {
char tmp[10];
mode = 0; mode = 0;
encoderDir[ENC_R].reset(); encoderDir[ENC_R].reset();
@ -3419,15 +3426,9 @@ void UI_func_load_performance(uint8_t param)
lcd.setCursor(0, 0); lcd.setCursor(0, 0);
lcd.print(F("Load Perf. SD")); lcd.print(F("Load Perf. SD"));
lcd.setCursor(0, 1); lcd.setCursor(0, 1);
if (configuration.sys.performance_number == 0) sprintf(tmp, "[%2d]", configuration.sys.performance_number);
lcd.print(F("[DEFAULT]"));
else
{
char tmp[10];
sprintf(tmp, "[%7d]", configuration.sys.performance_number);
lcd.print(tmp); lcd.print(tmp);
} }
}
if (LCDML.FUNC_loop()) // ****** LOOP ********* if (LCDML.FUNC_loop()) // ****** LOOP *********
{ {
@ -3469,16 +3470,11 @@ void UI_func_load_performance(uint8_t param)
} }
lcd.setCursor(0, 1); lcd.setCursor(0, 1);
if (configuration.sys.performance_number == 0)
lcd.print(F("[DEFAULT]"));
else
{
char tmp[10]; char tmp[10];
sprintf(tmp, "[%7d]", configuration.sys.performance_number); sprintf(tmp, "[%2d]", configuration.sys.performance_number);
lcd.print(tmp); lcd.print(tmp);
} }
} }
}
if (LCDML.FUNC_close()) // ****** STABLE END ********* if (LCDML.FUNC_close()) // ****** STABLE END *********
{ {
@ -3503,6 +3499,8 @@ void UI_func_save_performance(uint8_t param)
if (LCDML.FUNC_setup()) // ****** SETUP ********* if (LCDML.FUNC_setup()) // ****** SETUP *********
{ {
char tmp[FILENAME_LEN];
yesno = false; yesno = false;
mode = 0; mode = 0;
@ -3511,16 +3509,9 @@ void UI_func_save_performance(uint8_t param)
lcd.setCursor(0, 0); lcd.setCursor(0, 0);
lcd.print(F("Save Perf. SD")); lcd.print(F("Save Perf. SD"));
lcd.setCursor(0, 1); lcd.setCursor(0, 1);
if (configuration.sys.performance_number == 0) sprintf(tmp, "[%2d]", configuration.sys.performance_number);
lcd.print(F("[DEFAULT]"));
else
{
char tmp[10];
sprintf(tmp, "[%7d]", configuration.sys.performance_number);
lcd.print(tmp); lcd.print(tmp);
}
char tmp[FILENAME_LEN];
sprintf(tmp, "/%s/%s%d.syx", PERFORMANCE_CONFIG_PATH, PERFORMANCE_CONFIG_NAME, configuration.sys.performance_number); sprintf(tmp, "/%s/%s%d.syx", PERFORMANCE_CONFIG_PATH, PERFORMANCE_CONFIG_NAME, configuration.sys.performance_number);
if (SD.exists(tmp)) if (SD.exists(tmp))
overwrite = true; overwrite = true;
@ -3585,15 +3576,9 @@ void UI_func_save_performance(uint8_t param)
overwrite = false; overwrite = false;
lcd.setCursor(0, 1); lcd.setCursor(0, 1);
if (configuration.sys.performance_number == 0) sprintf(tmp, "[%2d]", configuration.sys.performance_number);
lcd.print(F("[DEFAULT]"));
else
{
char tmp[10];
sprintf(tmp, "[%7d]", configuration.sys.performance_number);
lcd.print(tmp); lcd.print(tmp);
} }
}
else else
{ {
lcd.setCursor(12, 1); lcd.setCursor(12, 1);
@ -3631,6 +3616,8 @@ void UI_func_load_voiceconfig(uint8_t param)
if (LCDML.FUNC_setup()) // ****** SETUP ********* if (LCDML.FUNC_setup()) // ****** SETUP *********
{ {
char tmp[10];
instance_id = 0; instance_id = 0;
encoderDir[ENC_R].reset(); encoderDir[ENC_R].reset();
@ -3644,14 +3631,8 @@ void UI_func_load_voiceconfig(uint8_t param)
#else #else
mode = 1; mode = 1;
lcd.setCursor(0, 1); lcd.setCursor(0, 1);
if (configuration.performance.voiceconfig_number[instance_id] == 0) sprintf(tmp, "[%2d]", configuration.performance.voiceconfig_number[instance_id]);
lcd.print(F("[DEFAULT]"));
else
{
char tmp[10];
sprintf(tmp, "[%7d]", configuration.performance.voiceconfig_number[instance_id]);
lcd.print(tmp); lcd.print(tmp);
}
#endif #endif
} }
@ -3695,16 +3676,11 @@ void UI_func_load_voiceconfig(uint8_t param)
else if (mode == 1) else if (mode == 1)
{ {
lcd.setCursor(0, 1); lcd.setCursor(0, 1);
if (configuration.performance.voiceconfig_number[instance_id] == 0)
lcd.print(F("[DEFAULT]"));
else
{
char tmp[10]; char tmp[10];
sprintf(tmp, "[%7d]", configuration.performance.voiceconfig_number[instance_id]); sprintf(tmp, "[%2d]", configuration.performance.voiceconfig_number[instance_id]);
lcd.print(tmp); lcd.print(tmp);
} }
} }
}
encoderDir[ENC_R].reset(); encoderDir[ENC_R].reset();
} }
@ -3737,6 +3713,8 @@ void UI_func_save_voiceconfig(uint8_t param)
if (LCDML.FUNC_setup()) // ****** SETUP ********* if (LCDML.FUNC_setup()) // ****** SETUP *********
{ {
char tmp[FILENAME_LEN];
yesno = false; yesno = false;
instance_id = 0; instance_id = 0;
@ -3751,16 +3729,9 @@ void UI_func_save_voiceconfig(uint8_t param)
#else #else
mode = 1; mode = 1;
lcd.setCursor(0, 1); lcd.setCursor(0, 1);
if (configuration.performance.voiceconfig_number[instance_id] == 0) sprintf(tmp, "[%2d]", configuration.performance.voiceconfig_number[instance_id]);
lcd.print(F("[DEFAULT]"));
else
{
char tmp[10];
sprintf(tmp, "[%7d]", configuration.performance.voiceconfig_number[instance_id]);
lcd.print(tmp); lcd.print(tmp);
}
char tmp[FILENAME_LEN];
sprintf(tmp, "/%s/%s%d.syx", VOICE_CONFIG_PATH, VOICE_CONFIG_NAME, configuration.performance.voiceconfig_number[instance_id]); sprintf(tmp, "/%s/%s%d.syx", VOICE_CONFIG_PATH, VOICE_CONFIG_NAME, configuration.performance.voiceconfig_number[instance_id]);
if (SD.exists(tmp)) if (SD.exists(tmp))
overwrite = true; overwrite = true;
@ -3828,6 +3799,7 @@ void UI_func_save_voiceconfig(uint8_t param)
else if (mode == 1) else if (mode == 1)
{ {
char tmp[FILENAME_LEN]; char tmp[FILENAME_LEN];
sprintf(tmp, "/%s/%s%d.syx", VOICE_CONFIG_PATH, VOICE_CONFIG_NAME, configuration.performance.voiceconfig_number[instance_id]); sprintf(tmp, "/%s/%s%d.syx", VOICE_CONFIG_PATH, VOICE_CONFIG_NAME, configuration.performance.voiceconfig_number[instance_id]);
if (SD.exists(tmp)) if (SD.exists(tmp))
overwrite = true; overwrite = true;
@ -3835,15 +3807,9 @@ void UI_func_save_voiceconfig(uint8_t param)
overwrite = false; overwrite = false;
lcd.setCursor(0, 1); lcd.setCursor(0, 1);
if (configuration.performance.voiceconfig_number[instance_id] == 0) sprintf(tmp, "[%2d]", configuration.performance.voiceconfig_number[instance_id]);
lcd.print(F("[DEFAULT]"));
else
{
char tmp[10];
sprintf(tmp, "[%7d]", configuration.performance.voiceconfig_number[instance_id]);
lcd.print(tmp); lcd.print(tmp);
} }
}
else if (mode == 2) else if (mode == 2)
{ {
lcd.setCursor(12, 1); lcd.setCursor(12, 1);
@ -3875,6 +3841,8 @@ void UI_func_load_fx(uint8_t param)
if (LCDML.FUNC_setup()) // ****** SETUP ********* if (LCDML.FUNC_setup()) // ****** SETUP *********
{ {
char tmp[10];
mode = 0; mode = 0;
encoderDir[ENC_R].reset(); encoderDir[ENC_R].reset();
@ -3882,15 +3850,9 @@ void UI_func_load_fx(uint8_t param)
lcd.setCursor(0, 0); lcd.setCursor(0, 0);
lcd.print(F("Load FX SD")); lcd.print(F("Load FX SD"));
lcd.setCursor(0, 1); lcd.setCursor(0, 1);
if (configuration.performance.fx_number == 0)
lcd.print(F("[DEFAULT]"));
else
{
char tmp[10];
sprintf(tmp, "[%7d]", configuration.performance.fx_number); sprintf(tmp, "[%7d]", configuration.performance.fx_number);
lcd.print(tmp); lcd.print(tmp);
} }
}
if (LCDML.FUNC_loop()) // ****** LOOP ********* if (LCDML.FUNC_loop()) // ****** LOOP *********
{ {
@ -3920,16 +3882,11 @@ void UI_func_load_fx(uint8_t param)
} }
lcd.setCursor(0, 1); lcd.setCursor(0, 1);
if (configuration.performance.fx_number == 0)
lcd.print(F("[DEFAULT]"));
else
{
char tmp[10]; char tmp[10];
sprintf(tmp, "[%7d]", configuration.performance.fx_number); sprintf(tmp, "[%2d]", configuration.performance.fx_number);
lcd.print(tmp); lcd.print(tmp);
} }
} }
}
if (LCDML.FUNC_close()) // ****** STABLE END ********* if (LCDML.FUNC_close()) // ****** STABLE END *********
{ {
@ -3954,6 +3911,8 @@ void UI_func_save_fx(uint8_t param)
if (LCDML.FUNC_setup()) // ****** SETUP ********* if (LCDML.FUNC_setup()) // ****** SETUP *********
{ {
char tmp[FILENAME_LEN];
yesno = false; yesno = false;
mode = 0; mode = 0;
@ -3962,16 +3921,9 @@ void UI_func_save_fx(uint8_t param)
lcd.setCursor(0, 0); lcd.setCursor(0, 0);
lcd.print(F("Save FX")); lcd.print(F("Save FX"));
lcd.setCursor(0, 1); lcd.setCursor(0, 1);
if (configuration.performance.fx_number == 0)
lcd.print(F("[DEFAULT]"));
else
{
char tmp[10];
sprintf(tmp, "[%7d]", configuration.performance.fx_number); sprintf(tmp, "[%7d]", configuration.performance.fx_number);
lcd.print(tmp); lcd.print(tmp);
}
char tmp[FILENAME_LEN];
sprintf(tmp, "/%s/%s%d.syx", FX_CONFIG_PATH, FX_CONFIG_NAME, configuration.performance.fx_number); sprintf(tmp, "/%s/%s%d.syx", FX_CONFIG_PATH, FX_CONFIG_NAME, configuration.performance.fx_number);
if (SD.exists(tmp)) if (SD.exists(tmp))
overwrite = true; overwrite = true;
@ -4036,15 +3988,9 @@ void UI_func_save_fx(uint8_t param)
overwrite = false; overwrite = false;
lcd.setCursor(0, 1); lcd.setCursor(0, 1);
if (configuration.performance.fx_number == 0) sprintf(tmp, "[%2d]", configuration.performance.fx_number);
lcd.print(F("[DEFAULT]"));
else
{
char tmp[10];
sprintf(tmp, "[%7d]", configuration.performance.fx_number);
lcd.print(tmp); lcd.print(tmp);
} }
}
else else
{ {
lcd.setCursor(12, 1); lcd.setCursor(12, 1);

@ -99,8 +99,8 @@ LCDML_add(70, LCDML_0_2_3, 2, "Damping", UI_func_reverb_damping);
LCDML_add(71, LCDML_0_2_3, 3, "Level", UI_func_reverb_level); LCDML_add(71, LCDML_0_2_3, 3, "Level", UI_func_reverb_level);
LCDML_add(72, LCDML_0, 3, "Load/Save", NULL); LCDML_add(72, LCDML_0, 3, "Load/Save", NULL);
LCDML_add(73, LCDML_0_3, 1, "Performance", NULL); LCDML_add(73, LCDML_0_3, 1, "Performance", NULL);
LCDML_add(74, LCDML_0_3_1, 1, "Load Performance", UI_func_load_performance); LCDML_add(74, LCDML_0_3_1, 1, "Load Perf.", UI_func_load_performance);
LCDML_add(75, LCDML_0_3_1, 2, "Save Performance", UI_func_save_performance); LCDML_add(75, LCDML_0_3_1, 2, "Save Perf.", UI_func_save_performance);
LCDML_add(76, LCDML_0_3, 2, "Voice Config", NULL); LCDML_add(76, LCDML_0_3, 2, "Voice Config", NULL);
LCDML_add(77, LCDML_0_3_2, 1, "Load Voice Cfg", UI_func_load_voiceconfig); LCDML_add(77, LCDML_0_3_2, 1, "Load Voice Cfg", UI_func_load_voiceconfig);
LCDML_add(78, LCDML_0_3_2, 2, "Save Voice Cfg", UI_func_save_voiceconfig); LCDML_add(78, LCDML_0_3_2, 2, "Save Voice Cfg", UI_func_save_voiceconfig);

@ -221,9 +221,9 @@
#define MAX_BANKS 100 #define MAX_BANKS 100
#define MAX_VOICES 32 // voices per bank #define MAX_VOICES 32 // voices per bank
#define MAX_FX 15 #define MAX_FX 99
#define MAX_PERFORMANCE 15 #define MAX_PERFORMANCE 99
#define MAX_VOICECONFIG 15 #define MAX_VOICECONFIG 99
#define BANK_NAME_LEN 13 // FAT12 filenames (plus '\0') #define BANK_NAME_LEN 13 // FAT12 filenames (plus '\0')
#define VOICE_NAME_LEN 11 // 10 (plus '\0') #define VOICE_NAME_LEN 11 // 10 (plus '\0')
#define FILENAME_LEN BANK_NAME_LEN + VOICE_NAME_LEN #define FILENAME_LEN BANK_NAME_LEN + VOICE_NAME_LEN

Loading…
Cancel
Save