|
|
|
@ -157,7 +157,7 @@ const uint8_t meter_bar[5][8] = { |
|
|
|
|
}; |
|
|
|
|
*/ |
|
|
|
|
|
|
|
|
|
const uint8_t special_chars[16][8] = { |
|
|
|
|
const uint8_t special_chars[17][8] = { |
|
|
|
|
{B11111, B11011, B10011, B11011, B11011, B11011, B11011, B11111}, // [0] 1 small invers
|
|
|
|
|
{B11111, B11011, B10101, B11101, B11011, B10111, B10001, B11111}, // [1] 2 small invers
|
|
|
|
|
{B11111, B11011, B10011, B11011, B11011, B11011, B11011, B11111}, // [2] 1 OP invers
|
|
|
|
@ -174,6 +174,7 @@ const uint8_t special_chars[16][8] = { |
|
|
|
|
{B00000, B00000, B11111, B11111, B11111, B11111, B11111, B11111}, // [13] Level 6
|
|
|
|
|
{B00000, B11111, B11111, B11111, B11111, B11111, B11111, B11111}, // [14] Level 7
|
|
|
|
|
{B11111, B11111, B11111, B11111, B11111, B11111, B11111, B11111}, // [15] Level 8
|
|
|
|
|
{B00100, B00110, B00101, B00101, B01101, B11101, B11100, B11000} // [16] Note
|
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
enum { SCROLLBAR, BLOCKBAR, METERBAR }; |
|
|
|
@ -1111,6 +1112,7 @@ void UI_func_chorus_waveform(uint8_t param) |
|
|
|
|
|
|
|
|
|
if (LCDML.FUNC_close()) // ****** STABLE END *********
|
|
|
|
|
{ |
|
|
|
|
lcd_special_chars(SCROLLBAR); |
|
|
|
|
encoderDir[ENC_R].reset(); |
|
|
|
|
EEPROM.update(EEPROM_START_ADDRESS + offsetof(configuration_s, fx.chorus_waveform[0]), configuration.fx.chorus_waveform[0]); |
|
|
|
|
#if NUM_DEXED > 1 |
|
|
|
@ -2073,9 +2075,17 @@ void UI_func_polyphony(uint8_t param) |
|
|
|
|
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.dexed[selected_instance_id].polyphony = constrain(configuration.dexed[selected_instance_id].polyphony + ENCODER[ENC_R].speed(), POLYPHONY_MIN, POLYPHONY_MAX); |
|
|
|
|
{ |
|
|
|
|
if (configuration.dexed[0].polyphony + configuration.dexed[1].polyphony + 1 <= POLYPHONY_MAX) |
|
|
|
|
configuration.dexed[selected_instance_id].polyphony = constrain(configuration.dexed[selected_instance_id].polyphony + 1, POLYPHONY_MIN, POLYPHONY_MAX); |
|
|
|
|
} |
|
|
|
|
else if (LCDML.BT_checkUp()) |
|
|
|
|
configuration.dexed[selected_instance_id].polyphony = constrain(configuration.dexed[selected_instance_id].polyphony - ENCODER[ENC_R].speed(), POLYPHONY_MIN, POLYPHONY_MAX); |
|
|
|
|
{ |
|
|
|
|
if (configuration.dexed[selected_instance_id].polyphony - 1 < 0) |
|
|
|
|
configuration.dexed[selected_instance_id].polyphony = 0; |
|
|
|
|
else |
|
|
|
|
configuration.dexed[selected_instance_id].polyphony = constrain(configuration.dexed[selected_instance_id].polyphony - 1, POLYPHONY_MIN, POLYPHONY_MAX); |
|
|
|
|
} |
|
|
|
|
#if NUM_DEXED > 1 |
|
|
|
|
else if (LCDML.BT_checkEnter()) |
|
|
|
|
{ |
|
|
|
@ -2228,6 +2238,8 @@ void UI_func_mono_poly(uint8_t param) |
|
|
|
|
|
|
|
|
|
if (LCDML.FUNC_close()) // ****** STABLE END *********
|
|
|
|
|
{ |
|
|
|
|
lcd_special_chars(SCROLLBAR); |
|
|
|
|
|
|
|
|
|
encoderDir[ENC_R].reset(); |
|
|
|
|
EEPROM.update(EEPROM_START_ADDRESS + offsetof(configuration_s, dexed[0].monopoly), configuration.dexed[0].monopoly); |
|
|
|
|
#if NUM_DEXED > 1 |
|
|
|
@ -2291,6 +2303,8 @@ void UI_func_note_refresh(uint8_t param) |
|
|
|
|
|
|
|
|
|
if (LCDML.FUNC_close()) // ****** STABLE END *********
|
|
|
|
|
{ |
|
|
|
|
lcd_special_chars(SCROLLBAR); |
|
|
|
|
|
|
|
|
|
encoderDir[ENC_R].reset(); |
|
|
|
|
EEPROM.update(EEPROM_START_ADDRESS + offsetof(configuration_s, dexed[0].note_refresh), configuration.dexed[0].note_refresh); |
|
|
|
|
#if NUM_DEXED > 1 |
|
|
|
@ -2537,6 +2551,7 @@ void UI_func_mw_assign(uint8_t param) |
|
|
|
|
|
|
|
|
|
if (LCDML.FUNC_close()) // ****** STABLE END *********
|
|
|
|
|
{ |
|
|
|
|
lcd_special_chars(SCROLLBAR); |
|
|
|
|
encoderDir[ENC_R].reset(); |
|
|
|
|
EEPROM.update(EEPROM_START_ADDRESS + offsetof(configuration_s, dexed[0].mw_assign), configuration.dexed[0].mw_assign); |
|
|
|
|
#if NUM_DEXED > 1 |
|
|
|
@ -2604,6 +2619,7 @@ void UI_func_mw_mode(uint8_t param) |
|
|
|
|
|
|
|
|
|
if (LCDML.FUNC_close()) // ****** STABLE END *********
|
|
|
|
|
{ |
|
|
|
|
lcd_special_chars(SCROLLBAR); |
|
|
|
|
encoderDir[ENC_R].reset(); |
|
|
|
|
EEPROM.update(EEPROM_START_ADDRESS + offsetof(configuration_s, dexed[0].mw_mode), configuration.dexed[0].mw_mode); |
|
|
|
|
#if NUM_DEXED > 1 |
|
|
|
@ -2741,6 +2757,7 @@ void UI_func_fc_assign(uint8_t param) |
|
|
|
|
|
|
|
|
|
if (LCDML.FUNC_close()) // ****** STABLE END *********
|
|
|
|
|
{ |
|
|
|
|
lcd_special_chars(SCROLLBAR); |
|
|
|
|
encoderDir[ENC_R].reset(); |
|
|
|
|
EEPROM.update(EEPROM_START_ADDRESS + offsetof(configuration_s, dexed[0].fc_assign), configuration.dexed[0].fc_assign); |
|
|
|
|
#if NUM_DEXED > 1 |
|
|
|
@ -2808,6 +2825,7 @@ void UI_func_fc_mode(uint8_t param) |
|
|
|
|
|
|
|
|
|
if (LCDML.FUNC_close()) // ****** STABLE END *********
|
|
|
|
|
{ |
|
|
|
|
lcd_special_chars(SCROLLBAR); |
|
|
|
|
encoderDir[ENC_R].reset(); |
|
|
|
|
EEPROM.update(EEPROM_START_ADDRESS + offsetof(configuration_s, dexed[0].fc_mode), configuration.dexed[0].fc_mode); |
|
|
|
|
#if NUM_DEXED > 1 |
|
|
|
@ -2944,6 +2962,7 @@ void UI_func_bc_assign(uint8_t param) |
|
|
|
|
|
|
|
|
|
if (LCDML.FUNC_close()) // ****** STABLE END *********
|
|
|
|
|
{ |
|
|
|
|
lcd_special_chars(SCROLLBAR); |
|
|
|
|
encoderDir[ENC_R].reset(); |
|
|
|
|
EEPROM.update(EEPROM_START_ADDRESS + offsetof(configuration_s, dexed[0].bc_assign), configuration.dexed[0].bc_assign); |
|
|
|
|
#if NUM_DEXED > 1 |
|
|
|
@ -3011,6 +3030,7 @@ void UI_func_bc_mode(uint8_t param) |
|
|
|
|
|
|
|
|
|
if (LCDML.FUNC_close()) // ****** STABLE END *********
|
|
|
|
|
{ |
|
|
|
|
lcd_special_chars(SCROLLBAR); |
|
|
|
|
encoderDir[ENC_R].reset(); |
|
|
|
|
EEPROM.update(EEPROM_START_ADDRESS + offsetof(configuration_s, dexed[0].bc_mode), configuration.dexed[0].bc_mode); |
|
|
|
|
#if NUM_DEXED > 1 |
|
|
|
@ -3065,6 +3085,7 @@ void UI_func_at_range(uint8_t param) |
|
|
|
|
|
|
|
|
|
if (LCDML.FUNC_close()) // ****** STABLE END *********
|
|
|
|
|
{ |
|
|
|
|
lcd_special_chars(SCROLLBAR); |
|
|
|
|
lcd_special_chars(SCROLLBAR); |
|
|
|
|
encoderDir[ENC_R].reset(); |
|
|
|
|
EEPROM.update(EEPROM_START_ADDRESS + offsetof(configuration_s, dexed[0].at_range), configuration.dexed[0].at_range); |
|
|
|
@ -3147,6 +3168,7 @@ void UI_func_at_assign(uint8_t param) |
|
|
|
|
|
|
|
|
|
if (LCDML.FUNC_close()) // ****** STABLE END *********
|
|
|
|
|
{ |
|
|
|
|
lcd_special_chars(SCROLLBAR); |
|
|
|
|
encoderDir[ENC_R].reset(); |
|
|
|
|
EEPROM.update(EEPROM_START_ADDRESS + offsetof(configuration_s, dexed[0].at_assign), configuration.dexed[0].at_assign); |
|
|
|
|
#if NUM_DEXED > 1 |
|
|
|
@ -3214,6 +3236,7 @@ void UI_func_at_mode(uint8_t param) |
|
|
|
|
|
|
|
|
|
if (LCDML.FUNC_close()) // ****** STABLE END *********
|
|
|
|
|
{ |
|
|
|
|
lcd_special_chars(SCROLLBAR); |
|
|
|
|
encoderDir[ENC_R].reset(); |
|
|
|
|
EEPROM.update(EEPROM_START_ADDRESS + offsetof(configuration_s, dexed[0].at_mode), configuration.dexed[0].at_mode); |
|
|
|
|
#if NUM_DEXED > 1 |
|
|
|
@ -3283,6 +3306,7 @@ void UI_func_portamento_mode(uint8_t param) |
|
|
|
|
|
|
|
|
|
if (LCDML.FUNC_close()) // ****** STABLE END *********
|
|
|
|
|
{ |
|
|
|
|
lcd_special_chars(SCROLLBAR); |
|
|
|
|
encoderDir[ENC_R].reset(); |
|
|
|
|
EEPROM.update(EEPROM_START_ADDRESS + offsetof(configuration_s, dexed[0].portamento_mode), configuration.dexed[0].portamento_mode); |
|
|
|
|
#if NUM_DEXED > 1 |
|
|
|
@ -3346,6 +3370,7 @@ void UI_func_portamento_glissando(uint8_t param) |
|
|
|
|
|
|
|
|
|
if (LCDML.FUNC_close()) // ****** STABLE END *********
|
|
|
|
|
{ |
|
|
|
|
lcd_special_chars(SCROLLBAR); |
|
|
|
|
encoderDir[ENC_R].reset(); |
|
|
|
|
EEPROM.update(EEPROM_START_ADDRESS + offsetof(configuration_s, dexed[0].portamento_glissando), configuration.dexed[0].portamento_glissando); |
|
|
|
|
#if NUM_DEXED > 1 |
|
|
|
@ -3675,12 +3700,7 @@ void UI_func_voice_select(uint8_t param) |
|
|
|
|
strncpy(bank_name, "*ERROR*", sizeof(bank_name)); |
|
|
|
|
if (!get_voice_by_bank_name(configuration.performance.bank[selected_instance_id], bank_name, configuration.performance.voice[selected_instance_id], voice_name, sizeof(voice_name))) |
|
|
|
|
strncpy(voice_name, "*ERROR*", sizeof(voice_name)); |
|
|
|
|
/*
|
|
|
|
|
lcd.show(0, 0, 2, configuration.performance.bank[selected_instance_id]); |
|
|
|
|
lcd.show(1, 0, 2, configuration.performance.voice[selected_instance_id] + 1); |
|
|
|
|
lcd.show(0, 2, 10, bank_name); |
|
|
|
|
lcd.show(1, 2, 10, voice_name); |
|
|
|
|
*/ |
|
|
|
|
|
|
|
|
|
#if NUM_DEXED > 1 |
|
|
|
|
lcd.setCursor(14, 0); |
|
|
|
|
lcd.write(0); |
|
|
|
@ -3688,23 +3708,9 @@ void UI_func_voice_select(uint8_t param) |
|
|
|
|
lcd.write(1); |
|
|
|
|
#endif |
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
switch (menu_voice_select) |
|
|
|
|
{ |
|
|
|
|
case MENU_VOICE_BANK: |
|
|
|
|
lcd.show(0, 2, 1, "["); |
|
|
|
|
lcd.show(0, 13, 1, "]"); |
|
|
|
|
lcd.show(1, 2, 1, " "); |
|
|
|
|
lcd.show(1, 13, 1, " "); |
|
|
|
|
break; |
|
|
|
|
case MENU_VOICE_SOUND: |
|
|
|
|
lcd.show(0, 2, 2, " "); |
|
|
|
|
lcd.show(0, 13, 1, " "); |
|
|
|
|
lcd.show(1, 2, 2, " ["); |
|
|
|
|
lcd.show(1, 13, 1, "]"); |
|
|
|
|
break; |
|
|
|
|
} |
|
|
|
|
*/ |
|
|
|
|
#ifdef TEENSY3 |
|
|
|
|
lcd.createChar(6, (uint8_t*)special_chars[16]); // MIDI activity note symbol
|
|
|
|
|
#endif |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|