Example #1
0
 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)
Example #2
0
    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()
Example #3
0
 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, *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 = '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)
Example #8
0
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)
Example #9
0
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)