Package _Framework :: Module TrackFilterComponent
[hide private]
[frames] | no frames]

Source Code for Module _Framework.TrackFilterComponent

 1  #Embedded file name: /Users/versonator/Hudson/live/Projects/AppLive/Resources/MIDI Remote Scripts/_Framework/TrackFilterComponent.py 
 2  import Live 
 3  from ControlSurfaceComponent import ControlSurfaceComponent 
 4  from EncoderElement import EncoderElement 
 5  from _Generic.Devices import get_parameter_by_name 
 6  FILTER_DEVICES = {'AutoFilter': {'Frequency': 'Frequency', 
 7                  'Resonance': 'Resonance'}, 
 8   'Operator': {'Frequency': 'Filter Freq', 
 9                'Resonance': 'Filter Res'}, 
10   'OriginalSimpler': {'Frequency': 'Filter Freq', 
11                       'Resonance': 'Filter Res'}, 
12   'MultiSampler': {'Frequency': 'Filter Freq', 
13                    'Resonance': 'Filter Res'}, 
14   'UltraAnalog': {'Frequency': 'F1 Freq', 
15                   'Resonance': 'F1 Resonance'}, 
16   'StringStudio': {'Frequency': 'Filter Freq', 
17                    'Resonance': 'Filter Reso'}} 
18   
19 -class TrackFilterComponent(ControlSurfaceComponent):
20 """ Class representing a track's filter, attaches to the last filter in the track """ 21
22 - def __init__(self):
23 ControlSurfaceComponent.__init__(self) 24 self._track = None 25 self._device = None 26 self._freq_control = None 27 self._reso_control = None
28
29 - def disconnect(self):
30 if self._freq_control != None: 31 self._freq_control.release_parameter() 32 self._freq_control = None 33 if self._reso_control != None: 34 self._reso_control.release_parameter() 35 self._reso_control = None 36 if self._track != None: 37 self._track.remove_devices_listener(self._on_devices_changed) 38 self._track = None 39 self._device = None
40
41 - def on_enabled_changed(self):
42 self.update()
43
44 - def set_track(self, track):
45 if not (track == None or isinstance(track, Live.Track.Track)): 46 raise AssertionError 47 if self._track != None: 48 self._track.remove_devices_listener(self._on_devices_changed) 49 if self._device != None: 50 if self._freq_control != None: 51 self._freq_control.release_parameter() 52 if self._reso_control != None: 53 self._reso_control.release_parameter() 54 self._track = track 55 self._track != None and self._track.add_devices_listener(self._on_devices_changed) 56 self._on_devices_changed()
57
58 - def set_filter_controls(self, freq, reso):
59 if not isinstance(freq, EncoderElement): 60 raise AssertionError 61 if not isinstance(freq, EncoderElement): 62 raise AssertionError 63 if self._device != None: 64 self._freq_control != None and self._freq_control.release_parameter() 65 self._reso_control != None and self._reso_control.release_parameter() 66 self._freq_control = freq 67 self._reso_control = reso 68 self.update()
69
70 - def update(self):
71 if self.is_enabled() and self._device != None: 72 device_dict = FILTER_DEVICES[self._device.class_name] 73 if self._freq_control != None: 74 self._freq_control.release_parameter() 75 parameter = get_parameter_by_name(self._device, device_dict['Frequency']) 76 if parameter != None: 77 self._freq_control.connect_to(parameter) 78 if self._reso_control != None: 79 self._reso_control.release_parameter() 80 parameter = get_parameter_by_name(self._device, device_dict['Resonance']) 81 if parameter != None: 82 self._reso_control.connect_to(parameter)
83
84 - def _on_devices_changed(self):
85 self._device = None 86 if self._track != None: 87 for index in range(len(self._track.devices)): 88 device = self._track.devices[-1 * (index + 1)] 89 if device.class_name in FILTER_DEVICES.keys(): 90 self._device = device 91 break 92 93 self.update()
94