diff --git a/software/GToE/GToE.ino b/software/GToE/GToE.ino index 75f0c80..2dc89ac 100644 --- a/software/GToE/GToE.ino +++ b/software/GToE/GToE.ino @@ -388,12 +388,19 @@ void checkInputs() { masterClockMode = 0; } } else if (displayTab == 0 && insideTab == 2 && masterClockMode == 0) { //bpm modulation - if (bpmModulationRange < 9) { - bpmModulationRange = bpmModulationRange + change; - } else { - bpmModulationChannel = !bpmModulationChannel; - bpmModulationRange = 1; - } + bpmModulationRange = bpmModulationRange + change; + if (bpmModulationRange == 255 && bpmModulationChannel == 0) { + bpmModulationRange = 0; + } else if (bpmModulationRange == 255 && bpmModulationChannel == 1) { + bpmModulationRange = 9; + bpmModulationChannel = 0; + } else if (bpmModulationRange > 9 && bpmModulationChannel == 0) { + bpmModulationRange = 0; + bpmModulationChannel = 1; + } else if (bpmModulationRange > 9 && bpmModulationChannel == 1) { + bpmModulationRange = 9; + } + } else if (displayTab != 0 && insideTab == 0) { //subdivision channels[displayTab-1].mode = channels[displayTab-1].mode - change; if (channels[displayTab-1].mode == 65535) { //65535 is 0-1 for unsigned vars @@ -413,10 +420,22 @@ void checkInputs() { } } else if (displayTab != 0 && insideTab == 2) { //modulation channels[displayTab-1].modulationRange = channels[displayTab-1].modulationRange + change; - if (channels[displayTab-1].modulationRange > 6 || channels[displayTab-1].modulationRange < -6) { + if (channels[displayTab-1].modulationRange < 0 && channels[displayTab-1].modulationChannel == 0) { + channels[displayTab-1].modulationRange = 0; + } else if (channels[displayTab-1].modulationRange > 6 && channels[displayTab-1].modulationChannel == 0) { + channels[displayTab-1].modulationChannel = 1; + channels[displayTab-1].modulationRange = 0; + } else if (channels[displayTab-1].modulationRange < 0 && channels[displayTab-1].modulationChannel == 1) { + channels[displayTab-1].modulationChannel = 0; + channels[displayTab-1].modulationRange = 6; + } else if (channels[displayTab-1].modulationRange > 6 && channels[displayTab-1].modulationChannel == 1) { + channels[displayTab-1].modulationRange = 6; + } + + /*if (channels[displayTab-1].modulationRange > 6 || channels[displayTab-1].modulationRange < -6) { channels[displayTab-1].modulationChannel = !channels[displayTab-1].modulationChannel; channels[displayTab-1].modulationRange = 0; - } + }*/ } else if (displayTab != 0 && insideTab == 3) { //offset channels[displayTab-1].offset = channels[displayTab-1].offset + change; if (channels[displayTab-1].offset == 65535) { @@ -576,14 +595,14 @@ void updateScreen() { display.setCursor(58,30); display.print(F(" MOD:")); if (channels[displayTab-1].modulationChannel && channels[displayTab-1].modulationRange != 0) { - display.print(F("CV2 ")); + display.print(F("CV2")); if (channels[displayTab-1].modulationRange > 0) { display.print(F("+")); } display.print(channels[displayTab-1].modulationRange); display.print(F(" ")); } else if (!channels[displayTab-1].modulationChannel && channels[displayTab-1].modulationRange != 0) { - display.print(F("CV1 ")); + display.print(F("CV1")); if (channels[displayTab-1].modulationRange > 0) { display.print(F("+")); }