diff --git a/Software/Gravity/Gravity.ino b/Software/Gravity/Gravity.ino index b388829..c1bb31d 100644 --- a/Software/Gravity/Gravity.ino +++ b/Software/Gravity/Gravity.ino @@ -134,6 +134,7 @@ int CV1Input = 0; int CV2Input = 0; int encPositionOld = 0; +int encDirectionOld = 0; unsigned long encPressedTime; unsigned long encReleasedTime; unsigned long playPressedTime; diff --git a/Software/Gravity/Interactions.ino b/Software/Gravity/Interactions.ino index bb5b59d..e7a0334 100644 --- a/Software/Gravity/Interactions.ino +++ b/Software/Gravity/Interactions.ino @@ -85,8 +85,16 @@ void checkInputs() { //encoder encoder.tick(); int encPosition = encoder.getPosition(); + int encDirection = (int)(encoder.getDirection()); if (encPositionOld != encPosition) { int change = encPositionOld - encPosition; + unsigned long ms = encoder.getMillisBetweenRotations(); + if (encDirectionOld == encDirection && ms < 50) { //encoder acceleration + change = change * 5; + } else if (encDirectionOld != encDirection && ms < 150) { //filter out encoder "jumps" + change = 0; + } + encDirectionOld = encDirection; if (displayScreen == 0) { byte channelCV; if (!insideTab && !shiftBtnPushed) { //Change tab