Simplified CV modulation menu (needs testing)

This commit is contained in:
2023-08-22 23:15:36 +03:00
parent e51337abf2
commit 4c9a4e966f
2 changed files with 59 additions and 63 deletions

View File

@ -87,6 +87,7 @@ void checkInputs() {
if (encPositionOld != encPosition) { if (encPositionOld != encPosition) {
int change = encPositionOld - encPosition; int change = encPositionOld - encPosition;
if (displayScreen == 0) { if (displayScreen == 0) {
byte channelCV;
if (!insideTab && !shiftBtnPushed) { //Change tab if (!insideTab && !shiftBtnPushed) { //Change tab
displayTab = displayTab + change; displayTab = displayTab + change;
if (displayTab > 100) { //to address "negative" numbers if (displayTab > 100) { //to address "negative" numbers
@ -145,8 +146,7 @@ void checkInputs() {
channels[displayTab - 1].seqPattern = 15; channels[displayTab - 1].seqPattern = 15;
} }
saveState(); saveState();
} } else if (insideTab && !shiftBtnPushed && !menuItemSelected) {
else if (insideTab && !shiftBtnPushed && !menuItemSelected) {
menuItem = menuItem + change; menuItem = menuItem + change;
if (menuItem > 100) { //for "negative" values if (menuItem > 100) { //for "negative" values
menuItem = 0; menuItem = 0;
@ -214,61 +214,69 @@ void checkInputs() {
calculateCycles(); calculateCycles();
} }
saveState(); saveState();
} else if (insideTab && (menuItemSelected || shiftBtnPushed) && displayTab != 0 && menuItem == 3 && channels[displayTab - 1].mode == 0) { //CV1 for CLK } else if (insideTab && (menuItemSelected || shiftBtnPushed) && displayTab != 0 && menuItem == 3 && channels[displayTab - 1].mode == 0) { //CV for CLK
channels[displayTab - 1].CV1Target = channels[displayTab - 1].CV1Target + change; if (channels[displayTab - 1].CV1Target == 1 && channels[displayTab - 1].CV2Target == 0) {
if (channels[displayTab - 1].CV1Target > 100) { channelCV = 1;
} else if (channels[displayTab - 1].CV1Target == 0 && channels[displayTab - 1].CV2Target == 1) {
channelCV = 2;
} else {
channelCV = 0;
}
channelCV = channelCV + change;
if (channelCV == 0 || channelCV > 100) {
channelCV = 0;
channels[displayTab - 1].CV1Target = 0; channels[displayTab - 1].CV1Target = 0;
} else if (channels[displayTab - 1].CV1Target > 1) {
channels[displayTab - 1].CV1Target = 1;
}
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) {
channels[displayTab - 1].CV2Target = 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; channels[displayTab - 1].CV2Target = 1;
} }
saveState(); saveState();
} else if (insideTab && (menuItemSelected || shiftBtnPushed) && displayTab != 0 && menuItem == 3 && channels[displayTab - 1].mode == 1) { //CV1 for RND } else if (insideTab && (menuItemSelected || shiftBtnPushed) && displayTab != 0 && menuItem == 3 && channels[displayTab - 1].mode == 1) { //CV for RND
channels[displayTab - 1].CV1Target = channels[displayTab - 1].CV1Target + change; if (channels[displayTab - 1].CV1Target == 2 && channels[displayTab - 1].CV2Target == 0) {
if (channels[displayTab - 1].CV1Target > 100) { channelCV = 1;
} else if (channels[displayTab - 1].CV1Target == 0 && channels[displayTab - 1].CV2Target == 2) {
channelCV = 2;
} else {
channelCV = 0;
}
channelCV = channelCV + change;
if (channelCV == 0 || channelCV > 100) {
channelCV = 0;
channels[displayTab - 1].CV1Target = 0; channels[displayTab - 1].CV1Target = 0;
} else if (channels[displayTab - 1].CV1Target > 2) {
channels[displayTab - 1].CV1Target = 2;
}
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) {
channels[displayTab - 1].CV2Target = 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; channels[displayTab - 1].CV2Target = 2;
} }
saveState(); saveState();
} else if (insideTab && (menuItemSelected || shiftBtnPushed) && displayTab != 0 && menuItem == 3 && channels[displayTab - 1].mode == 2) { //CV1 for SEQ } 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 == 3 && channels[displayTab - 1].CV2Target == 0) {
if (channels[displayTab - 1].CV1Target > 100) { channelCV = 1;
channels[displayTab - 1].CV1Target = 0; } else if (channels[displayTab - 1].CV1Target == 0 && channels[displayTab - 1].CV2Target == 3) {
} else if (channels[displayTab - 1].CV1Target == 1) { //hacky way to limit choices only to 0 and 3, should be a better option channelCV = 2;
channels[displayTab - 1].CV1Target = 3; } else {
} else if (channels[displayTab - 1].CV1Target == 2) { channelCV = 0;
channels[displayTab - 1].CV1Target = 0;
} else if (channels[displayTab - 1].CV1Target > 3) {
channels[displayTab - 1].CV1Target = 3;
} }
saveState(); channelCV = channelCV + change;
} else if (insideTab && (menuItemSelected || shiftBtnPushed) && displayTab != 0 && menuItem == 4 && channels[displayTab - 1].mode == 2) { //CV2 for SEQ if (channelCV == 0 || channelCV > 100) {
channels[displayTab - 1].CV2Target = channels[displayTab - 1].CV2Target + change; channelCV = 0;
if (channels[displayTab - 1].CV2Target > 100) { channels[displayTab - 1].CV1Target = 0;
channels[displayTab - 1].CV2Target = 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 } else if (channelCV == 1) {
channels[displayTab - 1].CV2Target = 3; channels[displayTab - 1].CV1Target = 3;
} else if (channels[displayTab - 1].CV2Target == 2) {
channels[displayTab - 1].CV2Target = 0; 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; channels[displayTab - 1].CV2Target = 3;
} }
saveState(); saveState();

View File

@ -133,7 +133,7 @@ void updateScreen() {
//Channel Tabs //Channel Tabs
else { else {
//Menu items //Menu items
lastMenuItem = 4; lastMenuItem = 3;
width = 32; width = 32;
leftOffset = 62; leftOffset = 62;
for (byte i = 1; i <= lastMenuItem; i++) { for (byte i = 1; i <= lastMenuItem; i++) {
@ -146,9 +146,7 @@ void updateScreen() {
} else if (i == 2 && channels[displayTab - 1].mode == 2) { } else if (i == 2 && channels[displayTab - 1].mode == 2) {
valueStr = "EDIT PATTERN"; valueStr = "EDIT PATTERN";
} else if (i == 3) { } else if (i == 3) {
valueStr = "CV1:"; valueStr = "MOD:";
} else if (i == 4) {
valueStr = "CV2:";
} }
valueStr.toCharArray(valueChar, 16); valueStr.toCharArray(valueChar, 16);
if (menuItem == i && insideTab) { if (menuItem == i && insideTab) {
@ -173,22 +171,12 @@ void updateScreen() {
valueStr = "/" + String(subDivs[channels[displayTab - 1].subDiv]); valueStr = "/" + String(subDivs[channels[displayTab - 1].subDiv]);
} else if (i == 2 && channels[displayTab - 1].mode == 1 && subDivs[channels[displayTab - 1].subDiv] < 0) { } else if (i == 2 && channels[displayTab - 1].mode == 1 && subDivs[channels[displayTab - 1].subDiv] < 0) {
valueStr = "x" + String(abs(subDivs[channels[displayTab - 1].subDiv])); 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"; valueStr = "OFF";
} else if (i == 3 && channels[displayTab - 1].CV1Target == 1) { } else if (i == 3 && channels[displayTab - 1].CV1Target != 0 && channels[displayTab - 1].CV2Target == 0) {
valueStr = "SUBDIV"; valueStr = "CV1";
} else if (i == 3 && channels[displayTab - 1].CV1Target == 2) { } else if (i == 3 && channels[displayTab - 1].CV1Target == 0 && channels[displayTab - 1].CV2Target != 0) {
valueStr = "RAND"; valueStr = "CV2";
} 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";
} }
valueStr.toCharArray(valueChar, 16); valueStr.toCharArray(valueChar, 16);