From ebd500594264a4fede30d5af0ad4c1a3438eb36c Mon Sep 17 00:00:00 2001 From: Oleksiy Date: Sun, 6 Aug 2023 23:27:12 +0300 Subject: [PATCH] some progress on menu --- Software/Gravity/Interactions.ino | 37 +++++++++++++++++++++++-------- 1 file changed, 28 insertions(+), 9 deletions(-) diff --git a/Software/Gravity/Interactions.ino b/Software/Gravity/Interactions.ino index 0d87220..58918be 100644 --- a/Software/Gravity/Interactions.ino +++ b/Software/Gravity/Interactions.ino @@ -47,6 +47,8 @@ void checkInputs() { } displayScreen = 1; isRecording = 0; + } else if (insideTab && displayScreen == 0) { + menuItemSelected = !menuItemSelected; } else if (displayScreen == 1 && !isRecording) { isPlaying = 1; isRecording = 1; @@ -62,7 +64,6 @@ void checkInputs() { EEPROM.put(1023, memCode - 1); reboot(); } - updateScreen(); } else if (encReleasedTime - encPressedTime < 2000) { // longer press (<2s) is for navigating back. longer than 2s presses are ignored if (displayScreen != 0) { displayScreen = 0; @@ -71,11 +72,10 @@ void checkInputs() { menuItem = 0; isRecording = 0; } - updateScreen(); } else if (encReleasedTime - encPressedTime > 2000 && shiftBtnPushed) { //2s+ combo with shift to open the settings displayScreen = 2; - updateScreen(); } + updateScreen(); } //encoder @@ -91,7 +91,10 @@ void checkInputs() { } else if (displayTab > 6) { displayTab = 6; } - } else if (!insideTab && shiftBtnPushed && displayTab == 0 && masterClockMode == 0) { //Change BPM + } else if (((!insideTab && shiftBtnPushed) + || (insideTab && menuItem == 0 + && (menuItemSelected || shiftBtnPushed))) + && displayTab == 0 && masterClockMode == 0) { //Change BPM bpm = bpm + change; if (bpm > MAXBPM) { bpm = MAXBPM; @@ -100,7 +103,11 @@ void checkInputs() { } saveState(); calculateBPMTiming(); - } else if (!insideTab && shiftBtnPushed && displayTab != 0 && channels[displayTab - 1].mode == 0) { //Change Subdiv + } else if (((!insideTab && shiftBtnPushed) + || (insideTab && menuItem == 0 + && (menuItemSelected || shiftBtnPushed))) + && displayTab != 0 + && channels[displayTab - 1].mode == 0) { //Change Subdiv channels[displayTab - 1].subDiv = channels[displayTab - 1].subDiv - change; if (channels[displayTab - 1].subDiv > 100) { channels[displayTab - 1].subDiv = 0; @@ -111,7 +118,11 @@ void checkInputs() { calculateCycles(); } saveState(); - } else if (!insideTab && shiftBtnPushed && displayTab != 0 && channels[displayTab - 1].mode == 1) { //Change Random + } else if (((!insideTab && shiftBtnPushed) + || (insideTab && menuItem == 0 + && (menuItemSelected || shiftBtnPushed))) + && displayTab != 0 + && channels[displayTab - 1].mode == 1) { //Change Random channels[displayTab - 1].random = channels[displayTab - 1].random + change; if (channels[displayTab - 1].random > 100) { channels[displayTab - 1].random = 0; @@ -119,7 +130,11 @@ void checkInputs() { channels[displayTab - 1].random = 9; } saveState(); - } else if (!insideTab && shiftBtnPushed && displayTab != 0 && channels[displayTab - 1].mode == 2) { //Change SEQ pattern + } else if (((!insideTab && shiftBtnPushed) + || (insideTab && menuItem == 0 + && (menuItemSelected || shiftBtnPushed))) + && displayTab != 0 + && channels[displayTab - 1].mode == 2) { //Change SEQ pattern channels[displayTab - 1].seqPattern = channels[displayTab - 1].seqPattern + change; if (channels[displayTab - 1].seqPattern > 100) { channels[displayTab - 1].seqPattern = 0; @@ -128,14 +143,18 @@ void checkInputs() { } saveState(); } - else if (insideTab && !shiftBtnPushed) { + else if (insideTab && !shiftBtnPushed && !menuItemSelected) { menuItem = menuItem + change; if (menuItem > 100) { //for "negative" values menuItem = 0; } else if (menuItem > lastMenuItem) { menuItem = lastMenuItem; } - } else if (insideTab && shiftBtnPushed && displayTab == 0 && menuItem == 1) { //Master Clock Mode + } else if (insideTab + && shiftBtnPushed + && displayTab == 0 + && ((menuItem == 0 && masterClockMode == 1) //I hate this part, it needs to be reworked + || (menuItem == 1 && masterClockMode == 0))) { //Master Clock Mode masterClockMode = masterClockMode + change; if (masterClockMode > 100) { masterClockMode = 0;