Skip to content

Commit

Permalink
some support for MK2, code cleanup, skining
Browse files Browse the repository at this point in the history
  • Loading branch information
hdavid committed Dec 31, 2015
1 parent 9f80024 commit 7ac628d
Show file tree
Hide file tree
Showing 20 changed files with 822 additions and 530 deletions.
4 changes: 2 additions & 2 deletions ConfigurableButtonElement.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,10 +7,10 @@ class ConfigurableButtonElement(ButtonElement):

""" Special button class that can be configured with custom on- and off-values """

def __init__(self, is_momentary, msg_type, channel, identifier):
def __init__(self, is_momentary, msg_type, channel, identifier, off_value = 4):
ButtonElement.__init__(self, is_momentary, msg_type, channel, identifier)
self._on_value = 127
self._off_value = 4
self._off_value = off_value
self._is_enabled = True
self._is_notifying = False
self._force_next_value = False
Expand Down
52 changes: 25 additions & 27 deletions DeviceControllerComponent.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,9 @@ class DeviceControllerComponent(DeviceComponent):
__module__ = __name__
__doc__ = ''

def __init__(self, matrix, side_buttons, top_buttons, parent):
self._parent = parent
def __init__(self, matrix, side_buttons, top_buttons, control_surface):
self._control_surface = control_surface
self._skin = self._control_surface._skin
self._matrix = matrix
self._prev_track_button = None
self._next_track_button = None
Expand All @@ -40,7 +41,7 @@ def __init__(self, matrix, side_buttons, top_buttons, parent):
self.set_enabled(False)

for column in range(self._matrix.width()):
slider = DeviceControllerStrip(tuple([self._matrix.get_button(column, (self._matrix.height() - 1 - row)) for row in range(self._matrix.height())]),self)
slider = DeviceControllerStrip(tuple([self._matrix.get_button(column, (self._matrix.height() - 1 - row)) for row in range(self._matrix.height())]),self._control_surface)
self._sliders.append(slider)
self._sliders = tuple(self._sliders)
self.set_parameter_controls(self._sliders)
Expand Down Expand Up @@ -94,7 +95,6 @@ def set_enabled(self, active):
# disable matrix.
for slider in self._sliders:
slider.set_enabled(active)
# ping parent
DeviceComponent.set_enabled(self, active)

def set_osd(self, osd):
Expand Down Expand Up @@ -179,21 +179,20 @@ def update(self):
# update bank buttons colors
if self._device != None:
if(self._prev_bank_button != None):
self._prev_bank_button.set_on_off_values(AMBER_FULL, AMBER_THIRD)
self._prev_bank_button.set_on_off_values(self._skin.AMBER_FULL, self._skin.AMBER_THIRD)
if(self._next_bank_button != None):
self._next_bank_button.set_on_off_values(AMBER_FULL, AMBER_THIRD)
self._next_bank_button.set_on_off_values(self._skin.AMBER_FULL, self._skin.AMBER_THIRD)
else:
self._prev_bank_button.set_on_off_values(LED_OFF, LED_OFF)
self._next_bank_button.set_on_off_values(LED_OFF, LED_OFF)
self._prev_bank_button.set_on_off_values(self._skin.off, self._skin.off)
self._next_bank_button.set_on_off_values(self._skin.off, self._skin.off)

for x in range(self._matrix.width()):
for y in range(self._matrix.height()):
#if self._force:
if(self._device == None):
self._matrix.get_button(x, y).set_on_off_values(LED_OFF, LED_OFF)
self._matrix.get_button(x, y).set_on_off_values(self._skin.off, self._skin.off)
self._matrix.get_button(x, y).turn_off()

# update parent
DeviceComponent.update(self)
for slider in self._sliders:
slider.reset_if_no_parameter()
Expand All @@ -214,9 +213,9 @@ def update_lock_buttons(self):
if self.is_enabled():
for index in range(len(self._locked_devices)):
if self._locked_devices[index] != None:
self._lock_buttons[index].set_on_off_values(RED_FULL, RED_THIRD)
self._lock_buttons[index].set_on_off_values(self._skin.RED_FULL, self._skin.RED_THIRD)
else:
self._lock_buttons[index].set_on_off_values(AMBER_THIRD, AMBER_THIRD)#LED_OFF
self._lock_buttons[index].set_on_off_values(self._skin.AMBER_THIRD, self._skin.AMBER_THIRD) #LED_OFF
if self._locked_device_index==index:
self._lock_buttons[index].turn_on()
else:
Expand Down Expand Up @@ -258,12 +257,12 @@ def _lock_value(self, value, sender):
dev = i
if dev>=0:
if self._device != None:
self._parent._parent.show_message(" '"+self.get_device_track_name(self._device)+" - "+str(self._device.name)+"' is already stored in lock button "+ str(dev+1)+" ! aborting." )
self._control_surface.show_message(" '"+self.get_device_track_name(self._device)+" - "+str(self._device.name)+"' is already stored in lock button "+ str(dev+1)+" ! aborting." )
else:
if self._device!=None:
self._locked_devices[index] = self._device
if self._device != None:
self._parent._parent.show_message(" '"+self.get_device_track_name(self._device)+" - "+str(self._device.name)+"' stored into lock button " + str(index+1))
self._control_surface.show_message(" '"+self.get_device_track_name(self._device)+" - "+str(self._device.name)+"' stored into lock button " + str(index+1))
self._locked_device_index = index
self.update()

Expand All @@ -272,19 +271,19 @@ def _lock_value(self, value, sender):
self._locked_devices[index] = None
self._locked_device_index = None
if self._device != None:
self._parent._parent.show_message("removing '"+self.get_device_track_name(self._locked_devices[index])+" - "+str(self._device.name)+"' from block button "+ str(index+1) )
self._control_surface.show_message("removing '"+self.get_device_track_name(self._locked_devices[index])+" - "+str(self._device.name)+"' from block button "+ str(index+1) )
else:
#use selected device
if self._locked_device_index == index:
if self._locked_devices[index] != None:
if self._locked_devices[index]!= None:
self._parent._parent.show_message("unlocked from ' "+self.get_device_track_name(self._locked_devices[index])+" - "+str(self._locked_devices[index].name)+"' ("+str(index+1)+")")
self._control_surface.show_message("unlocked from ' "+self.get_device_track_name(self._locked_devices[index])+" - "+str(self._locked_devices[index].name)+"' ("+str(index+1)+")")
self._locked_device_index = None
elif self._locked_devices[index] != None:
self._locked_device_index = index
self.set_device(self._locked_devices[index])
if self._locked_devices[index]!= None:
self._parent._parent.show_message("locked to '"+self.get_device_track_name(self._locked_devices[index])+" - "+str(self._locked_devices[index].name)+" (" +str(index+1)+")" )
self._control_surface.show_message("locked to '"+self.get_device_track_name(self._locked_devices[index])+" - "+str(self._locked_devices[index].name)+" (" +str(index+1)+")" )
self.update()
self.update_track_buttons()
self.update_device_buttons()
Expand All @@ -307,13 +306,13 @@ def update_precision_button(self):
if (self._precision_button != None and self.is_enabled()):
if (self._precision_button != None):
if self._device != None:
self._precision_button.set_on_off_values(GREEN_FULL, GREEN_THIRD)
self._precision_button.set_on_off_values(self._skin.GREEN_FULL, self._skin.GREEN_THIRD)
if self._precision_mode:
self._precision_button.turn_on()
else:
self._precision_button.turn_off()
else:
self._precision_button.set_on_off_values(LED_OFF, LED_OFF)
self._precision_button.set_on_off_values(self._skin.off, self._skin.off)
self._precision_button.turn_off()

def _precision_value(self, value, sender):
Expand Down Expand Up @@ -343,13 +342,13 @@ def update_on_off_button(self):
if (self._on_off_button != None):
parameter = self._on_off_parameter()
if parameter != None:
self._on_off_button.set_on_off_values(GREEN_FULL, GREEN_THIRD)
self._on_off_button.set_on_off_values(self._skin.GREEN_FULL, self._skin.GREEN_THIRD)
if parameter.is_enabled and parameter.value > 0:
self._on_off_button.turn_on()
else:
self._on_off_button.turn_off()
else:
self._on_off_button.set_on_off_values(LED_OFF, LED_OFF)
self._on_off_button.set_on_off_values(self._skin.off, self._skin.off)
self._on_off_button.turn_off()

def _on_off_value(self, value):
Expand All @@ -373,14 +372,14 @@ def update_track_buttons(self):
# tracks
if self.is_enabled():
if(self._prev_track_button != None):
self._prev_track_button.set_on_off_values(GREEN_FULL, GREEN_THIRD)
self._prev_track_button.set_on_off_values(self._skin.GREEN_FULL, self._skin.GREEN_THIRD)
if(self.selected_track_idx() > 0 and not self._locked_to_device2):
self._prev_track_button.turn_on()
else:
self._prev_track_button.turn_off()

if(self._next_track_button != None):
self._next_track_button.set_on_off_values(GREEN_FULL, GREEN_THIRD)
self._next_track_button.set_on_off_values(self._skin.GREEN_FULL, self._skin.GREEN_THIRD)
if(self.selected_track_idx() < len(self.song().tracks) - 1 and not self._locked_to_device2):
self._next_track_button.turn_on()
else:
Expand Down Expand Up @@ -410,7 +409,7 @@ def set_prev_track_button(self, button):
if (self._prev_track_button != None):
self._prev_track_button.remove_value_listener(self._prev_track_value)
self._prev_track_button = button
self._prev_track_button.set_on_off_values(GREEN_FULL, GREEN_THIRD)
self._prev_track_button.set_on_off_values(self._skin.GREEN_FULL, self._skin.GREEN_THIRD)
if (self._prev_track_button != None):
assert isinstance(button, ButtonElement)
self._prev_track_button.add_value_listener(self._prev_track_value, identify_sender=True)
Expand All @@ -435,13 +434,13 @@ def selected_track_idx(self):
def update_device_buttons(self):
if self.is_enabled():
if(self._prev_device_button != None):
self._prev_device_button.set_on_off_values(GREEN_FULL, GREEN_THIRD)
self._prev_device_button.set_on_off_values(self._skin.GREEN_FULL, self._skin.GREEN_THIRD)
if(self.selected_device_idx() > 0 and not self._locked_to_device2 and len(self.selected_track().devices) > 0):
self._prev_device_button.turn_on()
else:
self._prev_device_button.turn_off()
if(self._next_device_button != None):
self._next_device_button.set_on_off_values(GREEN_FULL, GREEN_THIRD)
self._next_device_button.set_on_off_values(self._skin.GREEN_FULL, self._skin.GREEN_THIRD)
if(self.selected_device_idx() < len(self.selected_track().devices) - 1 and not self._locked_to_device2 and len(self.selected_track().devices) > 0):
self._next_device_button.turn_on()
else:
Expand Down Expand Up @@ -481,7 +480,6 @@ def _prev_device_value(self, value, sender):
assert (value in range(128))
if self.is_enabled() and self._is_active:
if ((not sender.is_momentary()) or (value is not 0)):
# self._parent._parent.log_message(str(self.selected_track()))
if self.selected_track() != None and len(self.selected_track().devices) > 0:
if(self.selected_device_idx() > 0 and not self._locked_to_device2):
self.song().view.select_device(self.selected_track().devices[self.selected_device_idx() - 1])
Expand Down
34 changes: 18 additions & 16 deletions DeviceControllerStrip.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,12 +19,14 @@
class DeviceControllerStrip(ButtonSliderElement):


def __init__(self, buttons, parent):
def __init__(self, buttons, control_surface):
ButtonSliderElement.__init__(self, buttons)
self._control_surface = control_surface
self._skin = self._control_surface._skin
self._num_buttons = len(buttons)
self._value_map = tuple([float(index) / (self._num_buttons-1) for index in range(self._num_buttons)])
self._precision_mode = False
self._parent = parent

self._enabled = True

def set_enabled(self,enabled):
Expand Down Expand Up @@ -125,51 +127,51 @@ def _update_off(self):
def _update_onoff(self):
v = [0 for index in range(len(self._buttons))]
if self._value==self._max:
v[0]=RED_FULL
v[0]=self._skin.device.toggle_on
else:
v[0]=RED_THIRD
v[0]=self._skin.device.toggle_off
self._update_buttons(tuple(v))

def _update_small_enum(self):
v = [0 for index in range(len(self._buttons))]
for index in range(int(self._range+1)):
if self._value==index+self._min:
v[index]=AMBER_FULL
v[index]=self._skin.device.list_on
else:
v[index]=AMBER_THIRD
v[index]=self._skin.device.list_off
self._update_buttons(tuple(v))

def _update_big_enum(self):
v = [0 for index in range(len(self._buttons))]
if self._value>self._min:
v[3]=AMBER_FULL
v[3]=self._skin.device.list_on
else:
v[3]=AMBER_THIRD
v[3]=self._skin.device.list_off
if self._value<self._max:
v[4]=AMBER_FULL
v[4]=self._skin.device.list_on
else:
v[4]=AMBER_THIRD
v[4]=self._skin.device.list_off
self._update_buttons(tuple(v))

def _update_slider(self):
v = [0 for index in range(len(self._buttons))]
for index in range(len(self._buttons)):
if self._value >=self._value_map[index]*self._range+self._min:
v[index]=GREEN_FULL
v[index]=self._skin.device.slider_on
else:
v[index]=GREEN_THIRD
v[index]=self._skin.device.slider_off
self._update_buttons(tuple(v))

def _update_precision_slider(self):
v = [0 for index in range(len(self._buttons))]
if self._value>self._min:
v[3]=GREEN_FULL
v[3]=self._skin.device.slider_on
else:
v[3]=GREEN_THIRD
v[3]=self._skin.device.slider_off
if self._value<self._max:
v[4]=GREEN_FULL
v[4]=self._skin.device.slider_on
else:
v[4]=GREEN_THIRD
v[4]=self._skin.device.slider_off
self._update_buttons(tuple(v))

def _update_buttons(self, buttons):
Expand Down
Loading

0 comments on commit 7ac628d

Please sign in to comment.