-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathSliderElement.py
57 lines (48 loc) · 2.25 KB
/
SliderElement.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
# Embedded file name: /Users/versonator/Jenkins/live/output/mac_64_static/Release/python-bundle/MIDI Remote Scripts/Launchpad_Pro/SliderElement.py
# Compiled at: 2018-04-23 20:27:04
from __future__ import absolute_import, print_function, unicode_literals
from _Framework.SliderElement import SliderElement as SliderElementBase
from _Framework.Skin import Skin, SkinColorMissingError
from . import consts
FADER_TYPES = (
consts.FADER_TYPE_STANDARD, consts.FADER_TYPE_BIPOLAR)
class SliderElement(SliderElementBase):
def __init__(self, msg_type, channel, identifier, skin=Skin(), *a, **k):
self._skin = skin
self._header = None
self._type = consts.FADER_TYPE_STANDARD
self._color = 0
super(SliderElement, self).__init__(msg_type, channel, identifier, *a, **k)
self.set_needs_takeover(False)
return
def set_index(self, index):
self._header = consts.SYSEX_STANDARD_PREFIX + consts.SYSEX_PARAM_BYTE_FADER_SETUP + (index,)
def set_light_and_type(self, light_value, type_value):
assert type_value in FADER_TYPES
self.set_light(light_value)
self._type = type_value
def set_light(self, value):
self._set_skin_light(value)
def _set_skin_light(self, value):
color = self._skin[value]
self._color = int(color)
def install_connections(self, install_translation_callback, install_mapping_callback, install_forwarding_callback):
super(SliderElement, self).install_connections(install_translation_callback, install_mapping_callback, install_forwarding_callback)
if len(self.resource.owners) > 0:
self._setup_fader()
def _setup_fader(self):
if self._header:
param = self._parameter_to_map_to
if param != None and param.is_enabled:
p_range = param.max - param.min
value = int(round((param.value - param.min) / p_range * 127))
color_value = self._color
else:
value = 0
color_value = 0
msg = self._header + (self._type, color_value, value) + consts.SYSEX_STANDARD_SUFFIX
self._send_midi(msg)
return
def update(self):
if len(self.resource.owners) > 0:
self._setup_fader()