diff --git a/Software/Gravity/Interactions.ino b/Software/Gravity/Interactions.ino index 3e5b48c..ed6b059 100644 --- a/Software/Gravity/Interactions.ino +++ b/Software/Gravity/Interactions.ino @@ -87,6 +87,7 @@ void checkInputs() { if (encPositionOld != encPosition) { int change = encPositionOld - encPosition; if (displayScreen == 0) { + byte channelCV; if (!insideTab && !shiftBtnPushed) { //Change tab displayTab = displayTab + change; if (displayTab > 100) { //to address "negative" numbers @@ -145,8 +146,7 @@ void checkInputs() { channels[displayTab - 1].seqPattern = 15; } saveState(); - } - else if (insideTab && !shiftBtnPushed && !menuItemSelected) { + } else if (insideTab && !shiftBtnPushed && !menuItemSelected) { menuItem = menuItem + change; if (menuItem > 100) { //for "negative" values menuItem = 0; @@ -214,61 +214,69 @@ void checkInputs() { calculateCycles(); } saveState(); - } else if (insideTab && (menuItemSelected || shiftBtnPushed) && displayTab != 0 && menuItem == 3 && channels[displayTab - 1].mode == 0) { //CV1 for CLK - channels[displayTab - 1].CV1Target = channels[displayTab - 1].CV1Target + change; - if (channels[displayTab - 1].CV1Target > 100) { - channels[displayTab - 1].CV1Target = 0; - } else if (channels[displayTab - 1].CV1Target > 1) { - channels[displayTab - 1].CV1Target = 1; + } else if (insideTab && (menuItemSelected || shiftBtnPushed) && displayTab != 0 && menuItem == 3 && channels[displayTab - 1].mode == 0) { //CV for CLK + if (channels[displayTab - 1].CV1Target == 1 && channels[displayTab - 1].CV2Target == 0) { + channelCV = 1; + } else if (channels[displayTab - 1].CV1Target == 0 && channels[displayTab - 1].CV2Target == 1) { + channelCV = 2; + } else { + channelCV = 0; } - saveState(); - } - else if (insideTab && (menuItemSelected || shiftBtnPushed) && displayTab != 0 && menuItem == 4 && channels[displayTab - 1].mode == 0) { //CV2 for CLK - channels[displayTab - 1].CV2Target = channels[displayTab - 1].CV2Target + change; - if (channels[displayTab - 1].CV2Target > 100) { + channelCV = channelCV + change; + if (channelCV == 0 || channelCV > 100) { + channelCV = 0; + channels[displayTab - 1].CV1Target = 0; channels[displayTab - 1].CV2Target = 0; - } else if (channels[displayTab - 1].CV2Target > 1) { + } else if (channelCV == 1) { + channels[displayTab - 1].CV1Target = 1; + channels[displayTab - 1].CV2Target = 0; + } else if (channelCV >= 2) { + channelCV = 2; + channels[displayTab - 1].CV1Target = 0; channels[displayTab - 1].CV2Target = 1; } saveState(); - } else if (insideTab && (menuItemSelected || shiftBtnPushed) && displayTab != 0 && menuItem == 3 && channels[displayTab - 1].mode == 1) { //CV1 for RND - channels[displayTab - 1].CV1Target = channels[displayTab - 1].CV1Target + change; - if (channels[displayTab - 1].CV1Target > 100) { - channels[displayTab - 1].CV1Target = 0; - } else if (channels[displayTab - 1].CV1Target > 2) { - channels[displayTab - 1].CV1Target = 2; + } else if (insideTab && (menuItemSelected || shiftBtnPushed) && displayTab != 0 && menuItem == 3 && channels[displayTab - 1].mode == 1) { //CV for RND + if (channels[displayTab - 1].CV1Target == 2 && channels[displayTab - 1].CV2Target == 0) { + channelCV = 1; + } else if (channels[displayTab - 1].CV1Target == 0 && channels[displayTab - 1].CV2Target == 2) { + channelCV = 2; + } else { + channelCV = 0; } - saveState(); - } - else if (insideTab && (menuItemSelected || shiftBtnPushed) && displayTab != 0 && menuItem == 4 && channels[displayTab - 1].mode == 1) { //CV2 for RND - channels[displayTab - 1].CV2Target = channels[displayTab - 1].CV2Target + change; - if (channels[displayTab - 1].CV2Target > 100) { + channelCV = channelCV + change; + if (channelCV == 0 || channelCV > 100) { + channelCV = 0; + channels[displayTab - 1].CV1Target = 0; channels[displayTab - 1].CV2Target = 0; - } else if (channels[displayTab - 1].CV2Target > 2) { + } else if (channelCV == 1) { + channels[displayTab - 1].CV1Target = 2; + channels[displayTab - 1].CV2Target = 0; + } else if (channelCV >= 2) { + channelCV = 2; + channels[displayTab - 1].CV1Target = 0; channels[displayTab - 1].CV2Target = 2; } saveState(); } else if (insideTab && (menuItemSelected || shiftBtnPushed) && displayTab != 0 && menuItem == 3 && channels[displayTab - 1].mode == 2) { //CV1 for SEQ - channels[displayTab - 1].CV1Target = channels[displayTab - 1].CV1Target + change; - if (channels[displayTab - 1].CV1Target > 100) { - channels[displayTab - 1].CV1Target = 0; - } else if (channels[displayTab - 1].CV1Target == 1) { //hacky way to limit choices only to 0 and 3, should be a better option - channels[displayTab - 1].CV1Target = 3; - } else if (channels[displayTab - 1].CV1Target == 2) { - channels[displayTab - 1].CV1Target = 0; - } else if (channels[displayTab - 1].CV1Target > 3) { - channels[displayTab - 1].CV1Target = 3; + if (channels[displayTab - 1].CV1Target == 3 && channels[displayTab - 1].CV2Target == 0) { + channelCV = 1; + } else if (channels[displayTab - 1].CV1Target == 0 && channels[displayTab - 1].CV2Target == 3) { + channelCV = 2; + } else { + channelCV = 0; } - saveState(); - } else if (insideTab && (menuItemSelected || shiftBtnPushed) && displayTab != 0 && menuItem == 4 && channels[displayTab - 1].mode == 2) { //CV2 for SEQ - channels[displayTab - 1].CV2Target = channels[displayTab - 1].CV2Target + change; - if (channels[displayTab - 1].CV2Target > 100) { + channelCV = channelCV + change; + if (channelCV == 0 || channelCV > 100) { + channelCV = 0; + channels[displayTab - 1].CV1Target = 0; channels[displayTab - 1].CV2Target = 0; - } else if (channels[displayTab - 1].CV2Target == 1) { //hacky way to limit choices only to 0 and 3, should be a better option - channels[displayTab - 1].CV2Target = 3; - } else if (channels[displayTab - 1].CV2Target == 2) { + } else if (channelCV == 1) { + channels[displayTab - 1].CV1Target = 3; channels[displayTab - 1].CV2Target = 0; - } else if (channels[displayTab - 1].CV2Target > 3) { + } else if (channelCV >= 2) { + channelCV = 2; + channels[displayTab - 1].CV1Target = 0; channels[displayTab - 1].CV2Target = 3; } saveState(); diff --git a/Software/Gravity/UI.ino b/Software/Gravity/UI.ino index a6f78c4..75594fe 100644 --- a/Software/Gravity/UI.ino +++ b/Software/Gravity/UI.ino @@ -133,7 +133,7 @@ void updateScreen() { //Channel Tabs else { //Menu items - lastMenuItem = 4; + lastMenuItem = 3; width = 32; leftOffset = 62; for (byte i = 1; i <= lastMenuItem; i++) { @@ -146,10 +146,8 @@ void updateScreen() { } else if (i == 2 && channels[displayTab - 1].mode == 2) { valueStr = "EDIT PATTERN"; } else if (i == 3) { - valueStr = "CV1:"; - } else if (i == 4) { - valueStr = "CV2:"; - } + valueStr = "MOD:"; + } valueStr.toCharArray(valueChar, 16); if (menuItem == i && insideTab) { u8g2.drawButtonUTF8(leftOffset, 8 + (i-1) *11, U8G2_BTN_BW1|U8G2_BTN_INV, width, 1, 2, valueChar ); @@ -173,22 +171,12 @@ void updateScreen() { valueStr = "/" + String(subDivs[channels[displayTab - 1].subDiv]); } else if (i == 2 && channels[displayTab - 1].mode == 1 && subDivs[channels[displayTab - 1].subDiv] < 0) { valueStr = "x" + String(abs(subDivs[channels[displayTab - 1].subDiv])); - } else if (i == 3 && channels[displayTab - 1].CV1Target == 0) { //CV1 + } else if (i == 3 && channels[displayTab - 1].CV1Target == 0 && channels[displayTab - 1].CV2Target == 0) { //MOD valueStr = "OFF"; - } else if (i == 3 && channels[displayTab - 1].CV1Target == 1) { - valueStr = "SUBDIV"; - } else if (i == 3 && channels[displayTab - 1].CV1Target == 2) { - valueStr = "RAND"; - } else if (i == 3 && channels[displayTab - 1].CV1Target == 3) { - valueStr = "PATT"; - } else if (i == 4 && channels[displayTab - 1].CV2Target == 0) { //CV2 - valueStr = "OFF"; - } else if (i == 4 && channels[displayTab - 1].CV2Target == 1) { - valueStr = "SUBDIV"; - } else if (i == 4 && channels[displayTab - 1].CV2Target == 2) { - valueStr = "RAND"; - } else if (i == 4 && channels[displayTab - 1].CV2Target == 3) { - valueStr = "PATT"; + } else if (i == 3 && channels[displayTab - 1].CV1Target != 0 && channels[displayTab - 1].CV2Target == 0) { + valueStr = "CV1"; + } else if (i == 3 && channels[displayTab - 1].CV1Target == 0 && channels[displayTab - 1].CV2Target != 0) { + valueStr = "CV2"; } valueStr.toCharArray(valueChar, 16);