def __init__(self, name='MonoEncoder', num=0, script=None, mapping_feedback_delay=1, monobridge=None, *a, **k): super(MonoEncoderElement, self).__init__(map_mode=Live.MidiMap.MapMode.absolute, *a, **k) self._mapping_feedback_delay = mapping_feedback_delay self.num = num self.name = name self._parameter = None self._script = script self._is_enabled = True self._paramter_lcd_name = ' ' self._parameter_last_value = None self._mapped_to_midi_velocity = False if not monobridge is None: self._monobridge = monobridge elif hasattr(script, '_monobridge'): self._monobridge = script._monobridge else: self._monobridge = MonoBridgeProxy() self.set_report_values(True, False)
def __init__(self, *a, **k): super(DescriptiveMonoButtonElement, self).__init__(*a, **k) self._descriptor = None self._last_reported_descriptor = None monobridge = k['monobridge'] if 'monobridge' in k else None if not monobridge is None: self._monobridge = monobridge elif hasattr(self._script, 'notification_to_bridge'): self._monobridge = self._script else: self._monobridge = MonoBridgeProxy()
def __init__(self, name='MonoButton', script=None, color_map=None, monobridge=None, *a, **k): super(MonoButtonElement, self).__init__(name=name, *a, **k) self._script = script self._color_map = color_map or [2, 64, 4, 8, 16, 127, 32] self._num_colors = 7 self._num_flash_states = 18 self._flash_state = 0 self._color = 0 self._on_value = 127 self._off_value = 0 self._darkened = 0 self._is_enabled = True #self._force_forwarding = False #self._is_notifying = False self._force_next_value = False self._parameter = None #self._report_input = True if not monobridge is None: self._monobridge = monobridge elif hasattr(script, '_monobridge'): self._monobridge = script._monobridge else: self._monobridge = MonoBridgeProxy()
def __init__(self, name = 'MonoEncoder', num = 0, script = None, mapping_feedback_delay = 1, monobridge = None, *a, **k): super(MonoEncoderElement, self).__init__(map_mode=Live.MidiMap.MapMode.absolute, *a, **k) self._mapping_feedback_delay = mapping_feedback_delay self.num = num self.name = name self._parameter = None self._script = script self._is_enabled = True self._paramter_lcd_name = ' ' self._parameter_last_value = None self._mapped_to_midi_velocity = False if not monobridge is None: self._monobridge = monobridge elif hasattr(script, '_monobridge'): self._monobridge = script._monobridge else: self._monobridge = MonoBridgeProxy() self.set_report_values(True, False)
class DescriptiveMonoButtonElement(MonoButtonElement): def __init__(self, *a, **k): super(DescriptiveMonoButtonElement, self).__init__(*a, **k) self._descriptor = None self._last_reported_descriptor = None monobridge = k['monobridge'] if 'monobridge' in k else None if not monobridge is None: self._monobridge = monobridge elif hasattr(self._script, 'notification_to_bridge'): self._monobridge = self._script else: self._monobridge = MonoBridgeProxy() def set_descriptor(self, descriptor): self._descriptor = '.' + str(descriptor) if descriptor else '' def _set_descriptor(self, descriptor): #debug('_set_descriptor:', descriptor) self.set_descriptor(descriptor) def _get_descriptor(self): #debug('_get_descriptor:', '' if self._descriptor is None else str(self._descriptor)) return '' if self._descriptor is None else str(self._descriptor) descriptor = property(_get_descriptor, _set_descriptor) def report_descriptor(self, descriptor = None, force = False): if force or (descriptor != self._last_reported_descriptor): self._monobridge._send(self.name, 'button_function', str(descriptor) + self.descriptor) self._last_reported_descriptor = descriptor def set_light(self, value, *a, **k): try: self._skin[value] except SkinColorMissingError: pass super(MonoButtonElement, self).set_light(value, *a, **k) self.report_descriptor(value) def turn_on(self, force = False): self.force_next_send() if self._on_value in range(0, 128): self.send_value(self._on_value) self.report_descriptor('on') else: try: color = self._skin[self._on_value] color.draw(self) except SkinColorMissingError: #super(MonoButtonElement, self).turn_on() debug('skin color missing', self._on_value) self.send_value(127) self.report_descriptor(self._on_value) def turn_off(self, force = False): self.force_next_send() #debug('turn off:', self._off_value) if self._off_value in range(0, 128): self.send_value(self._off_value) self.report_descriptor('off') else: try: color = self._skin[self._off_value] color.draw(self) except SkinColorMissingError: #super(MonoButtonElement, self).turn_off() debug('skin color missing', self._off_value) self.send_value(0) self.report_descriptor(self._off_value)
class MonoEncoderElement(EncoderElement): __module__ = __name__ __doc__ = ' Class representing a slider on the controller ' def __init__(self, name = 'MonoEncoder', num = 0, script = None, mapping_feedback_delay = 1, monobridge = None, *a, **k): super(MonoEncoderElement, self).__init__(map_mode=Live.MidiMap.MapMode.absolute, *a, **k) self._mapping_feedback_delay = mapping_feedback_delay self.num = num self.name = name self._parameter = None self._script = script self._is_enabled = True self._paramter_lcd_name = ' ' self._parameter_last_value = None self._mapped_to_midi_velocity = False if not monobridge is None: self._monobridge = monobridge elif hasattr(script, '_monobridge'): self._monobridge = script._monobridge else: self._monobridge = MonoBridgeProxy() self.set_report_values(True, False) def _report_value(self, value, is_input): self._script.touched() def disconnect(self): self.remove_parameter_listener(self._parameter) super(MonoEncoderElement, self).disconnect() def connect_to(self, parameter): if parameter == None: self.release_parameter() else: self._mapped_to_midi_velocity = False assignment = parameter try: if(str(parameter.name) == str('Track Volume')): #checks to see if parameter is track volume if(parameter.canonical_parent.canonical_parent.has_audio_output is False): #checks to see if track has audio output if(len(parameter.canonical_parent.canonical_parent.devices) > 0): if(str(parameter.canonical_parent.canonical_parent.devices[0].class_name)==str('MidiVelocity')): #if not, looks for velicty as first plugin assignment = parameter.canonical_parent.canonical_parent.devices[0].parameters[6] #if found, assigns fader to its 'outhi' parameter self._mapped_to_midi_velocity = True except: assignment = parameter if not self._parameter_to_map_to is assignment: #self.send_value(0, True) #self.send_value(0) pass super(MonoEncoderElement, self).connect_to(assignment) self.add_parameter_listener(self._parameter_to_map_to) if self._parameter_to_map_to is None: self.reset() def set_enabled(self, enabled): self._is_enabled = enabled self._request_rebuild() def set_value(self, value): if(self._parameter_to_map_to != None): newval = float(value * (self._parameter_to_map_to.max - self._parameter_to_map_to.min)) + self._parameter_to_map_to.min self._parameter_to_map_to.value = newval return [value, str(self.mapped_parameter())] else: self.receive_value(int(value*127)) def release_parameter(self): if(self._parameter_to_map_to != None): self.remove_parameter_listener(self._parameter_to_map_to) super(MonoEncoderElement, self).release_parameter() self.send_value(0, True) def script_wants_forwarding(self): if not self._is_enabled: return False else: return super(MonoEncoderElement, self).script_wants_forwarding() def forward_parameter_value(self): if(not (type(self._parameter) is type(None))): #new_value=int(((self._parameter.value - self._parameter.min) / (self._parameter.max - self._parameter.min)) * 127) try: parameter = str(self.mapped_parameter()) except: parameter = ' ' if(parameter!=self._parameter_last_value): #self._parameter_last_value = str(self.mapped_parameter()) try: self._parameter_last_value = str(self.mapped_parameter()) except: self._parameter_last_value = ' ' self._monobridge.notification_to_bridge(self._parameter_lcd_name, self._parameter_last_value, self) def add_parameter_listener(self, parameter): self._parameter = parameter if parameter: if isinstance(parameter, Live.DeviceParameter.DeviceParameter): if str(parameter.original_name) == 'Track Volume' or self._mapped_to_midi_velocity is True: try: self._parameter_lcd_name = str(parameter.canonical_parent.canonical_parent.name) except: self._parameter_lcd_name = ' ' elif str(parameter.original_name) == 'Track Panning': self._parameter_lcd_name = 'Pan' else: try: self._parameter_lcd_name = str(parameter.name) except: self._parameter_lcd_name = ' ' #self._last_value(int(((self._parameter.value - self._parameter.min) / (self._parameter.max - self._parameter.min)) * 127)) #self._parameter_last_value = str(self.mapped_parameter()) try: self._parameter_last_value = str(self.mapped_parameter()) except: self._parameter_last_value = ' ' self._monobridge.notification_to_bridge(self._parameter_lcd_name, self._parameter_last_value, self) cb = lambda: self.forward_parameter_value() parameter.add_value_listener(cb) def remove_parameter_listener(self, parameter): self._parameter = None #self._script.log_message('remove_parameter_listener ' + str(parameter.name + str(self.name))) if parameter: cb = lambda: self.forward_parameter_value() if(parameter.value_has_listener is True): parameter.remove_value_listener(cb) self._parameter_lcd_name = ' ' self._parameter_last_value = ' ' self._monobridge.notification_to_bridge(' ', ' ', self)
class DescriptiveMonoButtonElement(MonoButtonElement): def __init__(self, *a, **k): super(DescriptiveMonoButtonElement, self).__init__(*a, **k) self._descriptor = None self._last_reported_descriptor = None monobridge = k['monobridge'] if 'monobridge' in k else None if not monobridge is None: self._monobridge = monobridge elif hasattr(self._script, 'notification_to_bridge'): self._monobridge = self._script else: self._monobridge = MonoBridgeProxy() def set_descriptor(self, descriptor): self._descriptor = '.' + str(descriptor) if descriptor else '' def _set_descriptor(self, descriptor): #debug('_set_descriptor:', descriptor) self.set_descriptor(descriptor) def _get_descriptor(self): #debug('_get_descriptor:', '' if self._descriptor is None else str(self._descriptor)) return '' if self._descriptor is None else str(self._descriptor) descriptor = property(_get_descriptor, _set_descriptor) def report_descriptor(self, descriptor=None, force=False): if force or (descriptor != self._last_reported_descriptor): self._monobridge._send(self.name, 'button_function', str(descriptor) + self.descriptor) self._last_reported_descriptor = descriptor def set_light(self, value, *a, **k): try: self._skin[value] except SkinColorMissingError: pass super(MonoButtonElement, self).set_light(value, *a, **k) self.report_descriptor(value) def turn_on(self, force=False): self.force_next_send() if self._on_value in range(0, 128): self.send_value(self._on_value) self.report_descriptor('on') else: try: color = self._skin[self._on_value] color.draw(self) except SkinColorMissingError: #super(MonoButtonElement, self).turn_on() debug('skin color missing', self._on_value) self.send_value(127) self.report_descriptor(self._on_value) def turn_off(self, force=False): self.force_next_send() #debug('turn off:', self._off_value) if self._off_value in range(0, 128): self.send_value(self._off_value) self.report_descriptor('off') else: try: color = self._skin[self._off_value] color.draw(self) except SkinColorMissingError: #super(MonoButtonElement, self).turn_off() debug('skin color missing', self._off_value) self.send_value(0) self.report_descriptor(self._off_value)