From e9e1efefc87ce4dd942fa7c83794a7b27ec3a13c Mon Sep 17 00:00:00 2001 From: sbahling Date: Sat, 3 Nov 2018 01:09:07 +0100 Subject: Serve as base OSC server for the Tascam Console Unit We remove the Ardour specific OSC mapping and create our own OSC API that will be consumed by OSC translators that communicate to specific applications. We only send the state of each control and set the state of each fader or led based on received commands. Logic for interpreting the control state will be moved to the OSC translator code. --- tascam_fw_console/console.py | 64 +++++++++++--------------------------------- 1 file changed, 16 insertions(+), 48 deletions(-) (limited to 'tascam_fw_console/console.py') diff --git a/tascam_fw_console/console.py b/tascam_fw_console/console.py index ccf64af..3f4841a 100644 --- a/tascam_fw_console/console.py +++ b/tascam_fw_console/console.py @@ -27,7 +27,6 @@ from pathlib import Path from tascam_fw_console.encoder import Encoder from tascam_fw_console.strip import Strip -from tascam_fw_console import osc from tascam_fw_console import fw_1884_buttons import gi @@ -117,33 +116,35 @@ class Console(): self.current_bank = 1 self.more_banks_up = True self.more_banks_down = True - self.strips = self.init_strips() + self.init_strips() self.buttons = {} self.init_buttons() self.init_encoder_mode() self.init_encoders() self.encoders = { - 10: (self.strips[1].handle_encoder, self.strips[2].handle_encoder), - 11: (self.strips[3].handle_encoder, self.strips[4].handle_encoder), - 12: (self.strips[5].handle_encoder, self.strips[6].handle_encoder), - 13: (self.strips[7].handle_encoder, self.strips[8].handle_encoder), - 14: (self.handle_gain, self.handle_freq), - 15: (self.handle_q, self.handle_jog), + 10: (self.strips[1].encoder.update, self.strips[2].encoder.update), + 11: (self.strips[3].encoder.update, self.strips[4].encoder.update), + 12: (self.strips[5].encoder.update, self.strips[6].encoder.update), + 13: (self.strips[7].encoder.update, self.strips[8].encoder.update), + 14: (self.gain_encoder.update, self.freq_encoder.update), + 15: (self.q_encoder.update, self.jogwheel.update), } + self.unit.set_master_fader(False) self.unit.connect('control', self.handle_control) self.status_thread = RunningStatusThread(self) # noqa F841 def init_strips(self): + self.strips = [] for strip_num in range(0, 9): self.strips.append(Strip(self, strip_num)) def init_encoders(self): - self.gain_encoder = Encoder() - self.freq_encoder = Encoder() - self.q_encoder = Encoder() - self.jogwheel = Encoder() + self.gain_encoder = Encoder('EQ Gain', '/eq/gain') + self.freq_encoder = Encoder('EQ Freq', '/eq/freq') + self.q_encoder = Encoder('EQ Q', '/eq/q') + self.jogwheel = Encoder('Jog', '/jogwheel') def init_encoder_mode(self): self.state['encoder_mode'] = 'PAN' @@ -197,33 +198,6 @@ class Console(): else: button.press() - def handle_gain(self, mode, delta): - print('Handle Gain:', mode, delta) - - def handle_freq(self, mode, delta): - print('Handle Freq:', mode, delta) - - def handle_q(self, mode, delta): - print('Handle Q:', mode, delta) - - def handle_jog(self, mode, delta): - print('Handle Jog:', mode, delta) - delta = delta * 0.5 - if self.buttons['ALT'].pressed: - if delta > 0: - osc.client.send_message('/access_action', - 'Editor/temporal-zoom-in') - else: - osc.client.send_message('/access_action', - 'Editor/temporal-zoom-out') - return - - if self.buttons['SHIFT'].pressed: - delta = delta * 0.3 - if self.buttons['CTRL'].pressed: - delta = delta * 0.1 - osc.client.send_message('/jog', delta) - def handle_encoder(self, index, before, after): handler1, handler2 = self.encoders.get(int(index), (None, None)) bval1 = before & 0xffff @@ -234,16 +208,15 @@ class Console(): delta1 = roll_over_delta(aval1 - bval1) delta2 = roll_over_delta(aval2 - bval2) - encoder_mode = self.state.get('encoder_mode', '') if delta1 and handler1: - handler1(encoder_mode, delta1) + handler1(delta1) if delta2 and handler2: - handler2(encoder_mode, delta2) + handler2(delta2) def handle_control(self, unit, index, before, after): - print('{0:02d}: {1:08x} {2:08x}'.format(index, before, after)) + # print('{0:02d}: {1:08x} {2:08x}'.format(index, before, after)) if index in [5, 6, 7, 8, 9]: self.handle_bit_flags(index, before, after) @@ -254,15 +227,12 @@ class Console(): return def strip_fader_handler(self, addr, ssid, pos): - print('fader_handler', addr, ssid, pos) strip = self.strips[int(ssid)] if strip.name == ' ': return - pos = pos * 1023 strip.fader.position = pos def master_fader_handler(self, addr, pos): - print('master_fader_handler', pos) self.strip_fader_handler(addr, 0, pos) def default_handler(self, addr, *args): @@ -368,8 +338,6 @@ class Console(): def roll_over_delta(delta, ceiling=0xffff): - - print(delta) if delta > ceiling - 10: return delta - (ceiling + 1) if delta < -ceiling + 10: -- cgit v1.2.3