summaryrefslogtreecommitdiff
path: root/console.py
diff options
context:
space:
mode:
authorsbahling <sbahling@mudgum.net>2018-10-22 19:46:42 +0200
committersbahling <sbahling@mudgum.net>2018-10-22 19:46:42 +0200
commit8f5462a5dcd9055b8ff6f9a19dbc2c08b3d645a0 (patch)
tree9617fd9a9662227ad3bfe08cdf769c949a91b1d9 /console.py
parent62746f221d4bfa1844bea1f5157bdf7a55ceaf8b (diff)
downloadtascam-fw-osc-8f5462a5dcd9055b8ff6f9a19dbc2c08b3d645a0.tar.gz
tascam-fw-osc-8f5462a5dcd9055b8ff6f9a19dbc2c08b3d645a0.tar.xz
tascam-fw-osc-8f5462a5dcd9055b8ff6f9a19dbc2c08b3d645a0.zip
Enable encoder handling
Diffstat (limited to 'console.py')
-rw-r--r--console.py29
1 files changed, 29 insertions, 0 deletions
diff --git a/console.py b/console.py
index 8aaef17..7d6650c 100644
--- a/console.py
+++ b/console.py
@@ -138,6 +138,25 @@ class Console():
else:
button.press()
+ def handle_encoder(self, index, before, after):
+ strip1 = (index * 2 - 19)
+ strip2 = (index * 2 - 18)
+ bval1 = before & 0xffff
+ bval2 = before >> 0x10
+ aval1 = after & 0xffff
+ aval2 = after >> 0x10
+
+ delta1 = roll_over_delta(aval1 - bval1)
+ delta2 = roll_over_delta(aval2 - bval2)
+
+ if delta1:
+ if self.state.get('encoder_mode', '') == 'PAN':
+ self.strips[strip1].send_pan(delta1)
+
+ if delta2:
+ if self.state.get('encoder_mode', '') == 'PAN':
+ self.strips[strip2].send_pan(delta2)
+
def handle_control(self, unit, index, before, after):
print('{0:02d}: {1:08x} {2:08x}'.format(index, before, after))
@@ -251,6 +270,16 @@ class Console():
self.more_banks_down = bool(more_down)
+def roll_over_delta(delta, ceiling=0xffff):
+
+ print(delta)
+ if delta > ceiling - 10:
+ return delta - (ceiling + 1)
+ if delta < -ceiling + 10:
+ return delta + (ceiling + 1)
+ return delta
+
+
def _check_hexadecimal(literal):
if literal.find('0x') == 0:
literal = literal[2:]