diff --git a/MicroDexed.ino b/MicroDexed.ino index 30a6dff..40d501c 100644 --- a/MicroDexed.ino +++ b/MicroDexed.ino @@ -1190,20 +1190,23 @@ void check_configuration(void) configuration.dexed[instance_id].filter_resonance = constrain(configuration.dexed[instance_id].filter_resonance, FILTER_RESONANCE_MIN, FILTER_RESONANCE_MAX); configuration.dexed[instance_id].loudness = constrain(configuration.dexed[instance_id].loudness, LOUDNESS_MIN, LOUDNESS_MAX); configuration.dexed[instance_id].transpose = constrain(configuration.dexed[instance_id].transpose, TRANSPOSE_MIN, TRANSPOSE_MAX); - configuration.dexed[instance_id].tune = constrain(configuration.dexed[instance_id].tune, TUNE_MIN, TUNE_MAX); + configuration.dexed[instance_id].tune = constrain(configuration.dexed[instance_id].tune, TUNE_MIN, TUNE_MAX); MicroDexed[instance_id]->data[DEXED_GLOBAL_PARAMETER_OFFSET + DEXED_MASTER_TUNE] = configuration.dexed[instance_id].tune; configuration.dexed[instance_id].polyphony = constrain(configuration.dexed[instance_id].polyphony, POLYPHONY_MIN, POLYPHONY_MAX); configuration.dexed[instance_id].engine = constrain(configuration.dexed[instance_id].engine, ENGINE_MIN, ENGINE_MAX); configuration.dexed[instance_id].monopoly = constrain(configuration.dexed[instance_id].monopoly, MONOPOLY_MIN, MONOPOLY_MAX); - configuration.dexed[instance_id].pb_range = constrain(configuration.dexed[instance_id].pb_range, PB_RANGE_MIN, PB_RANGE_MAX); - configuration.dexed[instance_id].pb_step = constrain(configuration.dexed[instance_id].pb_step, PB_STEP_MIN, PB_STEP_MAX); - configuration.dexed[instance_id].mw_range = constrain(configuration.dexed[instance_id].mw_range, MW_RANGE_MIN, MW_RANGE_MAX); - configuration.dexed[instance_id].mw_assign = constrain(configuration.dexed[instance_id].mw_assign, MW_ASSIGN_MIN, MW_ASSIGN_MAX); - configuration.dexed[instance_id].fc_range = constrain(configuration.dexed[instance_id].fc_range, FC_RANGE_MIN, FC_RANGE_MAX); - configuration.dexed[instance_id].fc_assign = constrain(configuration.dexed[instance_id].fc_assign, FC_ASSIGN_MIN, FC_ASSIGN_MAX); - configuration.dexed[instance_id].bc_range = constrain(configuration.dexed[instance_id].bc_range, BC_RANGE_MIN, BC_RANGE_MAX); - configuration.dexed[instance_id].bc_assign = constrain(configuration.dexed[instance_id].bc_assign, BC_ASSIGN_MIN, BC_ASSIGN_MAX); - configuration.dexed[instance_id].at_range = constrain(configuration.dexed[instance_id].at_range, AT_RANGE_MIN, AT_RANGE_MAX); - configuration.dexed[instance_id].at_assign = constrain(configuration.dexed[instance_id].at_assign, AT_ASSIGN_MIN, AT_ASSIGN_MAX); + configuration.dexed[instance_id].pb_range = constrain(configuration.dexed[instance_id].pb_range, PB_RANGE_MIN, PB_RANGE_MAX); MicroDexed[instance_id]->data[DEXED_GLOBAL_PARAMETER_OFFSET + DEXED_PITCHBEND_RANGE] = configuration.dexed[instance_id].pb_range; + configuration.dexed[instance_id].pb_step = constrain(configuration.dexed[instance_id].pb_step, PB_STEP_MIN, PB_STEP_MAX); MicroDexed[instance_id]->data[DEXED_GLOBAL_PARAMETER_OFFSET + DEXED_PITCHBEND_STEP] = configuration.dexed[instance_id].pb_step; + configuration.dexed[instance_id].mw_range = constrain(configuration.dexed[instance_id].mw_range, MW_RANGE_MIN, MW_RANGE_MAX); MicroDexed[instance_id]->data[DEXED_GLOBAL_PARAMETER_OFFSET + DEXED_MODWHEEL_RANGE] = configuration.dexed[instance_id].mw_range; + configuration.dexed[instance_id].mw_assign = constrain(configuration.dexed[instance_id].mw_assign, MW_ASSIGN_MIN, MW_ASSIGN_MAX); MicroDexed[instance_id]->data[DEXED_GLOBAL_PARAMETER_OFFSET + DEXED_MODWHEEL_ASSIGN] = configuration.dexed[instance_id].mw_assign; + configuration.dexed[instance_id].fc_range = constrain(configuration.dexed[instance_id].fc_range, FC_RANGE_MIN, FC_RANGE_MAX); MicroDexed[instance_id]->data[DEXED_GLOBAL_PARAMETER_OFFSET + DEXED_FOOTCTRL_RANGE] = configuration.dexed[instance_id].fc_range; + configuration.dexed[instance_id].fc_assign = constrain(configuration.dexed[instance_id].fc_assign, FC_ASSIGN_MIN, FC_ASSIGN_MAX); MicroDexed[instance_id]->data[DEXED_GLOBAL_PARAMETER_OFFSET + DEXED_FOOTCTRL_ASSIGN] = configuration.dexed[instance_id].fc_assign; + configuration.dexed[instance_id].bc_range = constrain(configuration.dexed[instance_id].bc_range, BC_RANGE_MIN, BC_RANGE_MAX); MicroDexed[instance_id]->data[DEXED_GLOBAL_PARAMETER_OFFSET + DEXED_BREATHCTRL_RANGE] = configuration.dexed[instance_id].bc_range; + configuration.dexed[instance_id].bc_assign = constrain(configuration.dexed[instance_id].bc_assign, BC_ASSIGN_MIN, BC_ASSIGN_MAX); MicroDexed[instance_id]->data[DEXED_GLOBAL_PARAMETER_OFFSET + DEXED_BREATHCTRL_ASSIGN] = configuration.dexed[instance_id].bc_assign; + configuration.dexed[instance_id].at_range = constrain(configuration.dexed[instance_id].at_range, AT_RANGE_MIN, AT_RANGE_MAX); MicroDexed[instance_id]->data[DEXED_GLOBAL_PARAMETER_OFFSET + DEXED_AT_RANGE] = configuration.dexed[instance_id].at_range; + configuration.dexed[instance_id].at_assign = constrain(configuration.dexed[instance_id].at_assign, AT_ASSIGN_MIN, AT_ASSIGN_MAX); MicroDexed[instance_id]->data[DEXED_GLOBAL_PARAMETER_OFFSET + DEXED_AT_ASSIGN] = configuration.dexed[instance_id].at_assign; + configuration.dexed[instance_id].portamento_mode = constrain(configuration.dexed[instance_id].portamento_mode, PORTAMENTO_MODE_MIN, PORTAMENTO_MODE_MAX); MicroDexed[instance_id]->data[DEXED_GLOBAL_PARAMETER_OFFSET + DEXED_PORTAMENTO_MODE] = configuration.dexed[instance_id].portamento_mode; + configuration.dexed[instance_id].portamento_glissando = constrain(configuration.dexed[instance_id].portamento_glissando, PORTAMENTO_GLISSANDO_MIN, PORTAMENTO_GLISSANDO_MAX); MicroDexed[instance_id]->data[DEXED_GLOBAL_PARAMETER_OFFSET + DEXED_PORTAMENTO_GLISSANDO] = configuration.dexed[instance_id].portamento_glissando; + configuration.dexed[instance_id].portamento_time = constrain(configuration.dexed[instance_id].portamento_time, PORTAMENTO_TIME_MIN, PORTAMENTO_TIME_MAX); MicroDexed[instance_id]->data[DEXED_GLOBAL_PARAMETER_OFFSET + DEXED_PORTAMENTO_TIME] = configuration.dexed[instance_id].portamento_time; configuration.dexed[instance_id].op_enabled = constrain(configuration.dexed[instance_id].op_enabled, OP_ENABLED_MIN, OP_ENABLED_MAX); } } @@ -1254,6 +1257,9 @@ void init_configuration(void) configuration.dexed[instance_id].bc_assign = BC_ASSIGN_DEFAULT; configuration.dexed[instance_id].at_range = AT_RANGE_DEFAULT; configuration.dexed[instance_id].at_assign = AT_ASSIGN_DEFAULT; + configuration.dexed[instance_id].portamento_mode = PORTAMENTO_MODE_DEFAULT; + configuration.dexed[instance_id].portamento_glissando = PORTAMENTO_GLISSANDO_DEFAULT; + configuration.dexed[instance_id].portamento_time = PORTAMENTO_TIME_DEFAULT; configuration.dexed[instance_id].op_enabled = OP_ENABLED_DEFAULT; } eeprom_update(); @@ -1392,7 +1398,7 @@ void show_configuration(void) Serial.print(F(" Aftertouch Range ")); Serial.println(configuration.dexed[instance_id].at_range, DEC); Serial.print(F(" Portamento Mode ")); Serial.println(configuration.dexed[instance_id].portamento_mode, DEC); Serial.print(F(" Portamento Glissando ")); Serial.println(configuration.dexed[instance_id].portamento_glissando, DEC); - Serial.print(F(" Portamento TIme ")); Serial.println(configuration.dexed[instance_id].portamento_time, DEC); + Serial.print(F(" Portamento Time ")); Serial.println(configuration.dexed[instance_id].portamento_time, DEC); Serial.print(F(" OP Enabled ")); Serial.println(configuration.dexed[instance_id].op_enabled, DEC); Serial.flush(); } @@ -1494,7 +1500,7 @@ void show_patch(uint8_t instance_id) Serial.print(voicename); Serial.println(F("]")); Serial.flush(); - for (i = DEXED_GLOBAL_PARAMETER_OFFSET; i <= DEXED_GLOBAL_PARAMETER_OFFSET + DEXED_MAX_NOTES; i++) + for (i = DEXED_GLOBAL_PARAMETER_OFFSET; i <= DEXED_GLOBAL_PARAMETER_OFFSET + DEXED_PORTAMENTO_TIME; i++) { Serial.print(i, DEC); Serial.print(F(": ")); diff --git a/UI.hpp b/UI.hpp index f404070..6aa350c 100644 --- a/UI.hpp +++ b/UI.hpp @@ -2699,14 +2699,14 @@ void UI_func_portamento_mode(uint8_t param) { if (LCDML.BT_checkDown()) { - if (configuration.dexed[instance_id].portamento_mode < PORTMAMENTO_MODE_MAX) + if (configuration.dexed[instance_id].portamento_mode < PORTAMENTO_MODE_MAX) { configuration.dexed[instance_id].portamento_mode++; } } else if (LCDML.BT_checkUp()) { - if (configuration.dexed[instance_id].portamento_mode > PORTMAMENTO_MODE_MIN) + if (configuration.dexed[instance_id].portamento_mode > PORTAMENTO_MODE_MIN) { configuration.dexed[instance_id].portamento_mode--; } @@ -2758,14 +2758,14 @@ void UI_func_portamento_glissando(uint8_t param) { if (LCDML.BT_checkDown()) { - if (configuration.dexed[instance_id].portamento_glissando < PORTMAMENTO_GLISSANDO_MAX) + if (configuration.dexed[instance_id].portamento_glissando < PORTAMENTO_GLISSANDO_MAX) { configuration.dexed[instance_id].portamento_glissando++; } } else if (LCDML.BT_checkUp()) { - if (configuration.dexed[instance_id].portamento_glissando > PORTMAMENTO_GLISSANDO_MIN) + if (configuration.dexed[instance_id].portamento_glissando > PORTAMENTO_GLISSANDO_MIN) { configuration.dexed[instance_id].portamento_glissando--; } @@ -2817,14 +2817,14 @@ void UI_func_portamento_time(uint8_t param) { if (LCDML.BT_checkDown()) { - if (configuration.dexed[instance_id].portamento_time < PORTMAMENTO_TIME_MAX) + if (configuration.dexed[instance_id].portamento_time < PORTAMENTO_TIME_MAX) { configuration.dexed[instance_id].portamento_time++; } } else if (LCDML.BT_checkUp()) { - if (configuration.dexed[instance_id].portamento_time > PORTMAMENTO_TIME_MIN) + if (configuration.dexed[instance_id].portamento_time > PORTAMENTO_TIME_MIN) { configuration.dexed[instance_id].portamento_time--; } diff --git a/config.h b/config.h index f4203ed..4de4cdd 100644 --- a/config.h +++ b/config.h @@ -395,18 +395,6 @@ enum { DEXED, REVERB, DELAY, CHORUS }; #define AT_ASSIGN_MAX 7 #define AT_ASSIGN_DEFAULT 0 // Bitmapped: 0: Pitch, 1: Amp, 2: Bias -#define PORTMAMENTO_MODE_MIN 0 -#define PORTMAMENTO_MODE_MAX 1 -#define PORTMAMENTO_MODE_DEFAULT 0 - -#define PORTMAMENTO_GLISSANDO_MIN 0 -#define PORTMAMENTO_GLISSANDO_MAX 1 -#define PORTMAMENTO_GLISSANDO_DEFAULT 0 - -#define PORTMAMENTO_TIME_MIN 0 -#define PORTMAMENTO_TIME_MAX 99 -#define PORTMAMENTO_TIME_DEFAULT 0 - #define OP_ENABLED_MIN 0 #define OP_ENABLED_MAX 0x3f #define OP_ENABLED_DEFAULT OP_ENABLED_MAX @@ -415,13 +403,13 @@ enum { DEXED, REVERB, DELAY, CHORUS }; #define PORTAMENTO_MODE_MAX 1 #define PORTAMENTO_MODE_DEFAULT 0 // 0: Retain, 1: Follow -#define PORTAMENTO_GLISS_MIN 0 -#define PORTAMENTO_GLISS_MAX 1 -#define PORTAMENTO_GLISS_DEFAULT 0 +#define PORTAMENTO_GLISSANDO_MIN 0 +#define PORTAMENTO_GLISSANDO_MAX 1 +#define PORTAMENTO_GLISSANDO_DEFAULT 0 #define PORTAMENTO_TIME_MIN 0 #define PORTAMENTO_TIME_MAX 99 -#define PORTAMENTO_TIME_DEFAULT 50 +#define PORTAMENTO_TIME_DEFAULT 0 #define INSTANCES_MIN 1 #define INSTANCES_MAX NUM_DEXED