summaryrefslogtreecommitdiff
path: root/tascam_fw_console/strip.py
diff options
context:
space:
mode:
authorsbahling <sbahling@mudgum.net>2018-11-02 20:47:59 +0100
committersbahling <sbahling@mudgum.net>2018-11-02 20:47:59 +0100
commitcbf12b6a6191d38550cd03adbb8eafce5c1bc66c (patch)
tree9511d0fc24fc49cb90c0d0b5a61bea8c900ba75c /tascam_fw_console/strip.py
parent34c035543811f7f1a313a4e86154f715cd71eb64 (diff)
downloadtascam-fw-osc-cbf12b6a6191d38550cd03adbb8eafce5c1bc66c.tar.gz
tascam-fw-osc-cbf12b6a6191d38550cd03adbb8eafce5c1bc66c.tar.xz
tascam-fw-osc-cbf12b6a6191d38550cd03adbb8eafce5c1bc66c.zip
rafactor strips
- move initialization of console strips to console module - rename strips.py to strip.py
Diffstat (limited to 'tascam_fw_console/strip.py')
-rw-r--r--tascam_fw_console/strip.py146
1 files changed, 146 insertions, 0 deletions
diff --git a/tascam_fw_console/strip.py b/tascam_fw_console/strip.py
new file mode 100644
index 0000000..17d4a7e
--- /dev/null
+++ b/tascam_fw_console/strip.py
@@ -0,0 +1,146 @@
+#!/usr/bin/env python3
+"""
+ Open Sound Control send/recieve daemon for Tascam Firewire control surface
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+ :copyright: Copyright (c) 2018 Scott Bahling
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License version 2 as
+ published by the Free Software Foundation.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program (see the file COPYING); if not, write to the
+ Free Software Foundation, Inc.,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
+ :license: GPL-2.0, see COPYING for details
+"""
+
+from tascam_fw_console.fader import Fader
+from tascam_fw_console import osc
+
+
+class Strip():
+
+ def __init__(self, console, num):
+ self.console = console
+ self.num = num
+ self.mute_button = None
+ self._mute = False
+ self.solo_button = None
+ self._solo = False
+ self.select_button = None
+ self._select = False
+ self._rec = False
+ self.pan = 0.5
+ self.trimdb = 0.0
+ self.fader = Fader(self)
+ self.name = None
+
+ self.encoder_handlers = {'PAN': self.send_pan,
+ 'AUX1': self.send_trim,
+ }
+
+ @property
+ def mute_led(self):
+ return self.console.unit.strips[self.num].mute_led
+
+ @property
+ def solo_led(self):
+ return self.console.unit.strips[self.num].solo_led
+
+ @property
+ def sel_led(self):
+ return self.console.unit.strips[self.num].sel_led
+
+ @property
+ def rec_led(self):
+ return self.console.unit.strips[self.num].rec_led
+
+ @property
+ def mute(self):
+ return self._mute
+
+ @mute.setter
+ def mute(self, state):
+ state = bool(state)
+ self._mute = state
+ if state:
+ self.mute_led.turn_on()
+ else:
+ self.mute_led.turn_off()
+
+ @property
+ def solo(self):
+ return self._solo
+
+ @solo.setter
+ def solo(self, state):
+ state = bool(state)
+ self._solo = state
+ if state:
+ self.solo_led.turn_on()
+ else:
+ self.solo_led.turn_off()
+
+ @property
+ def select(self):
+ return self._select
+
+ @select.setter
+ def select(self, state):
+ state = bool(state)
+ self._select = state
+ if state:
+ self.sel_led.turn_on()
+ else:
+ self.sel_led.turn_off()
+
+ @property
+ def rec(self):
+ return self._rec
+
+ @rec.setter
+ def rec(self, state):
+ state = bool(state)
+ self._rec = state
+ if state:
+ self.rec_led.turn_on()
+ else:
+ self.rec_led.turn_off()
+
+ def send_pan(self, delta):
+ addr = '/strip/pan_stereo_position'
+ pan = self.pan + delta * 0.02
+ if pan < 0:
+ pan = 0
+ if pan > 1.0:
+ pan = 1.0
+ osc.client.send_message(addr, (self.num, pan))
+
+ def recv_pan(self, pan):
+ print('Pan: {} {}'.format(self.num, pan))
+ self.pan = pan
+
+ def send_trim(self, delta):
+ addr = '/strip/trimdB'
+ trimdb = self.trimdb + delta * 0.5
+ if trimdb < -20:
+ trimdb = -20
+ if trimdb > 20:
+ trimdb = 20
+ osc.client.send_message(addr, (self.num, trimdb))
+
+ def recv_trim(self, trimdb):
+ print('TrimdB: {} {}'.format(self.num, trimdb))
+ self.trimdb = trimdb
+
+ def handle_encoder(self, mode, delta):
+ self.encoder_handlers.get(mode, self.default_encoder_handler)(delta)
+
+ def default_encoder_handler(self, delta):
+ print(delta)