Loading/storage converted

pull/110/head
Holger Wirtz 3 years ago
parent 2c6ff3220a
commit 6e9e658dbe
  1. 660
      UI.hpp
  2. 77
      UI_FX.h
  3. 91
      UI_FX_T4.h
  4. 74
      UI_NO_FX.h
  5. 2
      config.h

660
UI.hpp

@ -313,19 +313,13 @@ void UI_func_seq_mute_matrix(uint8_t param);
void UI_func_seq_track_setup(uint8_t param);
void UI_func_dexed_assign(uint8_t param);
void UI_func_seq_display_style(uint8_t param);
void UI_func_seq_state_load(uint8_t param);
void UI_func_seq_state_save(uint8_t param);
void UI_func_set_sequence_name(uint8_t param);
void UI_func_volume(uint8_t param);
void UI_func_smart_filter(uint8_t param);
void UI_func_drum_midi_channel(uint8_t param);
void UI_func_load_performance(uint8_t param);
void UI_func_save_performance(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);
@ -6357,7 +6351,7 @@ void UI_func_dexed_assign(uint8_t param)
}
}
void UI_func_seq_state_load(uint8_t param)
void UI_func_load_performance(uint8_t param)
{
static uint8_t mode;
if (LCDML.FUNC_setup()) // ****** SETUP *********
@ -6426,7 +6420,7 @@ void UI_func_seq_state_load(uint8_t param)
}
}
void UI_func_seq_state_save(uint8_t param)
void UI_func_save_performance(uint8_t param)
{
static bool overwrite;
static bool yesno;
@ -7281,656 +7275,6 @@ void UI_func_volume(uint8_t param)
}
void UI_func_load_performance(uint8_t param)
{
static uint8_t mode;
if (LCDML.FUNC_setup()) // ****** SETUP *********
{
char tmp[10];
mode = 0;
encoderDir[ENC_R].reset();
lcd.setCursor(0, 0);
lcd.print(F("Load Perf. SD"));
lcd.setCursor(0, 1);
sprintf(tmp, "[%2d]", configuration.sys.performance_number);
lcd.print(tmp);
}
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())
{
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);
}
else if (LCDML.BT_checkEnter())
{
mode = 0xff;
lcd.setCursor(0, 1);
if (load_sd_performance_json(configuration.sys.performance_number) == false)
lcd.print("Does not exist.");
else
{
load_sd_voiceconfig_json(configuration.performance.voiceconfig_number[0], 0, 0);
set_voiceconfig_params(0);
#if NUM_DEXED > 1
load_sd_voiceconfig_json(configuration.performance.voiceconfig_number[1], 1, 0);
set_voiceconfig_params(1);
#endif
load_sd_fx_json(configuration.performance.fx_number, 0);
set_fx_params();
lcd.print("Done. ");
}
delay(MESSAGE_WAIT_TIME);
LCDML.FUNC_goBackToMenu();
}
lcd.setCursor(0, 1);
char tmp[10];
sprintf(tmp, "[%2d]", configuration.sys.performance_number);
lcd.print(tmp);
}
}
if (LCDML.FUNC_close()) // ****** STABLE END *********
{
if (mode < 0xff)
{
lcd.show(1, 0, 16, "Canceled.");
delay(MESSAGE_WAIT_TIME);
}
else
eeprom_update_performance();
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 *********
{
char tmp[FILENAME_LEN];
yesno = false;
mode = 0;
encoderDir[ENC_R].reset();
lcd.setCursor(0, 0);
lcd.print(F("Save Perf. SD"));
lcd.setCursor(0, 1);
sprintf(tmp, "[%2d]", configuration.sys.performance_number);
lcd.print(tmp);
sprintf(tmp, "/%s/%s%d.json", PERFORMANCE_CONFIG_PATH, 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()) || (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
{
mode = 0xff;
if (overwrite == false || yesno == true)
{
if (yesno == true)
{
char tmp[FILENAME_LEN];
sprintf(tmp, "/%s/%s%d.json", PERFORMANCE_CONFIG_PATH, PERFORMANCE_CONFIG_NAME, configuration.sys.performance_number);
SD.remove(tmp);
}
save_sd_performance_json(configuration.sys.performance_number);
lcd.show(1, 0, 16, "Done.");
delay(MESSAGE_WAIT_TIME);
LCDML.FUNC_goBackToMenu();
}
else if (overwrite == true && yesno == false)
{
char tmp[17];
mode = 0;
lcd.setCursor(0, 1);
sprintf(tmp, "[%2d] ", configuration.sys.performance_number);
lcd.print(tmp);
}
}
}
if (mode == 0)
{
char tmp[FILENAME_LEN];
sprintf(tmp, "/%s/%s%d.json", PERFORMANCE_CONFIG_PATH, PERFORMANCE_CONFIG_NAME, configuration.sys.performance_number);
if (SD.exists(tmp))
overwrite = true;
else
overwrite = false;
lcd.setCursor(0, 1);
sprintf(tmp, "[%2d]", 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 *********
{
if (mode < 0xff)
{
lcd.show(1, 0, 16, "Canceled.");
delay(MESSAGE_WAIT_TIME);
}
EEPROM.update(EEPROM_START_ADDRESS + offsetof(configuration_s, sys.performance_number), configuration.sys.performance_number);
encoderDir[ENC_R].reset();
}
}
void UI_func_load_voiceconfig(uint8_t param)
{
#if NUM_DEXED > 1
static int8_t selected_instance_id;
#else
char tmp[4];
uint8_t selected_instance_id = 0;
#endif
static uint8_t mode;
if (LCDML.FUNC_setup()) // ****** SETUP *********
{
selected_instance_id = 0;
encoderDir[ENC_R].reset();
lcd.setCursor(0, 0);
lcd.print(F("Load VoiceCfg SD"));
#if NUM_DEXED > 1
mode = 0;
lcd.setCursor(0, 1);
lcd.print(F("Instance [0]"));
#else
mode = 1;
lcd.setCursor(0, 1);
sprintf(tmp, "[%2d]", configuration.performance.voiceconfig_number[selected_instance_id]);
lcd.print(tmp);
#endif
}
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)
selected_instance_id = 1;
//selected_instance_id = (selected_instance_id + 1) % 2;
else if (mode == 1)
configuration.performance.voiceconfig_number[selected_instance_id] = constrain(configuration.performance.voiceconfig_number[selected_instance_id] + ENCODER[ENC_L].speed(), VOICECONFIG_NUM_MIN, VOICECONFIG_NUM_MAX);
}
else if (LCDML.BT_checkUp())
{
if (mode == 0)
//selected_instance_id = (selected_instance_id - 1) % 2;
selected_instance_id = 0;
else if (mode == 1)
configuration.performance.voiceconfig_number[selected_instance_id] = constrain(configuration.performance.voiceconfig_number[selected_instance_id] - ENCODER[ENC_L].speed(), VOICECONFIG_NUM_MIN, VOICECONFIG_NUM_MAX);
}
else if (LCDML.BT_checkEnter())
{
if (mode > 0) {
mode = 0xff;
lcd.setCursor(0, 1);
if (load_sd_voiceconfig_json(configuration.performance.voiceconfig_number[selected_instance_id], selected_instance_id, 0) == false)
lcd.print("Does not exist. ");
else
lcd.print("Done. ");
delay(MESSAGE_WAIT_TIME);
LCDML.FUNC_goBackToMenu();
} else mode = 1;
}
if (mode == 0)
{
lcd.setCursor(10, 1);
lcd.print(selected_instance_id);
}
else if (mode == 1)
{
lcd.setCursor(0, 1);
char tmp[10];
sprintf(tmp, "[%2d]", configuration.performance.voiceconfig_number[selected_instance_id]);
lcd.print(tmp);
}
}
encoderDir[ENC_R].reset();
}
if (LCDML.FUNC_close()) // ****** STABLE END *********
{
if (mode < 0xff)
{
lcd.show(1, 0, 16, "Canceled.");
delay(MESSAGE_WAIT_TIME);
}
else
eeprom_update_dexed(selected_instance_id);
#if NUM_DEXED > 1
if (selected_instance_id > 0)
EEPROM.update(EEPROM_START_ADDRESS + offsetof(configuration_s, performance.voiceconfig_number[1]), configuration.performance.voiceconfig_number[1]);
else
#endif
EEPROM.update(EEPROM_START_ADDRESS + offsetof(configuration_s, performance.voiceconfig_number[0]), configuration.performance.voiceconfig_number[0]);
encoderDir[ENC_R].reset();
}
}
void UI_func_save_voiceconfig(uint8_t param)
{
#if NUM_DEXED > 1
static int8_t selected_instance_id;
#else
char tmp[5];
uint8_t selected_instance_id = 0;
#endif
static bool overwrite;
static bool yesno;
static uint8_t mode;
if (LCDML.FUNC_setup()) // ****** SETUP *********
{
yesno = false;
selected_instance_id = 0;
encoderDir[ENC_R].reset();
lcd.setCursor(0, 0);
lcd.print(F("Save VoiceCfg SD"));
#if NUM_DEXED > 1
mode = 0;
lcd.setCursor(0, 1);
lcd.print(F("Instance [0]"));
#else
mode = 1;
lcd.setCursor(0, 1);
sprintf(tmp, "[%2d]", configuration.performance.voiceconfig_number[selected_instance_id]);
lcd.print(tmp);
sprintf(tmp, "/%s/%s%d.json", VOICE_CONFIG_PATH, VOICE_CONFIG_NAME, configuration.performance.voiceconfig_number[selected_instance_id]);
if (SD.exists(tmp))
overwrite = true;
else
overwrite = false;
#endif
}
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)
selected_instance_id = 1;
// selected_instance_id = (selected_instance_id +1) % 2;
else if (mode == 1)
configuration.performance.voiceconfig_number[selected_instance_id] = constrain(configuration.performance.voiceconfig_number[selected_instance_id] + ENCODER[ENC_L].speed(), VOICECONFIG_NUM_MIN, VOICECONFIG_NUM_MAX);
else
yesno = true;
}
else if (LCDML.BT_checkUp())
{
if (mode == 0)
selected_instance_id = 0;
//selected_instance_id = (selected_instance_id - 1) % 2;
else if (mode == 1)
configuration.performance.voiceconfig_number[selected_instance_id] = constrain(configuration.performance.voiceconfig_number[selected_instance_id] - ENCODER[ENC_L].speed(), VOICECONFIG_NUM_MIN, VOICECONFIG_NUM_MAX);
else
yesno = false;
}
else if (LCDML.BT_checkEnter())
{
if (mode == 1 && overwrite == true)
{
mode = 2;
lcd.setCursor(0, 1);
lcd.print(F("Overwrite: [ ]"));
}
else if (mode > 0 )
{
mode = 0xff;
if (overwrite == false || yesno == true)
{
if (yesno == true)
{
char tmp[FILENAME_LEN];
sprintf(tmp, "/%s/%s%d.json", VOICE_CONFIG_PATH, VOICE_CONFIG_NAME, configuration.performance.voiceconfig_number[selected_instance_id]);
SD.remove(tmp);
}
save_sd_voiceconfig_json(configuration.performance.voiceconfig_number[selected_instance_id], selected_instance_id, 0);
lcd.show(1, 0, 16, "Done.");
delay(MESSAGE_WAIT_TIME);
LCDML.FUNC_goBackToMenu();
}
else if (overwrite == true && yesno == false)
{
char tmp[17];
mode = 1;
lcd.setCursor(0, 1);
sprintf(tmp, "[%2d] ", configuration.performance.voiceconfig_number[selected_instance_id]);
lcd.print(tmp);
}
}
else {
mode = 1;
lcd.setCursor(4, 1);
lcd.print(" ");
}
}
if (mode == 0)
{
lcd.setCursor(10, 1);
//lcd.print(configuration.performance.voiceconfig_number[selected_instance_id]);
lcd.print(selected_instance_id);
}
else if (mode == 1)
{
char tmp[FILENAME_LEN];
sprintf(tmp, "/%s/%s%d.json", VOICE_CONFIG_PATH, VOICE_CONFIG_NAME, configuration.performance.voiceconfig_number[selected_instance_id]);
if (SD.exists(tmp))
overwrite = true;
else
overwrite = false;
lcd.setCursor(0, 1);
sprintf(tmp, "[%2d]", configuration.performance.voiceconfig_number[selected_instance_id]);
lcd.print(tmp);
}
else if (mode == 2)
{
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 *********
{
if (mode < 0xff)
{
lcd.show(1, 0, 16, "Canceled.");
delay(MESSAGE_WAIT_TIME);
}
#if NUM_DEXED > 1
if (selected_instance_id > 0)
EEPROM.update(EEPROM_START_ADDRESS + offsetof(configuration_s, performance.voiceconfig_number[1]), configuration.performance.voiceconfig_number[1]);
else
#endif
EEPROM.update(EEPROM_START_ADDRESS + offsetof(configuration_s, performance.voiceconfig_number[0]), configuration.performance.voiceconfig_number[0]);
encoderDir[ENC_R].reset();
}
}
void UI_func_load_fx(uint8_t param)
{
static uint8_t mode;
if (LCDML.FUNC_setup()) // ****** SETUP *********
{
char tmp[10];
mode = 0;
encoderDir[ENC_R].reset();
lcd.setCursor(0, 0);
lcd.print(F("Load FX SD"));
lcd.setCursor(0, 1);
sprintf(tmp, "[%2d]", configuration.performance.fx_number);
lcd.print(tmp);
}
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())
{
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);
}
else if (LCDML.BT_checkEnter())
{
mode = 0xff;
lcd.setCursor(0, 1);
if (load_sd_fx_json(configuration.performance.fx_number, 0) == false)
lcd.print("Does not exist. ");
else
lcd.print("Done. ");
delay(MESSAGE_WAIT_TIME);
LCDML.FUNC_goBackToMenu();
}
lcd.setCursor(0, 1);
char tmp[10];
sprintf(tmp, "[%2d]", configuration.performance.fx_number);
lcd.print(tmp);
}
}
if (LCDML.FUNC_close()) // ****** STABLE END *********
{
if (mode < 0xff)
{
lcd.show(1, 0, 16, "Canceled.");
delay(MESSAGE_WAIT_TIME);
}
else
eeprom_update_fx();
EEPROM.update(EEPROM_START_ADDRESS + offsetof(configuration_s, performance.fx_number), configuration.performance.fx_number);
encoderDir[ENC_R].reset();
}
}
void UI_func_save_fx(uint8_t param)
{
static bool overwrite;
static bool yesno;
static uint8_t mode;
if (LCDML.FUNC_setup()) // ****** SETUP *********
{
char tmp[FILENAME_LEN];
yesno = false;
mode = 0;
encoderDir[ENC_R].reset();
lcd.setCursor(0, 0);
lcd.print(F("Save FX"));
lcd.setCursor(0, 1);
sprintf(tmp, "[%2d]", configuration.performance.fx_number);
lcd.print(tmp);
sprintf(tmp, "/%s/%s%d.json", FX_CONFIG_PATH, 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
{
mode = 0xff;
if (overwrite == false || yesno == true)
{
if (yesno == true)
{
char tmp[FILENAME_LEN];
sprintf(tmp, "/%s/%s%d.json", FX_CONFIG_PATH, FX_CONFIG_NAME, configuration.performance.fx_number);
SD.remove(tmp);
}
save_sd_fx_json(configuration.performance.fx_number, 0);
lcd.show(1, 0, 16, "Done.");
LCDML.FUNC_goBackToMenu();
delay(MESSAGE_WAIT_TIME);
}
else if (overwrite == true && yesno == false)
{
char tmp[17];
mode = 0;
lcd.setCursor(0, 1);
sprintf(tmp, "[%2d] ", configuration.performance.fx_number);
lcd.print(tmp);
}
}
}
if (mode == 0)
{
char tmp[FILENAME_LEN];
sprintf(tmp, "/%s/%s%d.json", FX_CONFIG_PATH, FX_CONFIG_NAME, configuration.performance.fx_number);
if (SD.exists(tmp))
overwrite = true;
else
overwrite = false;
lcd.setCursor(0, 1);
sprintf(tmp, "[%2d]", 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 *********
{
if (mode < 0xff)
{
lcd.show(1, 0, 16, "Canceled.");
delay(MESSAGE_WAIT_TIME);
}
EEPROM.update(EEPROM_START_ADDRESS + offsetof(configuration_s, performance.fx_number), configuration.performance.fx_number);
encoderDir[ENC_R].reset();
}
}
void UI_func_save_voice(uint8_t param)
{
static bool yesno;

@ -101,47 +101,38 @@ LCDML_add(67, LCDML_0_1_6, 2, "Velocity Lvl", UI_func_velocity_level);
LCDML_add(68, LCDML_0_1, 7, "Operator", UI_handle_OP);
LCDML_add(69, LCDML_0_1, 8, "Save Voice", UI_func_save_voice);
LCDML_add(70, LCDML_0, 3, "Load/Save", NULL);
LCDML_add(71, LCDML_0_3, 1, "Performance", NULL);
LCDML_add(72, LCDML_0_3_1, 1, "Load Perf.", UI_func_load_performance);
LCDML_add(73, LCDML_0_3_1, 2, "Save Perf.", UI_func_save_performance);
LCDML_add(74, LCDML_0_3, 2, "Voice Config", NULL);
LCDML_add(75, LCDML_0_3_2, 1, "Load Voice Cfg", UI_func_load_voiceconfig);
LCDML_add(76, LCDML_0_3_2, 2, "Save Voice Cfg", UI_func_save_voiceconfig);
LCDML_add(77, LCDML_0_3, 3, "Effects", NULL);
LCDML_add(78, LCDML_0_3_3, 1, "Load Effects", UI_func_load_fx);
LCDML_add(79, LCDML_0_3_3, 2, "Save Effects", UI_func_save_fx);
LCDML_add(80, LCDML_0_3, 5, "MIDI", NULL);
LCDML_add(81, LCDML_0_3_5, 1, "MIDI Recv Bank", UI_func_sysex_receive_bank);
LCDML_add(82, LCDML_0_3_5, 2, "MIDI Snd Bank", UI_func_sysex_send_bank);
LCDML_add(83, LCDML_0_3_5, 3, "MIDI Snd Voice", UI_func_sysex_send_voice);
LCDML_add(84, LCDML_0, 4, "Drums", NULL);
LCDML_add(85, LCDML_0_4, 1, "Drums Main Vol", UI_func_drums_main_volume);
LCDML_add(86, LCDML_0_4, 2, "Drum Volumes", UI_func_drum_volume);
LCDML_add(87, LCDML_0_4, 3, "Drum Pan", UI_func_drum_pan);
LCDML_add(88, LCDML_0_4, 4, "Drum Rev.Send", UI_func_drum_reverb_send);
LCDML_add(89, LCDML_0_4, 5, "MIDI Channel", UI_func_drum_midi_channel);
LCDML_add(90, LCDML_0, 5, "Sequencer", NULL);
LCDML_add(91, LCDML_0_5, 1, "Pattern Editor", UI_func_seq_pattern_editor);
LCDML_add(92, LCDML_0_5, 2, "Vel./Chrd Edit", UI_func_seq_vel_editor);
LCDML_add(93, LCDML_0_5, 3, "Pattern Chain", UI_func_seq_pat_chain);
LCDML_add(94, LCDML_0_5, 4, "Arpeggio", UI_func_arpeggio);
LCDML_add(95, LCDML_0_5, 5, "Seq. Settings", NULL);
LCDML_add(96, LCDML_0_5_5, 1, "Tempo", UI_func_seq_tempo);
LCDML_add(97, LCDML_0_5_5, 2, "Seq. Length", UI_func_seq_lenght);
LCDML_add(98, LCDML_0_5_5, 3, "Track Setup", UI_func_seq_track_setup);
LCDML_add(99, LCDML_0_5_5, 4, "Seq.Disp.Style", UI_func_seq_display_style);
LCDML_add(100, LCDML_0_5_5, 5, "dexed assign", UI_func_dexed_assign);
LCDML_add(101, LCDML_0_5_5, 6, "shift&transp.", UI_func_arp_shift);
LCDML_add(102, LCDML_0_5_5, 7, "ChordTrack Keys", UI_func_seq_chord_keys_ammount);
LCDML_add(103, LCDML_0_5_5, 8, "L.Transp.Key", UI_func_seq_live_transpose_oct);
LCDML_add(104, LCDML_0_5, 6, "LOAD Seq.Data", UI_func_seq_state_load);
LCDML_add(105, LCDML_0_5, 7, "SAVE Seq.Data", UI_func_seq_state_save);
LCDML_add(106, LCDML_0, 6, "System", NULL);
LCDML_add(107, LCDML_0_6, 1, "Stereo/Mono", UI_func_stereo_mono);
LCDML_add(108, LCDML_0_6, 2, "MIDI Soft THRU", UI_func_midi_soft_thru);
LCDML_add(109, LCDML_0_6, 3, "Favorites", UI_func_favorites);
LCDML_add(110, LCDML_0_6, 4, "EEPROM Reset", UI_func_eeprom_reset);
LCDML_add(111, LCDML_0, 7, "Info", UI_func_information);
LCDML_addAdvanced(112, LCDML_0, 8, COND_hide, "Volume", UI_func_volume, 0, _LCDML_TYPE_default);
#define _LCDML_DISP_cnt 112
LCDML_add(71, LCDML_0_3, 1, "Load Perf.", UI_func_load_performance);
LCDML_add(72, LCDML_0_3, 2, "Save Perf.", UI_func_save_performance);
LCDML_add(73, LCDML_0_3, 3, "MIDI", NULL);
LCDML_add(74, LCDML_0_3_3, 1, "MIDI Recv Bank", UI_func_sysex_receive_bank);
LCDML_add(75, LCDML_0_3_3, 2, "MIDI Snd Bank", UI_func_sysex_send_bank);
LCDML_add(76, LCDML_0_3_3, 3, "MIDI Snd Voice", UI_func_sysex_send_voice);
LCDML_add(77, LCDML_0, 4, "Drums", NULL);
LCDML_add(78, LCDML_0_4, 1, "Drums Main Vol", UI_func_drums_main_volume);
LCDML_add(79, LCDML_0_4, 2, "Drum Volumes", UI_func_drum_volume);
LCDML_add(80, LCDML_0_4, 3, "Drum Pan", UI_func_drum_pan);
LCDML_add(81, LCDML_0_4, 4, "Drum Rev.Send", UI_func_drum_reverb_send);
LCDML_add(82, LCDML_0_4, 5, "MIDI Channel", UI_func_drum_midi_channel);
LCDML_add(83, LCDML_0, 5, "Sequencer", NULL);
LCDML_add(84, LCDML_0_5, 1, "Pattern Editor", UI_func_seq_pattern_editor);
LCDML_add(85, LCDML_0_5, 2, "Vel./Chrd Edit", UI_func_seq_vel_editor);
LCDML_add(86, LCDML_0_5, 3, "Pattern Chain", UI_func_seq_pat_chain);
LCDML_add(87, LCDML_0_5, 4, "Arpeggio", UI_func_arpeggio);
LCDML_add(88, LCDML_0_5, 5, "Seq. Settings", NULL);
LCDML_add(89, LCDML_0_5_5, 1, "Tempo", UI_func_seq_tempo);
LCDML_add(90, LCDML_0_5_5, 2, "Seq. Length", UI_func_seq_lenght);
LCDML_add(91, LCDML_0_5_5, 3, "Track Setup", UI_func_seq_track_setup);
LCDML_add(92, LCDML_0_5_5, 4, "Seq.Disp.Style", UI_func_seq_display_style);
LCDML_add(93, LCDML_0_5_5, 5, "dexed assign", UI_func_dexed_assign);
LCDML_add(94, LCDML_0_5_5, 6, "shift&transp.", UI_func_arp_shift);
LCDML_add(95, LCDML_0_5_5, 7, "ChordTrack Keys", UI_func_seq_chord_keys_ammount);
LCDML_add(96, LCDML_0_5_5, 8, "L.Transp.Key", UI_func_seq_live_transpose_oct);
LCDML_add(97, LCDML_0, 6, "System", NULL);
LCDML_add(98, LCDML_0_6, 1, "Stereo/Mono", UI_func_stereo_mono);
LCDML_add(99, LCDML_0_6, 2, "MIDI Soft THRU", UI_func_midi_soft_thru);
LCDML_add(100, LCDML_0_6, 3, "Favorites", UI_func_favorites);
LCDML_add(101, LCDML_0_6, 4, "EEPROM Reset", UI_func_eeprom_reset);
LCDML_add(102, LCDML_0, 7, "Info", UI_func_information);
LCDML_addAdvanced(103, LCDML_0, 8, COND_hide, "Volume", UI_func_volume, 0, _LCDML_TYPE_default);
#define _LCDML_DISP_cnt 103
#endif

@ -103,54 +103,45 @@ LCDML_add(69, LCDML_0_1_6, 1, "Note Refresh", UI_func_note_refresh);
LCDML_add(70, LCDML_0_1_6, 2, "Velocity Lvl", UI_func_velocity_level);
LCDML_add(71, LCDML_0_1, 7, "Operator", UI_handle_OP);
LCDML_add(72, LCDML_0_1, 8, "Save Voice", UI_func_save_voice);
LCDML_add(73, LCDML_0, 3, "Load/Save", NULL);
LCDML_add(74, LCDML_0_3, 1, "Performance", NULL);
LCDML_add(75, LCDML_0_3_1, 1, "Load Perf.", UI_func_load_performance);
LCDML_add(76, LCDML_0_3_1, 2, "Save Perf.", UI_func_save_performance);
LCDML_add(77, LCDML_0_3, 2, "Voice Config", NULL);
LCDML_add(78, LCDML_0_3_2, 1, "Load Voice Cfg", UI_func_load_voiceconfig);
LCDML_add(79, LCDML_0_3_2, 2, "Save Voice Cfg", UI_func_save_voiceconfig);
LCDML_add(80, LCDML_0_3, 3, "Effects", NULL);
LCDML_add(81, LCDML_0_3_3, 1, "Load Effects", UI_func_load_fx);
LCDML_add(82, LCDML_0_3_3, 2, "Save Effects", UI_func_save_fx);
LCDML_add(83, LCDML_0_3, 5, "MIDI", NULL);
LCDML_add(84, LCDML_0_3_5, 1, "MIDI Recv Bank", UI_func_sysex_receive_bank);
LCDML_add(85, LCDML_0_3_5, 2, "MIDI Snd Bank", UI_func_sysex_send_bank);
LCDML_add(86, LCDML_0_3_5, 3, "MIDI Snd Voice", UI_func_sysex_send_voice);
LCDML_add(87, LCDML_0, 4, "Drums", NULL);
LCDML_add(88, LCDML_0_4, 1, "Drums Main Vol", UI_func_drums_main_volume);
LCDML_add(89, LCDML_0_4, 2, "Drum Volumes", UI_func_drum_volume);
LCDML_add(90, LCDML_0_4, 3, "Drum Pan", UI_func_drum_pan);
LCDML_add(91, LCDML_0_4, 4, "Drum Rev.Send", UI_func_drum_reverb_send);
LCDML_add(92, LCDML_0_4, 5, "Drum Pitch", UI_func_drum_pitch);
LCDML_add(93, LCDML_0_4, 6, "Drum Tune", UI_func_drum_tune_offset);
LCDML_add(94, LCDML_0_4, 7, "MIDI Channel", UI_func_drum_midi_channel);
LCDML_add(95, LCDML_0_4, 8, "Smart Filter", UI_func_smart_filter);
LCDML_add(96, LCDML_0, 5, "Sequencer", NULL);
LCDML_add(97, LCDML_0_5, 1, "Pattern Editor", UI_func_seq_pattern_editor);
LCDML_add(98, LCDML_0_5, 2, "Vel./Chrd Edit", UI_func_seq_vel_editor);
LCDML_add(99, LCDML_0_5, 3, "Pattern Chain", UI_func_seq_pat_chain);
LCDML_add(100, LCDML_0_5, 4, "Arpeggio", UI_func_arpeggio);
LCDML_add(101, LCDML_0_5, 5, "Mute Matrix", UI_func_seq_mute_matrix);
LCDML_add(102, LCDML_0_5, 6, "Seq. Settings", NULL);
LCDML_add(103, LCDML_0_5_6, 1, "Tempo", UI_func_seq_tempo);
LCDML_add(104, LCDML_0_5_6, 2, "Seq. Length", UI_func_seq_lenght);
LCDML_add(105, LCDML_0_5_6, 3, "Track Setup", UI_func_seq_track_setup);
LCDML_add(106, LCDML_0_5_6, 4, "Seq.Disp.Style", UI_func_seq_display_style);
LCDML_add(107, LCDML_0_5_6, 5, "dexed assign", UI_func_dexed_assign);
LCDML_add(108, LCDML_0_5_6, 6, "shift&transp.", UI_func_arp_shift);
LCDML_add(109, LCDML_0_5_6, 7, "L.Transp.Key", UI_func_seq_live_transpose_oct);
LCDML_add(110, LCDML_0_5_6, 8, "ChordTrack Keys", UI_func_seq_chord_keys_ammount);
LCDML_add(111, LCDML_0_5_6, 9, "Smart Filter", UI_func_smart_filter);
LCDML_add(112, LCDML_0_5_6, 10, "Name Sequence", UI_func_set_sequence_name);
LCDML_add(113, LCDML_0_5, 7, "LOAD Seq.Data", UI_func_seq_state_load);
LCDML_add(114, LCDML_0_5, 8, "SAVE Seq.Data", UI_func_seq_state_save);
LCDML_add(115, LCDML_0, 6, "System", NULL);
LCDML_add(116, LCDML_0_6, 1, "Stereo/Mono", UI_func_stereo_mono);
LCDML_add(117, LCDML_0_6, 2, "MIDI Soft THRU", UI_func_midi_soft_thru);
LCDML_add(118, LCDML_0_6, 3, "Favorites", UI_func_favorites);
LCDML_add(119, LCDML_0_6, 4, "EEPROM Reset", UI_func_eeprom_reset);
LCDML_add(120, LCDML_0, 7, "Info", UI_func_information);
LCDML_addAdvanced(121, LCDML_0, 8, COND_hide, "Volume", UI_func_volume, 0, _LCDML_TYPE_default);
#define _LCDML_DISP_cnt 121
LCDML_add(73, LCDML_0, 2, "Load/Save", NULL);
LCDML_add(74, LCDML_0_2, 1, "Load Perf.", UI_func_load_performance);
LCDML_add(75, LCDML_0_2, 2, "Save Perf.", UI_func_save_performance);
LCDML_add(76, LCDML_0_2, 3, "MIDI", NULL);
LCDML_add(77, LCDML_0_2_3, 1, "MIDI Recv Bank", UI_func_sysex_receive_bank);
LCDML_add(78, LCDML_0_2_3, 2, "MIDI Snd Bank", UI_func_sysex_send_bank);
LCDML_add(79, LCDML_0_2_3, 3, "MIDI Snd Voice", UI_func_sysex_send_voice);
LCDML_add(80, LCDML_0, 3, "Drums", NULL);
LCDML_add(81, LCDML_0_3, 1, "Drums Main Vol", UI_func_drums_main_volume);
LCDML_add(82, LCDML_0_3, 2, "Drum Volumes", UI_func_drum_volume);
LCDML_add(83, LCDML_0_3, 3, "Drum Pan", UI_func_drum_pan);
LCDML_add(84, LCDML_0_3, 4, "Drum Rev.Send", UI_func_drum_reverb_send);
LCDML_add(85, LCDML_0_3, 5, "Drum Pitch", UI_func_drum_pitch);
LCDML_add(86, LCDML_0_3, 6, "Drum Tune", UI_func_drum_tune_offset);
LCDML_add(87, LCDML_0_3, 7, "MIDI Channel", UI_func_drum_midi_channel);
LCDML_add(88, LCDML_0_3, 8, "Smart Filter", UI_func_smart_filter);
LCDML_add(89, LCDML_0, 4, "Sequencer", NULL);
LCDML_add(90, LCDML_0_4, 1, "Pattern Editor", UI_func_seq_pattern_editor);
LCDML_add(91, LCDML_0_4, 2, "Vel./Chrd Edit", UI_func_seq_vel_editor);
LCDML_add(92, LCDML_0_4, 3, "Pattern Chain", UI_func_seq_pat_chain);
LCDML_add(93, LCDML_0_4, 4, "Arpeggio", UI_func_arpeggio);
LCDML_add(94, LCDML_0_4, 5, "Mute Matrix", UI_func_seq_mute_matrix);
LCDML_add(95, LCDML_0_4, 6, "Seq. Settings", NULL);
LCDML_add(96, LCDML_0_4_6, 1, "Tempo", UI_func_seq_tempo);
LCDML_add(97, LCDML_0_4_6, 2, "Seq. Length", UI_func_seq_lenght);
LCDML_add(98, LCDML_0_4_6, 3, "Track Setup", UI_func_seq_track_setup);
LCDML_add(99, LCDML_0_4_6, 4, "Seq.Disp.Style", UI_func_seq_display_style);
LCDML_add(100, LCDML_0_4_6, 5, "dexed assign", UI_func_dexed_assign);
LCDML_add(101, LCDML_0_4_6, 6, "shift&transp.", UI_func_arp_shift);
LCDML_add(102, LCDML_0_4_6, 7, "L.Transp.Key", UI_func_seq_live_transpose_oct);
LCDML_add(103, LCDML_0_4_6, 8, "ChordTrack Keys", UI_func_seq_chord_keys_ammount);
LCDML_add(104, LCDML_0_4_6, 9, "Smart Filter", UI_func_smart_filter);
LCDML_add(105, LCDML_0_4_6, 10, "Name Sequence", UI_func_set_sequence_name);
LCDML_add(106, LCDML_0, 5, "System", NULL);
LCDML_add(107, LCDML_0_5, 1, "Stereo/Mono", UI_func_stereo_mono);
LCDML_add(108, LCDML_0_5, 2, "MIDI Soft THRU", UI_func_midi_soft_thru);
LCDML_add(109, LCDML_0_5, 3, "Favorites", UI_func_favorites);
LCDML_add(110, LCDML_0_5, 4, "EEPROM Reset", UI_func_eeprom_reset);
LCDML_add(111, LCDML_0, 6, "Info", UI_func_information);
LCDML_addAdvanced(112, LCDML_0, 7, COND_hide, "Volume", UI_func_volume, 0, _LCDML_TYPE_default);
#define _LCDML_DISP_cnt 112
#endif

@ -75,44 +75,38 @@ LCDML_add(41, LCDML_0_1_6, 2, "Velocity Lvl", UI_func_velocity_level);
LCDML_add(42, LCDML_0_1, 7, "Operator", UI_handle_OP);
LCDML_add(43, LCDML_0_1, 8, "Save Voice", UI_func_save_voice);
LCDML_add(44, LCDML_0, 2, "Load/Save", NULL);
LCDML_add(45, LCDML_0_2, 1, "Performance", NULL);
LCDML_add(46, LCDML_0_2_1, 1, "Load Perf.", UI_func_load_performance);
LCDML_add(47, LCDML_0_2_1, 2, "Save Perf.", UI_func_save_performance);
LCDML_add(48, LCDML_0_2, 2, "Voice Config", NULL);
LCDML_add(49, LCDML_0_2_2, 1, "Load Voice Cfg", UI_func_load_voiceconfig);
LCDML_add(50, LCDML_0_2_2, 2, "Save Voice Cfg", UI_func_save_voiceconfig);
LCDML_add(51, LCDML_0_2, 4, "MIDI", NULL);
LCDML_add(52, LCDML_0_2_4, 1, "MIDI Recv Bank", UI_func_sysex_receive_bank);
LCDML_add(53, LCDML_0_2_4, 2, "MIDI Snd Bank", UI_func_sysex_send_bank);
LCDML_add(54, LCDML_0_2_4, 3, "MIDI Snd Voice", UI_func_sysex_send_voice);
LCDML_add(55, LCDML_0, 4, "Drums", NULL);
LCDML_add(56, LCDML_0_4, 1, "Drums Main Vol", UI_func_drums_main_volume);
LCDML_add(57, LCDML_0_4, 2, "Drum Volumes", UI_func_drum_volume);
LCDML_add(58, LCDML_0_4, 3, "Drum Pan", UI_func_drum_pan);
LCDML_add(59, LCDML_0_4, 4, "MIDI Channel", UI_func_drum_midi_channel);
LCDML_add(60, LCDML_0, 5, "Sequencer", NULL);
LCDML_add(61, LCDML_0_5, 1, "Pattern Editor", UI_func_seq_pattern_editor);
LCDML_add(62, LCDML_0_5, 2, "Vel./Chrd Edit", UI_func_seq_vel_editor);
LCDML_add(63, LCDML_0_5, 3, "Pattern Chain", UI_func_seq_pat_chain);
LCDML_add(64, LCDML_0_5, 4, "Arpeggio", UI_func_arpeggio);
LCDML_add(65, LCDML_0_5, 5, "Mute Matrix", UI_func_seq_mute_matrix);
LCDML_add(66, LCDML_0_5, 6, "Seq. Settings", NULL);
LCDML_add(67, LCDML_0_5_6, 1, "Tempo", UI_func_seq_tempo);
LCDML_add(68, LCDML_0_5_6, 2, "Seq. Length", UI_func_seq_lenght);
LCDML_add(69, LCDML_0_5_6, 3, "Track Setup", UI_func_seq_track_setup);
LCDML_add(70, LCDML_0_5_6, 4, "Seq.Disp.Style", UI_func_seq_display_style);
LCDML_add(71, LCDML_0_5_6, 5, "dexed assign", UI_func_dexed_assign);
LCDML_add(72, LCDML_0_5_6, 6, "shift&transp.", UI_func_arp_shift);
LCDML_add(73, LCDML_0_5_6, 7, "L.Transp.Key", UI_func_seq_live_transpose_oct);
LCDML_add(74, LCDML_0_5_6, 8, "ChordTrack Keys", UI_func_seq_chord_keys_ammount);
LCDML_add(75, LCDML_0_5, 7, "LOAD Seq.Data", UI_func_seq_state_load);
LCDML_add(76, LCDML_0_5, 8, "SAVE Seq.Data", UI_func_seq_state_save);
LCDML_add(77, LCDML_0, 6, "System", NULL);
LCDML_add(78, LCDML_0_6, 1, "Stereo/Mono", UI_func_stereo_mono);
LCDML_add(79, LCDML_0_6, 2, "MIDI Soft THRU", UI_func_midi_soft_thru);
LCDML_add(80, LCDML_0_6, 3, "Favorites", UI_func_favorites);
LCDML_add(81, LCDML_0_6, 4, "EEPROM Reset", UI_func_eeprom_reset);
LCDML_add(82, LCDML_0, 7, "Info", UI_func_information);
LCDML_addAdvanced(83, LCDML_0, 8, COND_hide, "Volume", UI_func_volume, 0, _LCDML_TYPE_default);
#define _LCDML_DISP_cnt 83
LCDML_add(45, LCDML_0_2, 1, "Load Perf.", UI_func_load_performance);
LCDML_add(46, LCDML_0_2, 2, "Save Perf.", UI_func_save_performance);
LCDML_add(47, LCDML_0_2, 3, "MIDI", NULL);
LCDML_add(48, LCDML_0_2_3, 1, "MIDI Recv Bank", UI_func_sysex_receive_bank);
LCDML_add(49, LCDML_0_2_3, 2, "MIDI Snd Bank", UI_func_sysex_send_bank);
LCDML_add(50, LCDML_0_2_3, 3, "MIDI Snd Voice", UI_func_sysex_send_voice);
LCDML_add(51, LCDML_0, 3, "Drums", NULL);
LCDML_add(52, LCDML_0_3, 1, "Drums Main Vol", UI_func_drums_main_volume);
LCDML_add(53, LCDML_0_3, 2, "Drum Volumes", UI_func_drum_volume);
LCDML_add(54, LCDML_0_3, 3, "Drum Pan", UI_func_drum_pan);
LCDML_add(55, LCDML_0_3, 4, "MIDI Channel", UI_func_drum_midi_channel);
LCDML_add(56, LCDML_0, 4, "Sequencer", NULL);
LCDML_add(57, LCDML_0_4, 1, "Pattern Editor", UI_func_seq_pattern_editor);
LCDML_add(58, LCDML_0_4, 2, "Vel./Chrd Edit", UI_func_seq_vel_editor);
LCDML_add(59, LCDML_0_4, 3, "Pattern Chain", UI_func_seq_pat_chain);
LCDML_add(60, LCDML_0_4, 4, "Arpeggio", UI_func_arpeggio);
LCDML_add(61, LCDML_0_4, 5, "Mute Matrix", UI_func_seq_mute_matrix);
LCDML_add(62, LCDML_0_4, 6, "Seq. Settings", NULL);
LCDML_add(63, LCDML_0_4_6, 1, "Tempo", UI_func_seq_tempo);
LCDML_add(64, LCDML_0_4_6, 2, "Seq. Length", UI_func_seq_lenght);
LCDML_add(65, LCDML_0_4_6, 3, "Track Setup", UI_func_seq_track_setup);
LCDML_add(66, LCDML_0_4_6, 4, "Seq.Disp.Style", UI_func_seq_display_style);
LCDML_add(67, LCDML_0_4_6, 5, "dexed assign", UI_func_dexed_assign);
LCDML_add(68, LCDML_0_4_6, 6, "shift&transp.", UI_func_arp_shift);
LCDML_add(69, LCDML_0_4_6, 7, "L.Transp.Key", UI_func_seq_live_transpose_oct);
LCDML_add(70, LCDML_0_4_6, 8, "ChordTrack Keys", UI_func_seq_chord_keys_ammount);
LCDML_add(71, LCDML_0, 5, "System", NULL);
LCDML_add(72, LCDML_0_5, 1, "Stereo/Mono", UI_func_stereo_mono);
LCDML_add(73, LCDML_0_5, 2, "MIDI Soft THRU", UI_func_midi_soft_thru);
LCDML_add(74, LCDML_0_5, 3, "Favorites", UI_func_favorites);
LCDML_add(75, LCDML_0_5, 4, "EEPROM Reset", UI_func_eeprom_reset);
LCDML_add(76, LCDML_0, 6, "Info", UI_func_information);
LCDML_addAdvanced(77, LCDML_0, 8, COND_hide, "Volume", UI_func_volume, 0, _LCDML_TYPE_default);
#define _LCDML_DISP_cnt 77
#endif

@ -107,7 +107,7 @@
#endif
// FX-CHAIN ENABLE/DISABLE
#define USE_FX 1
//#define USE_FX 1
// NUMBER OF PARALLEL SAMPLEDRUMS
#ifdef TEENSY4

Loading…
Cancel
Save