|
|
@ -1818,6 +1818,7 @@ void UI_func_stereo_mono(uint8_t param) |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#if NUM_DEXED == 1 |
|
|
|
void UI_func_polyphony(uint8_t param) |
|
|
|
void UI_func_polyphony(uint8_t param) |
|
|
|
{ |
|
|
|
{ |
|
|
|
uint8_t instance_id = 0; |
|
|
|
uint8_t instance_id = 0; |
|
|
@ -1860,6 +1861,85 @@ void UI_func_polyphony(uint8_t param) |
|
|
|
#endif |
|
|
|
#endif |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
#else |
|
|
|
|
|
|
|
void UI_func_polyphony(uint8_t param) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
char poly_value_string[3]; |
|
|
|
|
|
|
|
static uint8_t instance_id; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (LCDML.FUNC_setup()) // ****** SETUP *********
|
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
encoderDir[ENC_R].reset(); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (LCDML.FUNC_getID() > MENU_ID_OF_INSTANCE_2) |
|
|
|
|
|
|
|
instance_id = 1; |
|
|
|
|
|
|
|
else |
|
|
|
|
|
|
|
instance_id = 0; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
lcd.show(0, 0, 16, "Polyphony"); |
|
|
|
|
|
|
|
if (instance_id == 0) |
|
|
|
|
|
|
|
lcd.show(1, 0, 16, "1:[ ] 2:"); |
|
|
|
|
|
|
|
else |
|
|
|
|
|
|
|
lcd.show(1, 0, 16, "1: 2:[ ]"); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
sprintf(poly_value_string, "%2d", configuration.dexed[0].polyphony); |
|
|
|
|
|
|
|
lcd.show(1, 3, 2, poly_value_string); |
|
|
|
|
|
|
|
sprintf(poly_value_string, "%2d", configuration.dexed[1].polyphony); |
|
|
|
|
|
|
|
lcd.show(1, 13, 2, poly_value_string); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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 (configuration.dexed[0].polyphony + configuration.dexed[1].polyphony + 1 <= POLYPHONY_MAX) |
|
|
|
|
|
|
|
configuration.dexed[instance_id].polyphony = constrain(configuration.dexed[instance_id].polyphony + 1, POLYPHONY_MIN, POLYPHONY_MAX); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
else if (LCDML.BT_checkUp()) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
if (configuration.dexed[instance_id].polyphony - 1 < 0) |
|
|
|
|
|
|
|
configuration.dexed[instance_id].polyphony = 0; |
|
|
|
|
|
|
|
else |
|
|
|
|
|
|
|
configuration.dexed[instance_id].polyphony = constrain(configuration.dexed[instance_id].polyphony - 1, POLYPHONY_MIN - 1, POLYPHONY_MAX); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
else if (LCDML.BT_checkEnter()) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
instance_id = !instance_id; |
|
|
|
|
|
|
|
if (instance_id == 0) |
|
|
|
|
|
|
|
lcd.show(1, 0, 16, "1:[ ] 2:"); |
|
|
|
|
|
|
|
else |
|
|
|
|
|
|
|
lcd.show(1, 0, 16, "1: 2:[ ]"); |
|
|
|
|
|
|
|
sprintf(poly_value_string, "%2d", configuration.dexed[0].polyphony); |
|
|
|
|
|
|
|
lcd.show(1, 3, 2, poly_value_string); |
|
|
|
|
|
|
|
sprintf(poly_value_string, "%2d", configuration.dexed[1].polyphony); |
|
|
|
|
|
|
|
lcd.show(1, 13, 2, poly_value_string); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (instance_id == 0) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
sprintf(poly_value_string, "%2d", configuration.dexed[0].polyphony); |
|
|
|
|
|
|
|
lcd.show(1, 3, 2, poly_value_string); |
|
|
|
|
|
|
|
MicroDexed[0]->setMaxNotes(configuration.dexed[0].polyphony); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
else |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
sprintf(poly_value_string, "%2d", configuration.dexed[1].polyphony); |
|
|
|
|
|
|
|
lcd.show(1, 13, 2, poly_value_string); |
|
|
|
|
|
|
|
MicroDexed[1]->setMaxNotes(configuration.dexed[1].polyphony); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (LCDML.FUNC_close()) // ****** STABLE END *********
|
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
encoderDir[ENC_R].reset(); |
|
|
|
|
|
|
|
EEPROM.update(EEPROM_START_ADDRESS + offsetof(configuration_s, dexed[0].polyphony), configuration.dexed[0].polyphony); |
|
|
|
|
|
|
|
EEPROM.update(EEPROM_START_ADDRESS + offsetof(configuration_s, dexed[1].polyphony), configuration.dexed[1].polyphony); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
#endif |
|
|
|
|
|
|
|
|
|
|
|
void UI_func_engine(uint8_t param) |
|
|
|
void UI_func_engine(uint8_t param) |
|
|
|
{ |
|
|
|
{ |
|
|
|