|
|
|
@ -205,11 +205,14 @@ void UI_func_information(uint8_t param); |
|
|
|
|
void UI_func_volume(uint8_t param); |
|
|
|
|
void UI_func_load_performance(uint8_t param); |
|
|
|
|
void UI_func_save_performance(uint8_t param); |
|
|
|
|
void UI_func_save_config(uint8_t param); |
|
|
|
|
void UI_func_save_config_default(uint8_t param); |
|
|
|
|
void UI_func_load_voiceconfig(uint8_t param); |
|
|
|
|
void UI_func_save_voiceconfig(uint8_t param); |
|
|
|
|
void UI_func_save_voice(uint8_t param); |
|
|
|
|
void UI_func_load_fx(uint8_t param); |
|
|
|
|
void UI_func_save_fx(uint8_t param); |
|
|
|
|
void UI_func_eeprom_reset(uint8_t param); |
|
|
|
|
void UI_func_midi_soft_thru(uint8_t param); |
|
|
|
|
void UI_func_velocity_level(uint8_t param); |
|
|
|
|
void UI_func_eeprom_reset(uint8_t param); |
|
|
|
|
void UI_func_voice_select(uint8_t param); |
|
|
|
|
void UI_func_sysex_send_voice(uint8_t param); |
|
|
|
|
void UI_func_sysex_receive_voice(uint8_t param); |
|
|
|
@ -3172,7 +3175,14 @@ void UI_func_load_performance(uint8_t param) |
|
|
|
|
lcd.setCursor(0, 0); |
|
|
|
|
lcd.print(F("Load Perf. SD")); |
|
|
|
|
lcd.setCursor(0, 1); |
|
|
|
|
lcd.print(F("Not implemented.")); |
|
|
|
|
if (configuration.sys.performance_number == 0) |
|
|
|
|
lcd.print(F("[DEFAULT]")); |
|
|
|
|
else |
|
|
|
|
{ |
|
|
|
|
char tmp[10]; |
|
|
|
|
sprintf(tmp, "[%7d]", configuration.sys.performance_number); |
|
|
|
|
lcd.print(tmp); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if (LCDML.FUNC_loop()) // ****** LOOP *********
|
|
|
|
@ -3181,11 +3191,21 @@ void UI_func_load_performance(uint8_t param) |
|
|
|
|
{ |
|
|
|
|
if (LCDML.BT_checkDown()) |
|
|
|
|
{ |
|
|
|
|
; |
|
|
|
|
configuration.sys.performance_number = constrain(configuration.sys.performance_number + ENCODER[ENC_L].speed(), PERFORMANCE_NUM_MIN, PERFORMANCE_NUM_MAX); |
|
|
|
|
} |
|
|
|
|
else if (LCDML.BT_checkUp()) |
|
|
|
|
{ |
|
|
|
|
; |
|
|
|
|
configuration.sys.performance_number = constrain(configuration.sys.performance_number - ENCODER[ENC_L].speed(), PERFORMANCE_NUM_MIN, PERFORMANCE_NUM_MAX); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
lcd.setCursor(0, 1); |
|
|
|
|
if (configuration.sys.performance_number == 0) |
|
|
|
|
lcd.print(F("[DEFAULT]")); |
|
|
|
|
else |
|
|
|
|
{ |
|
|
|
|
char tmp[10]; |
|
|
|
|
sprintf(tmp, "[%7d]", configuration.sys.performance_number); |
|
|
|
|
lcd.print(tmp); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
@ -3193,45 +3213,222 @@ void UI_func_load_performance(uint8_t param) |
|
|
|
|
if (LCDML.FUNC_close()) // ****** STABLE END *********
|
|
|
|
|
{ |
|
|
|
|
eeprom_write(); |
|
|
|
|
load_sd_performance(configuration.sys.performance_number); |
|
|
|
|
lcd.setCursor(0, 1); |
|
|
|
|
lcd.print("Done. "); |
|
|
|
|
delay(500); |
|
|
|
|
encoderDir[ENC_R].reset(); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void UI_func_save_performance(uint8_t param) |
|
|
|
|
{ |
|
|
|
|
static bool overwrite; |
|
|
|
|
static bool yesno; |
|
|
|
|
static uint8_t mode; |
|
|
|
|
|
|
|
|
|
if (LCDML.FUNC_setup()) // ****** SETUP *********
|
|
|
|
|
{ |
|
|
|
|
yesno = false; |
|
|
|
|
mode = 0; |
|
|
|
|
|
|
|
|
|
encoderDir[ENC_R].reset(); |
|
|
|
|
|
|
|
|
|
lcd.setCursor(0, 0); |
|
|
|
|
lcd.print(F("Save Perf. SD")); |
|
|
|
|
lcd.setCursor(0, 1); |
|
|
|
|
lcd.print(F("Not implemented.")); |
|
|
|
|
if (configuration.sys.performance_number == 0) |
|
|
|
|
lcd.print(F("[DEFAULT]")); |
|
|
|
|
else |
|
|
|
|
{ |
|
|
|
|
char tmp[10]; |
|
|
|
|
sprintf(tmp, "[%7d]", configuration.sys.performance_number); |
|
|
|
|
lcd.print(tmp); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
char tmp[FILENAME_LEN]; |
|
|
|
|
sprintf(tmp, "/%s%d.syx", PERFORMANCE_CONFIG_NAME, configuration.sys.performance_number); |
|
|
|
|
if (SD.exists(tmp)) |
|
|
|
|
overwrite = true; |
|
|
|
|
else |
|
|
|
|
overwrite = false; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
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_R].Down()) || (LCDML.BT_checkUp() && encoderDir[ENC_R].Up()) || (LCDML.BT_checkEnter() && encoderDir[ENC_R].ButtonShort())) |
|
|
|
|
{ |
|
|
|
|
if (LCDML.BT_checkDown()) |
|
|
|
|
{ |
|
|
|
|
; |
|
|
|
|
if (mode == 0) |
|
|
|
|
configuration.sys.performance_number = constrain(configuration.sys.performance_number + ENCODER[ENC_L].speed(), PERFORMANCE_NUM_MIN, PERFORMANCE_NUM_MAX); |
|
|
|
|
else |
|
|
|
|
yesno = true; |
|
|
|
|
} |
|
|
|
|
else if (LCDML.BT_checkUp()) |
|
|
|
|
{ |
|
|
|
|
; |
|
|
|
|
if (mode == 0) |
|
|
|
|
configuration.sys.performance_number = constrain(configuration.sys.performance_number - ENCODER[ENC_L].speed(), PERFORMANCE_NUM_MIN, PERFORMANCE_NUM_MAX); |
|
|
|
|
else |
|
|
|
|
yesno = false; |
|
|
|
|
} |
|
|
|
|
else if (LCDML.BT_checkEnter()) |
|
|
|
|
{ |
|
|
|
|
if (mode == 0 && overwrite == true) |
|
|
|
|
{ |
|
|
|
|
mode = 1; |
|
|
|
|
lcd.setCursor(0, 1); |
|
|
|
|
lcd.print(F("Overwrite: [ ]")); |
|
|
|
|
} |
|
|
|
|
else |
|
|
|
|
{ |
|
|
|
|
LCDML.BT_quit(); // does not help :(
|
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if (mode == 0) |
|
|
|
|
{ |
|
|
|
|
char tmp[FILENAME_LEN]; |
|
|
|
|
sprintf(tmp, "/%s%d.syx", PERFORMANCE_CONFIG_NAME, configuration.sys.performance_number); |
|
|
|
|
if (SD.exists(tmp)) |
|
|
|
|
overwrite = true; |
|
|
|
|
else |
|
|
|
|
overwrite = false; |
|
|
|
|
|
|
|
|
|
lcd.setCursor(0, 1); |
|
|
|
|
if (configuration.sys.performance_number == 0) |
|
|
|
|
lcd.print(F("[DEFAULT]")); |
|
|
|
|
else |
|
|
|
|
{ |
|
|
|
|
char tmp[10]; |
|
|
|
|
sprintf(tmp, "[%7d]", configuration.sys.performance_number); |
|
|
|
|
lcd.print(tmp); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
else |
|
|
|
|
{ |
|
|
|
|
lcd.setCursor(12, 1); |
|
|
|
|
if (yesno == true) |
|
|
|
|
lcd.print(F("YES")); |
|
|
|
|
else |
|
|
|
|
lcd.print(F("NO ")); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
encoderDir[ENC_R].reset(); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if (LCDML.FUNC_close()) // ****** STABLE END *********
|
|
|
|
|
{ |
|
|
|
|
eeprom_write(); |
|
|
|
|
if (overwrite == false || yesno == true) |
|
|
|
|
{ |
|
|
|
|
save_sd_performance(configuration.sys.performance_number); |
|
|
|
|
lcd.setCursor(0, 1); |
|
|
|
|
lcd.print("Done. "); |
|
|
|
|
delay(500); |
|
|
|
|
} |
|
|
|
|
encoderDir[ENC_R].reset(); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void UI_func_load_voiceconfig(uint8_t param) |
|
|
|
|
{ |
|
|
|
|
#if NUMDEXED > 1 |
|
|
|
|
static int8_t instance_id; |
|
|
|
|
static uint8_t chosen; |
|
|
|
|
#else |
|
|
|
|
uint8_t instance_id = 0; |
|
|
|
|
#endif |
|
|
|
|
static bool yesno; |
|
|
|
|
|
|
|
|
|
if (LCDML.FUNC_setup()) // ****** SETUP *********
|
|
|
|
|
{ |
|
|
|
|
encoderDir[ENC_R].reset(); |
|
|
|
|
|
|
|
|
|
lcd.setCursor(0, 0); |
|
|
|
|
lcd.print(F("Load Config SD")); |
|
|
|
|
|
|
|
|
|
#if NUMDEXED > 1 |
|
|
|
|
instance_id = -1; |
|
|
|
|
chosen = 0; |
|
|
|
|
lcd.setCursor(0, 1); |
|
|
|
|
lcd.print(F("Instance [1]")); |
|
|
|
|
#else |
|
|
|
|
lcd.setCursor(0, 1); |
|
|
|
|
lcd.print(F("[NO ]")); |
|
|
|
|
#endif |
|
|
|
|
|
|
|
|
|
yesno = false; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if (LCDML.FUNC_loop()) // ****** LOOP *********
|
|
|
|
|
{ |
|
|
|
|
if ((LCDML.BT_checkEnter() && encoderDir[ENC_R].ButtonShort()) || (LCDML.BT_checkDown() && encoderDir[ENC_R].Down()) || (LCDML.BT_checkUp() && encoderDir[ENC_R].Up())) |
|
|
|
|
{ |
|
|
|
|
#if NUMDEXED > 1 |
|
|
|
|
if ((LCDML.BT_checkDown() || LCDML.BT_checkUp()) && instance_id < 0) |
|
|
|
|
{ |
|
|
|
|
chosen = (chosen + 1) % 2; |
|
|
|
|
} |
|
|
|
|
else if (LCDML.BT_checkEnter() && instance_id < 0) |
|
|
|
|
{ |
|
|
|
|
instance_id = chosen; |
|
|
|
|
lcd.setCursor(0, 1); |
|
|
|
|
lcd.print(F("[NO ] ")); |
|
|
|
|
} |
|
|
|
|
else if ((LCDML.BT_checkDown() || LCDML.BT_checkUp()) && instance_id >= 0) |
|
|
|
|
#else |
|
|
|
|
if ((LCDML.BT_checkDown() || LCDML.BT_checkUp())) |
|
|
|
|
#endif |
|
|
|
|
{ |
|
|
|
|
yesno = !yesno; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
#if NUMDEXED > 1 |
|
|
|
|
if (instance_id < 0) |
|
|
|
|
{ |
|
|
|
|
lcd.setCursor(10, 1); |
|
|
|
|
lcd.print(chosen + 1); |
|
|
|
|
} |
|
|
|
|
else |
|
|
|
|
{ |
|
|
|
|
#endif |
|
|
|
|
if (yesno == true) |
|
|
|
|
{ |
|
|
|
|
lcd.setCursor(1, 1); |
|
|
|
|
lcd.print(F("YES")); |
|
|
|
|
} |
|
|
|
|
else |
|
|
|
|
{ |
|
|
|
|
lcd.setCursor(1, 1); |
|
|
|
|
lcd.print(F("NO ")); |
|
|
|
|
} |
|
|
|
|
#if NUMDEXED > 1 |
|
|
|
|
} |
|
|
|
|
#endif |
|
|
|
|
//encoderDir[ENC_R].reset();
|
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if (LCDML.FUNC_close()) // ****** STABLE END *********
|
|
|
|
|
{ |
|
|
|
|
if (yesno == true) |
|
|
|
|
{ |
|
|
|
|
LCDML.DISP_clear(); |
|
|
|
|
lcd.print(F("Save Cfg SD")); |
|
|
|
|
|
|
|
|
|
load_sd_voiceconfig(configuration.performance.bank[instance_id], configuration.performance.voice[instance_id], instance_id); |
|
|
|
|
|
|
|
|
|
lcd.setCursor(0, 1); |
|
|
|
|
lcd.print(F("Done.")); |
|
|
|
|
delay(500); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
encoderDir[ENC_R].reset(); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void UI_func_save_config(uint8_t param) |
|
|
|
|
void UI_func_save_voiceconfig(uint8_t param) |
|
|
|
|
{ |
|
|
|
|
#if NUMDEXED > 1 |
|
|
|
|
static int8_t instance_id; |
|
|
|
@ -3246,7 +3443,7 @@ void UI_func_save_config(uint8_t param) |
|
|
|
|
encoderDir[ENC_R].reset(); |
|
|
|
|
|
|
|
|
|
lcd.setCursor(0, 0); |
|
|
|
|
lcd.print(F("Save Cfg SD")); |
|
|
|
|
lcd.print(F("Save Config SD")); |
|
|
|
|
|
|
|
|
|
#if NUMDEXED > 1 |
|
|
|
|
instance_id = -1; |
|
|
|
@ -3328,7 +3525,7 @@ void UI_func_save_config(uint8_t param) |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void UI_func_save_config_default(uint8_t param) |
|
|
|
|
void UI_func_save_voice(uint8_t param) |
|
|
|
|
{ |
|
|
|
|
static bool yesno; |
|
|
|
|
|
|
|
|
@ -3337,7 +3534,7 @@ void UI_func_save_config_default(uint8_t param) |
|
|
|
|
encoderDir[ENC_R].reset(); |
|
|
|
|
|
|
|
|
|
lcd.setCursor(0, 0); |
|
|
|
|
lcd.print(F("Save Cfg default")); |
|
|
|
|
lcd.print(F("Save Voice")); |
|
|
|
|
lcd.setCursor(0, 1); |
|
|
|
|
lcd.print(F("[NO ]")); |
|
|
|
|
|
|
|
|
@ -3366,7 +3563,7 @@ void UI_func_save_config_default(uint8_t param) |
|
|
|
|
LCDML.DISP_clear(); |
|
|
|
|
lcd.print(F("Save Cfg default")); |
|
|
|
|
|
|
|
|
|
// EEPROM!!!
|
|
|
|
|
// Storing on inside bank TBD
|
|
|
|
|
|
|
|
|
|
lcd.setCursor(0, 1); |
|
|
|
|
lcd.print(F("Done.")); |
|
|
|
@ -3378,16 +3575,23 @@ void UI_func_save_config_default(uint8_t param) |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void UI_func_sysex_send_voice(uint8_t param) |
|
|
|
|
void UI_func_load_fx(uint8_t param) |
|
|
|
|
{ |
|
|
|
|
if (LCDML.FUNC_setup()) // ****** SETUP *********
|
|
|
|
|
{ |
|
|
|
|
encoderDir[ENC_R].reset(); |
|
|
|
|
|
|
|
|
|
lcd.setCursor(0, 0); |
|
|
|
|
lcd.print(F("Send Voice")); |
|
|
|
|
lcd.print(F("Load FX SD")); |
|
|
|
|
lcd.setCursor(0, 1); |
|
|
|
|
lcd.print(F("Not implemented.")); |
|
|
|
|
if (configuration.performance.fx_number == 0) |
|
|
|
|
lcd.print(F("[DEFAULT]")); |
|
|
|
|
else |
|
|
|
|
{ |
|
|
|
|
char tmp[10]; |
|
|
|
|
sprintf(tmp, "[%7d]", configuration.performance.fx_number); |
|
|
|
|
lcd.print(tmp); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if (LCDML.FUNC_loop()) // ****** LOOP *********
|
|
|
|
@ -3396,11 +3600,21 @@ void UI_func_sysex_send_voice(uint8_t param) |
|
|
|
|
{ |
|
|
|
|
if (LCDML.BT_checkDown()) |
|
|
|
|
{ |
|
|
|
|
; |
|
|
|
|
configuration.performance.fx_number = constrain(configuration.performance.fx_number + ENCODER[ENC_L].speed(), FX_NUM_MIN, FX_NUM_MAX); |
|
|
|
|
} |
|
|
|
|
else if (LCDML.BT_checkUp()) |
|
|
|
|
{ |
|
|
|
|
; |
|
|
|
|
configuration.performance.fx_number = constrain(configuration.performance.fx_number - ENCODER[ENC_L].speed(), FX_NUM_MIN, FX_NUM_MAX); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
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); |
|
|
|
|
lcd.print(tmp); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
@ -3408,18 +3622,132 @@ void UI_func_sysex_send_voice(uint8_t param) |
|
|
|
|
if (LCDML.FUNC_close()) // ****** STABLE END *********
|
|
|
|
|
{ |
|
|
|
|
eeprom_write(); |
|
|
|
|
load_sd_fx(configuration.performance.fx_number); |
|
|
|
|
lcd.setCursor(0, 1); |
|
|
|
|
lcd.print("Done. "); |
|
|
|
|
delay(500); |
|
|
|
|
encoderDir[ENC_R].reset(); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void UI_func_sysex_receive_voice(uint8_t param) |
|
|
|
|
void UI_func_save_fx(uint8_t param) |
|
|
|
|
{ |
|
|
|
|
static bool overwrite; |
|
|
|
|
static bool yesno; |
|
|
|
|
static uint8_t mode; |
|
|
|
|
|
|
|
|
|
if (LCDML.FUNC_setup()) // ****** SETUP *********
|
|
|
|
|
{ |
|
|
|
|
yesno = false; |
|
|
|
|
mode = 0; |
|
|
|
|
|
|
|
|
|
encoderDir[ENC_R].reset(); |
|
|
|
|
|
|
|
|
|
lcd.setCursor(0, 0); |
|
|
|
|
lcd.print(F("Receive Voice")); |
|
|
|
|
lcd.print(F("Save FX SD")); |
|
|
|
|
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); |
|
|
|
|
lcd.print(tmp); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
char tmp[FILENAME_LEN]; |
|
|
|
|
sprintf(tmp, "/%s%d.syx", FX_CONFIG_NAME, configuration.performance.fx_number); |
|
|
|
|
if (SD.exists(tmp)) |
|
|
|
|
overwrite = true; |
|
|
|
|
else |
|
|
|
|
overwrite = false; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if (LCDML.FUNC_loop()) // ****** LOOP *********
|
|
|
|
|
{ |
|
|
|
|
if ((LCDML.BT_checkDown() && encoderDir[ENC_R].Down()) || (LCDML.BT_checkUp() && encoderDir[ENC_R].Up()) || (LCDML.BT_checkEnter() && encoderDir[ENC_R].ButtonShort())) |
|
|
|
|
{ |
|
|
|
|
if (LCDML.BT_checkDown()) |
|
|
|
|
{ |
|
|
|
|
if (mode == 0) |
|
|
|
|
configuration.performance.fx_number = constrain(configuration.performance.fx_number + ENCODER[ENC_L].speed(), FX_NUM_MIN, FX_NUM_MAX); |
|
|
|
|
else |
|
|
|
|
yesno = true; |
|
|
|
|
} |
|
|
|
|
else if (LCDML.BT_checkUp()) |
|
|
|
|
{ |
|
|
|
|
if (mode == 0) |
|
|
|
|
configuration.performance.fx_number = constrain(configuration.performance.fx_number - ENCODER[ENC_L].speed(), FX_NUM_MIN, FX_NUM_MAX); |
|
|
|
|
else |
|
|
|
|
yesno = false; |
|
|
|
|
} |
|
|
|
|
else if (LCDML.BT_checkEnter()) |
|
|
|
|
{ |
|
|
|
|
if (mode == 0 && overwrite == true) |
|
|
|
|
{ |
|
|
|
|
mode = 1; |
|
|
|
|
lcd.setCursor(0, 1); |
|
|
|
|
lcd.print(F("Overwrite: [ ]")); |
|
|
|
|
} |
|
|
|
|
else |
|
|
|
|
{ |
|
|
|
|
LCDML.BT_quit(); // does not help :(
|
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if (mode == 0) |
|
|
|
|
{ |
|
|
|
|
char tmp[FILENAME_LEN]; |
|
|
|
|
sprintf(tmp, "/%s%d.syx", FX_CONFIG_NAME, configuration.performance.fx_number); |
|
|
|
|
if (SD.exists(tmp)) |
|
|
|
|
overwrite = true; |
|
|
|
|
else |
|
|
|
|
overwrite = false; |
|
|
|
|
|
|
|
|
|
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); |
|
|
|
|
lcd.print(tmp); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
else |
|
|
|
|
{ |
|
|
|
|
lcd.setCursor(12, 1); |
|
|
|
|
if (yesno == true) |
|
|
|
|
lcd.print(F("YES")); |
|
|
|
|
else |
|
|
|
|
lcd.print(F("NO ")); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
encoderDir[ENC_R].reset(); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if (LCDML.FUNC_close()) // ****** STABLE END *********
|
|
|
|
|
{ |
|
|
|
|
eeprom_write(); |
|
|
|
|
if (overwrite == false || yesno == true) |
|
|
|
|
{ |
|
|
|
|
save_sd_fx(configuration.performance.fx_number); |
|
|
|
|
lcd.setCursor(0, 1); |
|
|
|
|
lcd.print("Done. "); |
|
|
|
|
delay(500); |
|
|
|
|
} |
|
|
|
|
encoderDir[ENC_R].reset(); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void UI_func_sysex_receive_bank(uint8_t param) |
|
|
|
|
{ |
|
|
|
|
if (LCDML.FUNC_setup()) // ****** SETUP *********
|
|
|
|
|
{ |
|
|
|
|
encoderDir[ENC_R].reset(); |
|
|
|
|
|
|
|
|
|
lcd.setCursor(0, 0); |
|
|
|
|
lcd.print(F("MIDI Recv Bank")); |
|
|
|
|
lcd.setCursor(0, 1); |
|
|
|
|
lcd.print(F("Not implemented.")); |
|
|
|
|
} |
|
|
|
@ -3446,14 +3774,14 @@ void UI_func_sysex_receive_voice(uint8_t param) |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void UI_func_save_voice(uint8_t param) |
|
|
|
|
void UI_func_sysex_send_bank(uint8_t param) |
|
|
|
|
{ |
|
|
|
|
if (LCDML.FUNC_setup()) // ****** SETUP *********
|
|
|
|
|
{ |
|
|
|
|
encoderDir[ENC_R].reset(); |
|
|
|
|
|
|
|
|
|
lcd.setCursor(0, 0); |
|
|
|
|
lcd.print(F("Save Voice SD")); |
|
|
|
|
lcd.print(F("MIDI Send Bank")); |
|
|
|
|
lcd.setCursor(0, 1); |
|
|
|
|
lcd.print(F("Not implemented.")); |
|
|
|
|
} |
|
|
|
@ -3480,14 +3808,14 @@ void UI_func_save_voice(uint8_t param) |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void UI_func_sysex_receive_bank(uint8_t param) |
|
|
|
|
void UI_func_sysex_send_voice(uint8_t param) |
|
|
|
|
{ |
|
|
|
|
if (LCDML.FUNC_setup()) // ****** SETUP *********
|
|
|
|
|
{ |
|
|
|
|
encoderDir[ENC_R].reset(); |
|
|
|
|
|
|
|
|
|
lcd.setCursor(0, 0); |
|
|
|
|
lcd.print(F("MIDI Recv Bank")); |
|
|
|
|
lcd.print(F("MIDI Send Voice")); |
|
|
|
|
lcd.setCursor(0, 1); |
|
|
|
|
lcd.print(F("Not implemented.")); |
|
|
|
|
} |
|
|
|
@ -3514,14 +3842,14 @@ void UI_func_sysex_receive_bank(uint8_t param) |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void UI_func_sysex_send_bank(uint8_t param) |
|
|
|
|
void UI_func_sysex_receive_voice(uint8_t param) |
|
|
|
|
{ |
|
|
|
|
if (LCDML.FUNC_setup()) // ****** SETUP *********
|
|
|
|
|
{ |
|
|
|
|
encoderDir[ENC_R].reset(); |
|
|
|
|
|
|
|
|
|
lcd.setCursor(0, 0); |
|
|
|
|
lcd.print(F("MIDI Send Bank")); |
|
|
|
|
lcd.print(F("MIDI Receive Voice")); |
|
|
|
|
lcd.setCursor(0, 1); |
|
|
|
|
lcd.print(F("Not implemented.")); |
|
|
|
|
} |
|
|
|
@ -3548,6 +3876,7 @@ void UI_func_sysex_send_bank(uint8_t param) |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void UI_function_not_enabled(void) |
|
|
|
|
{ |
|
|
|
|
if (LCDML.FUNC_setup()) // ****** SETUP *********
|
|
|
|
|