def __init__(self, msg_type, channel, identifier, map_mode, name, num, script, mapping_feedback_delay=1, monobridge=None, *a, **k): super(MonoEncoderElement, self).__init__(msg_type, channel, identifier, map_mode=Live.MidiMap.MapMode.absolute, *a, **k) self._mapping_feedback_delay = mapping_feedback_delay self.name = name self.num = num 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, 'notification_to_bridge'): self._monobridge = script 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, msg_type, channel, identifier, map_mode, name, num, script, mapping_feedback_delay=1, monobridge=None, *a, **k ): super(MonoEncoderElement, self).__init__( msg_type, channel, identifier, map_mode=Live.MidiMap.MapMode.absolute, *a, **k ) self._mapping_feedback_delay = mapping_feedback_delay self.name = name self.num = num 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, "notification_to_bridge"): self._monobridge = script 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, msg_type, channel, identifier, map_mode, name, num, script, mapping_feedback_delay=1, monobridge=None, *a, **k): super(MonoEncoderElement, self).__init__(msg_type, channel, identifier, map_mode=Live.MidiMap.MapMode.absolute, *a, **k) self._mapping_feedback_delay = mapping_feedback_delay self.name = name self.num = num 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, 'notification_to_bridge'): self._monobridge = script 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) super(MonoEncoderElement, self).connect_to(assignment) self.add_parameter_listener(self._parameter_to_map_to) 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() 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)
class MonoEncoderElement(EncoderElement): __module__ = __name__ __doc__ = " Class representing a slider on the controller " def __init__( self, msg_type, channel, identifier, map_mode, name, num, script, mapping_feedback_delay=1, monobridge=None, *a, **k ): super(MonoEncoderElement, self).__init__( msg_type, channel, identifier, map_mode=Live.MidiMap.MapMode.absolute, *a, **k ) self._mapping_feedback_delay = mapping_feedback_delay self.name = name self.num = num 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, "notification_to_bridge"): self._monobridge = script 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) super(MonoEncoderElement, self).connect_to(assignment) self.add_parameter_listener(self._parameter_to_map_to) 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() 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)