diff --git a/MicroDexed.ino b/MicroDexed.ino index 6083b1e..7e52945 100644 --- a/MicroDexed.ino +++ b/MicroDexed.ino @@ -816,14 +816,14 @@ void handleSystemExclusive(byte * sysex, uint len) sysex[4] &= 0x7f; sysex[5] &= 0x7f; - uint8_t data_index; + uint8_t data_index = 0; if (((sysex[3] & 0x7c) >> 2) == 0) { MicroDexed[instance_id]->notesOff(); - MicroDexed[instance_id]->data[sysex[4] + ((sysex[3] & 0x03) * 128)] = sysex[5]; // set parameter + for (uint8_t i = 0; i < 128 || sysex[5] != 0xf7; i++) + MicroDexed[instance_id]->data[sysex[4] + ((sysex[3] & 0x03) * 128) + i] = sysex[5]; // set parameter MicroDexed[instance_id]->doRefreshVoice(); - data_index = sysex[4] + ((sysex[3] & 0x03) * 128); } else { @@ -904,13 +904,19 @@ void handleSystemExclusive(byte * sysex, uint len) #ifdef DEBUG Serial.print(F("SysEx")); if (((sysex[3] & 0x7c) >> 2) == 0) - Serial.print(F(" function")); - Serial.print(F(" parameter ")); - Serial.print(sysex[4], DEC); - Serial.print(F(" = ")); - Serial.print(sysex[5], DEC); - Serial.print(F(", data_index = ")); - Serial.println(data_index, DEC); + { + Serial.println(F(" voice:")); + show_patch(instance_id); + } + else + { + Serial.print(F(" function: ")); + Serial.print(sysex[4], DEC); + Serial.print(F(" = ")); + Serial.print(sysex[5], DEC); + Serial.print(F(", data_index = ")); + Serial.println(data_index, DEC); + } #endif } else if (len == 163) diff --git a/UI.hpp b/UI.hpp index b9a5a10..7072007 100644 --- a/UI.hpp +++ b/UI.hpp @@ -2731,10 +2731,16 @@ void UI_func_portamento_mode(uint8_t param) switch (configuration.dexed[instance_id].portamento_mode) { case 0: - lcd.print(F("[RETAIN]")); + if (configuration.dexed[instance_id].monopoly == 1) + lcd.print(F("[RETAIN ]")); + else + lcd.print(F("[FINGERED]")); break; case 1: - lcd.print(F("[FOLLOW]")); + if (configuration.dexed[instance_id].monopoly == 1) + lcd.print(F("[FOLLOW ]")); + else + lcd.print(F("[FULL ]")); break; } }