def __init__(self, *a, **k):
     super(UtilityDeviceDecorator, self).__init__(*a, **k)
     self.__on_parameters_changed.subject = self._live_object
     self.mono_option = DeviceOnOffOption(
         name='Mono', property_host=get_parameter_by_name(self, 'Mono'))
     self.bass_mono_option = DeviceOnOffOption(
         name='Bass Mono',
         property_host=get_parameter_by_name(self, 'Bass Mono'))
     self.dc_filter_option = DeviceOnOffOption(
         name='DC Filter',
         property_host=get_parameter_by_name(self, 'DC Filter'))
     self.register_disconnectables(self.options)
 def __init__(self, *a, **k):
     super(SamplerDeviceDecorator, self).__init__(*a, **k)
     self.__on_parameters_changed.subject = self._live_object
     self.filter_slope_option = DeviceSwitchOption(
         name='Filter Slope',
         parameter=get_parameter_by_name(self, 'Filter Slope'))
     self.register_disconnectables(self.options)
Exemplo n.º 3
0
    def _adjustment_view_data(self):
        is_linked = bool(get_parameter_by_name(self.device(), 'Link').value)
        adjusting_tunnel_left = adjusting_tunnel_right = False
        adjusting_filter_hp = adjusting_filter_lp = False
        adjusting_lfo = adjusting_lfo_phase = False
        touched_parameters = [ self.parameters[button.index] for button in self.parameter_touch_buttons if button.is_pressed
                             ]
        for parameter in touched_parameters:
            if parameter.name == 'Feedback':
                adjusting_tunnel_left = adjusting_tunnel_right = True
            elif parameter.name.startswith('L '):
                adjusting_tunnel_left = True
                if parameter.name != 'L Offset' and is_linked:
                    adjusting_tunnel_right = True
            elif parameter.name == 'R Offset' or parameter.name.startswith('R ') and not is_linked:
                adjusting_tunnel_right = True
            elif parameter.name in (u'HP Freq', u'HP Res'):
                adjusting_filter_hp = True
            elif parameter.name in (u'LP Freq', u'LP Res'):
                adjusting_filter_lp = True
            elif parameter.name == 'Mod Phase':
                adjusting_lfo_phase = True
            elif parameter.name.startswith('Mod '):
                adjusting_lfo = True

        return {'AdjustingTunnelLeft': adjusting_tunnel_left,
           'AdjustingTunnelRight': adjusting_tunnel_right,
           'AdjustingFilterHighPass': adjusting_filter_hp,
           'AdjustingFilterLowPass': adjusting_filter_lp,
           'AdjustingLfo': adjusting_lfo,
           'AdjustingLfoPhase': adjusting_lfo_phase
           }
Exemplo n.º 4
0
 def _resolve_ambiguous_modulation_target_name(self, target_parameter_name):
     if re.match('^Osc (1|2) Transp$', target_parameter_name):
         return target_parameter_name.replace('Transp', 'Pitch')
     lfo_rate_re = re.match('^LFO (1|2) S\\. Rate$', target_parameter_name)
     if lfo_rate_re:
         lfo_number = lfo_rate_re.group(1)
         lfo_sync_param = get_parameter_by_name(self, ('LFO {} Sync').format(lfo_number))
         if lfo_sync_param.value == 0:
             return ('LFO {} Rate').format(lfo_number)
     return target_parameter_name
Exemplo n.º 5
0
 def __init__(self, *a, **k):
     super(OperatorDeviceDecorator, self).__init__(*a, **k)
     self._osc_types_provider = NotifyingList(available_values=[
      'A', 'B', 'C', 'D'], default_value=OscillatorType.a)
     self._env_feature_provider = NotifyingList(available_values=[
      'Time', 'Level'], default_value=EnvelopeFeature.time)
     self._sloped_env_feature_provider = NotifyingList(available_values=[
      'Time', 'Slope', 'Level'], default_value=SlopedEnvelopeFeature.time)
     self.__on_parameters_changed.subject = self._live_object
     self.oscillator = EnumWrappingParameter(name='Oscillator', parent=self, values_host=self._osc_types_provider, index_property_host=self._osc_types_provider, values_property='available_values', index_property='index', value_type=OscillatorType)
     self.env_feature = EnumWrappingParameter(name='Envelope Feature Time/Level', parent=self, values_host=self._env_feature_provider, index_property_host=self._env_feature_provider, values_property='available_values', index_property='index', value_type=EnvelopeFeature)
     self.sloped_env_feature = EnumWrappingParameter(name='Envelope Feature Time/Slope/Level', parent=self, values_host=self._sloped_env_feature_provider, index_property_host=self._sloped_env_feature_provider, values_property='available_values', index_property='index', value_type=SlopedEnvelopeFeature)
     self.__on_oscillator_switch_value_changed.subject = self.oscillator
     self.filter_slope_option = DeviceSwitchOption(name='Filter Slope', parameter=get_parameter_by_name(self, 'Filter Slope'))
     self.register_disconnectables(self.options)
    def __init__(self, *a, **k):
        super(CompressorDeviceDecorator, self).__init__(*a, **k)
        for event, func in (('input_routing_type',
                             self.notify_input_routing_type_index),
                            ('input_routing_channel',
                             self.notify_input_routing_channel_index)):
            self.register_slot(event_name=event,
                               subject=self._live_object,
                               listener=func)

        make_option = lambda option_name, parameter_name: DeviceOnOffOption(
            name=option_name,
            property_host=get_parameter_by_name(self, parameter_name))
        self._options = tuple([
            self.register_disconnectable(make_option(option_name, param_name))
            for option_name, param_name in ((u'Auto Release',
                                             u'Auto Release On/Off'),
                                            (u'Makeup', u'Makeup'),
                                            (u'Listen', u'S/C Listen'),
                                            (u'Sidechain', u'S/C On'))
        ])
        make_parameter = lambda name, values, index: EnumWrappingParameter(
            name=name,
            parent=self,
            values_host=self,
            index_property_host=self,
            values_property=values,
            index_property=index)
        self._position_parameter = make_parameter(
            'Position', 'input_channel_positions',
            'input_channel_position_index')
        self._additional_parameters = self.register_disconnectables(
            (make_parameter('Input Type', 'available_input_routing_types',
                            'input_routing_type_index'),
             make_parameter('Input Channel',
                            'available_input_routing_channels',
                            'input_routing_channel_index'),
             self._position_parameter))
 def __on_parameters_changed(self):
     self.mono_option.set_property_host(get_parameter_by_name(self, 'Mono'))
     self.bass_mono_option.set_property_host(
         get_parameter_by_name(self, 'Bass Mono'))
 def __init__(self, *a, **k):
     super(DrumBussDeviceDecorator, self).__init__(*a, **k)
     self.compressor_option = DeviceOnOffOption(
         name='Compressor',
         property_host=get_parameter_by_name(self, 'Compressor On'))
     self.register_disconnectables(self.options)
 def __init__(self, *a, **k):
     super(PedalDeviceDecorator, self).__init__(*a, **k)
     self.mid_freq_option = DeviceSwitchOption(
         name='Mid Freq', parameter=get_parameter_by_name(self, 'Mid Freq'))
     self.register_disconnectables(self.options)
 def __on_parameters_changed(self):
     self.filter_slope_option.set_parameter(
         get_parameter_by_name(self, 'Filter Slope'))
Exemplo n.º 11
0
    def _create_options(self):

        def is_selected_parameter_modulatable():
            if self.single_selected_parameter is None:
                return False
            if isinstance(self.single_selected_parameter, PitchParameter):
                return True
            if isinstance(self.single_selected_parameter, InternalParameterBase):
                return False
            return self._live_object.is_parameter_modulatable(self.single_selected_parameter)

        def add_selected_parameter_to_mod_matrix():
            if is_selected_parameter_modulatable():
                param = self.single_selected_parameter.decimal_value_host if isinstance(self.single_selected_parameter, PitchParameter) else self.single_selected_parameter
                self.current_mod_target_index.index = self._live_object.add_parameter_to_modulation_matrix(param)
                self.notify_request_bank_view('Matrix')

        def jump_to_bank(bank_name):
            self.notify_request_bank_view(bank_name)

        def choose_envelope(value):
            self.envelope_switch.value = value

        def choose_lfo(value):
            self.lfo_switch.value = value

        self.osc_on_option = DeviceOnOffOption(name='Osc', property_host=self._get_osc_on_property_host())
        self.filter_on_option = DeviceOnOffOption(name='Filter', property_host=self._get_filter_on_property_host())
        self.lfo_retrigger_option = DeviceOnOffOption(name='Retrigger', property_host=self._get_lfo_retrigger_property_host())
        self.add_to_mod_matrix_option = DeviceTriggerOption(name='Add to Matrix', callback=add_selected_parameter_to_mod_matrix, is_active=is_selected_parameter_modulatable)
        return (
         DeviceOnOffOption(name='Sub', property_host=get_parameter_by_name(self, 'Sub On')),
         DeviceSwitchOption(name='Filter 1 Slope', parameter=get_parameter_by_name(self, 'Filter 1 Slope'), labels=[
          '12dB', '24dB']),
         DeviceSwitchOption(name='Filter 2 Slope', parameter=get_parameter_by_name(self, 'Filter 2 Slope'), labels=[
          '12dB', '24dB']),
         DeviceSwitchOption(name='Filter Switch', parameter=self.filter_switch_for_filter_switch_option, labels=[
          'Filter 1', 'Filter 2']),
         DeviceSwitchOption(name='LFO 1 Sync', parameter=get_parameter_by_name(self, 'LFO 1 Sync'), labels=[
          'Hz', 'Sync']),
         DeviceSwitchOption(name='LFO 2 Sync', parameter=get_parameter_by_name(self, 'LFO 2 Sync'), labels=[
          'Hz', 'Sync']),
         DeviceTriggerOption(name='Go to Amp Env', callback=lambda : (
          choose_envelope(WavetableEnvelopeType.amp),
          jump_to_bank('Envelopes'))),
         DeviceTriggerOption(name='Go to Env 2', callback=lambda : (
          choose_envelope(WavetableEnvelopeType.env2),
          jump_to_bank('Envelopes'))),
         DeviceTriggerOption(name='Go to Env 3', callback=lambda : (
          choose_envelope(WavetableEnvelopeType.env3),
          jump_to_bank('Envelopes'))),
         DeviceTriggerOption(name='Go to LFO 1', callback=lambda : (
          choose_lfo(WavetableLfoType.one),
          jump_to_bank('LFOs'))),
         DeviceTriggerOption(name='Go to LFO 2', callback=lambda : (
          choose_lfo(WavetableLfoType.two),
          jump_to_bank('LFOs'))),
         DeviceTriggerOption(name='Back', callback=self.notify_request_previous_bank_from_mod_matrix)) + (
         self.osc_on_option,
         self.filter_on_option,
         self.lfo_retrigger_option,
         self.add_to_mod_matrix_option)
Exemplo n.º 12
0
 def _get_lfo_retrigger_property_host(self):
     return get_parameter_by_name(self, ('LFO {} Retrigger').format(self._lfo_types_provider.index + 1))
Exemplo n.º 13
0
 def _get_filter_on_property_host(self):
     return get_parameter_by_name(self, ('Filter {} On').format(self.filter_switch_for_filter_switch_option.value + 1))
Exemplo n.º 14
0
 def _get_osc_on_property_host(self):
     return get_parameter_by_name(self, ('Osc {} On').format(2 if self.oscillator_switch.value else 1))
Exemplo n.º 15
0
 def __init__(self, *a, **k):
     super(EchoDeviceDecorator, self).__init__(*a, **k)
     self._channel_names_provider = NotifyingList(available_values=[
      'Left', 'Right'], default_value=EchoDeviceDecorator.EchoChannelName.left)
     self.channel_switch_parameter = EnumWrappingParameter(name='Channel Toggle', parent=self, values_host=self._channel_names_provider, index_property_host=self._channel_names_provider, values_property='available_values', index_property='index', value_type=EchoDeviceDecorator.EchoChannelName)
     self._additional_parameters = (
      self.channel_switch_parameter,)
     self.link_option = DeviceOnOffOption(name='Link', property_host=get_parameter_by_name(self, 'Link'))
     self.sync_l_option = DeviceOnOffOption(name='L Sync', property_host=get_parameter_by_name(self, 'L Sync'))
     self.sync_r_option = DeviceOnOffOption(name='R Sync', property_host=get_parameter_by_name(self, 'R Sync'))
     self.sync_m_option = DeviceOnOffOption(name='M Sync', property_host=get_parameter_by_name(self, 'L Sync'))
     self.sync_s_option = DeviceOnOffOption(name='S Sync', property_host=get_parameter_by_name(self, 'R Sync'))
     self.clip_dry_option = DeviceOnOffOption(name='Clip Dry', property_host=get_parameter_by_name(self, 'Clip Dry'))
     self.filter_on_option = DeviceOnOffOption(name='Filter', property_host=get_parameter_by_name(self, 'Filter On'))
     self.feedback_inv_option = DeviceOnOffOption(name='Invert', property_host=get_parameter_by_name(self, 'Feedback Inv'))
     self.modulation_times_four_option = DeviceOnOffOption(name='Mod 4x', property_host=get_parameter_by_name(self, 'Mod 4x'))
     self.reverb_loc_option = DeviceSwitchOption(name='Reverb Loc', parameter=get_parameter_by_name(self, 'Reverb Loc'))
     self.duck_option = DeviceOnOffOption(name='Duck', property_host=get_parameter_by_name(self, 'Duck On'))
     self.gate_option = DeviceOnOffOption(name='Gate', property_host=get_parameter_by_name(self, 'Gate On'))
     self.wobble_option = DeviceOnOffOption(name='Wobble', property_host=get_parameter_by_name(self, 'Wobble On'))
     self.noise_option = DeviceOnOffOption(name='Noise', property_host=get_parameter_by_name(self, 'Noise On'))
     self.channel_switch_lr_option = DeviceSwitchOption(name='L/R Switch', parameter=self.channel_switch_parameter, labels=[
      'Left', 'Right'])
     self.channel_switch_ms_option = DeviceSwitchOption(name='M/S Switch', parameter=self.channel_switch_parameter, labels=[
      'Mid', 'Side'])
     self.register_disconnectables(self._additional_parameters)
     self.register_disconnectables(self.options)
Exemplo n.º 16
0
    def setup_options(self):
        def get_simpler_flag(name):
            return liveobj_valid(self._live_object) and getattr(
                self._live_object, name)

        def call_simpler_function(name, *a):
            if liveobj_valid(self._live_object):
                return getattr(self._live_object, name)(*a)

        def sample_available():
            return liveobj_valid(self._live_object) and liveobj_valid(
                self._live_object.sample)

        def call_sample_function(name, *a):
            if sample_available():
                return getattr(self._live_object.sample, name)(*a)

        def reset_slices():
            call_sample_function('reset_slices')
            self.show_notification(RESET_SLICING_NOTIFICATION)

        def split_slice_available():
            if sample_available():
                slices = self._live_object.sample.slices
                return len(slices) != MAX_NUMBER_SLICES or slices[
                    -1] != self._live_object.view.selected_slice
            return False

        self.crop_option = DeviceTriggerOption(name='Crop',
                                               callback=partial(
                                                   call_simpler_function,
                                                   'crop'))
        self.reverse_option = DeviceTriggerOption(name='Reverse',
                                                  callback=partial(
                                                      call_simpler_function,
                                                      'reverse'))
        self.one_shot_sustain_mode_option = DeviceSwitchOption(
            name='Trigger Mode',
            parameter=get_parameter_by_name(self, 'Trigger Mode'))
        self.retrigger_option = DeviceOnOffOption(
            name='Retrigger',
            property_host=self._live_object,
            value_property_name='retrigger')
        self.warp_as_x_bars_option = DeviceTriggerOption(
            name='Warp as X Bars',
            default_label=self.get_warp_as_option_label(),
            callback=lambda: call_simpler_function(
                'warp_as', call_simpler_function('guess_playback_length')),
            is_active=lambda: get_simpler_flag('can_warp_as'))
        self.warp_half_option = DeviceTriggerOption(
            name=':2',
            callback=partial(call_simpler_function, 'warp_half'),
            is_active=lambda: get_simpler_flag('can_warp_half'))
        self.warp_double_option = DeviceTriggerOption(
            name='x2',
            callback=partial(call_simpler_function, 'warp_double'),
            is_active=lambda: get_simpler_flag('can_warp_double'))
        self.lfo_sync_option = DeviceSwitchOption(
            name='LFO Sync Type',
            parameter=get_parameter_by_name(self, 'L Sync'))
        self.loop_option = DeviceOnOffOption(
            name='Loop',
            property_host=get_parameter_by_name(self, 'S Loop On'))
        self.filter_slope_option = DeviceSwitchOption(
            name='Filter Slope',
            parameter=get_parameter_by_name(self, 'Filter Slope'))
        self.clear_slices_action = DeviceTriggerOption(
            name='Clear Slices',
            default_label='Clear Slices',
            callback=lambda: call_sample_function('clear_slices'),
            is_active=lambda: sample_available() and len(self._live_object.
                                                         sample.slices) > 1)
        self.reset_slices_action = DeviceTriggerOption(
            name='Reset Slices',
            default_label='Reset Slices',
            callback=reset_slices,
            is_active=lambda: sample_available())
        self.split_slice_action = DeviceTriggerOption(
            name='Split Slice',
            default_label='Split Slice',
            callback=lambda: insert_new_slice(self._live_object),
            is_active=split_slice_available)
Exemplo n.º 17
0
 def __on_parameters_changed(self):
     edit_mode_parameter = get_parameter_by_name(self, 'Edit Mode')
     self.left_right_curve_switch_option.set_parameter(edit_mode_parameter)
     self.mid_side_curve_switch_option.set_parameter(edit_mode_parameter)