From 7d490031c54458644eb459dbb390b10ea8de3334 Mon Sep 17 00:00:00 2001 From: sbahling Date: Fri, 2 Nov 2018 20:49:51 +0100 Subject: Add Encoder class --- tascam_fw_console/console.py | 8 ++++++++ tascam_fw_console/encoder.py | 41 +++++++++++++++++++++++++++++++++++++++++ tascam_fw_console/strip.py | 2 ++ 3 files changed, 51 insertions(+) create mode 100644 tascam_fw_console/encoder.py (limited to 'tascam_fw_console') diff --git a/tascam_fw_console/console.py b/tascam_fw_console/console.py index 21b2ac9..ccf64af 100644 --- a/tascam_fw_console/console.py +++ b/tascam_fw_console/console.py @@ -25,6 +25,7 @@ import time import threading 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 @@ -120,6 +121,7 @@ class Console(): 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), @@ -137,6 +139,12 @@ class Console(): 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() + def init_encoder_mode(self): self.state['encoder_mode'] = 'PAN' for mode in ENCODER_MODES: diff --git a/tascam_fw_console/encoder.py b/tascam_fw_console/encoder.py new file mode 100644 index 0000000..211fef1 --- /dev/null +++ b/tascam_fw_console/encoder.py @@ -0,0 +1,41 @@ +#!/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 +""" + + +class Encoder(): + def __init__(self): + self.name = 'Unknown' + self.update_callbacks = set() + + def update(self, delta): + print('Encoder: ', self.name, delta) + for callback in self.update_callbacks: + try: + callback(delta) + except Exception('Encoder update callback failed') as e: + raise(e) + + def add_callback(self, callback): + self.update_callbacks.add(callback) + + def remove_callback(self, callback): + self.update_callbacks.remove(callback) diff --git a/tascam_fw_console/strip.py b/tascam_fw_console/strip.py index 17d4a7e..fe7ca75 100644 --- a/tascam_fw_console/strip.py +++ b/tascam_fw_console/strip.py @@ -21,6 +21,7 @@ """ from tascam_fw_console.fader import Fader +from tascam_fw_console.encoder import Encoder from tascam_fw_console import osc @@ -38,6 +39,7 @@ class Strip(): self._rec = False self.pan = 0.5 self.trimdb = 0.0 + self.encoder = Encoder() self.fader = Fader(self) self.name = None -- cgit v1.2.3