本文整理汇总了Python中_Framework.ModesComponent.ModesComponent.add_mode方法的典型用法代码示例。如果您正苦于以下问题:Python ModesComponent.add_mode方法的具体用法?Python ModesComponent.add_mode怎么用?Python ModesComponent.add_mode使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类_Framework.ModesComponent.ModesComponent
的用法示例。
在下文中一共展示了ModesComponent.add_mode方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: CntrlrMonoInstrumentComponent
# 需要导入模块: from _Framework.ModesComponent import ModesComponent [as 别名]
# 或者: from _Framework.ModesComponent.ModesComponent import add_mode [as 别名]
class CntrlrMonoInstrumentComponent(MonoInstrumentComponent):
def _setup_shift_mode(self):
self._shifted = False
self._shift_mode = ModesComponent()
self._shift_mode.add_mode('shift', tuple([self._enable_shift, self._disable_shift]), behaviour = ColoredCancellableBehaviourWithRelease(color = 'MonoInstrument.ShiftOn', off_color = 'MonoInstrument.ShiftOff'))
示例2: _create_step_button_modes
# 需要导入模块: from _Framework.ModesComponent import ModesComponent [as 别名]
# 或者: from _Framework.ModesComponent.ModesComponent import add_mode [as 别名]
def _create_step_button_modes(self):
matrix_modes = ModesComponent(name='Step_Button_Modes')
clip_mode = AddLayerMode(self._session, Layer(clip_launch_buttons=self._step_buttons, stop_track_clip_buttons=self._modified_step_buttons))
scene_mode = AddLayerMode(self._session, Layer(scene_launch_buttons=self._step_buttons))
matrix_modes.add_mode('clip', clip_mode)
matrix_modes.add_mode('scene', scene_mode)
matrix_modes.layer = Layer(clip_button=self._recall_button, scene_button=self._store_button)
matrix_modes.selected_mode = 'clip'
return matrix_modes
示例3: _create_track_button_modes
# 需要导入模块: from _Framework.ModesComponent import ModesComponent [as 别名]
# 或者: from _Framework.ModesComponent.ModesComponent import add_mode [as 别名]
def _create_track_button_modes(self):
track_button_modes = ModesComponent(name='Track Button Modes', is_enabled=False)
select_button_matrix = self.wrap_matrix(self._select_buttons)
track_button_modes.add_mode('clip_stop', AddLayerMode(self._session, Layer(stop_track_clip_buttons=select_button_matrix)))
track_button_modes.add_mode('solo', AddLayerMode(self._mixer, layer=Layer(solo_buttons=select_button_matrix)))
track_button_modes.add_mode('arm', AddLayerMode(self._mixer, layer=Layer(arm_buttons=select_button_matrix)))
track_button_modes.add_mode('mute', AddLayerMode(self._mixer, layer=Layer(mute_buttons=select_button_matrix)))
track_button_modes.add_mode('select', AddLayerMode(self._mixer, layer=Layer(track_select_buttons=select_button_matrix)))
track_button_modes.selected_mode = 'clip_stop'
track_button_modes.layer = Layer(clip_stop_button=self._stop_button, solo_button=self._solo_button, arm_button=self._arm_button, mute_button=self._mute_button, select_button=self._select_button)
示例4: _create_mixer
# 需要导入模块: from _Framework.ModesComponent import ModesComponent [as 别名]
# 或者: from _Framework.ModesComponent.ModesComponent import add_mode [as 别名]
def _create_mixer(self):
mixer = MixerComponent(NUM_TRACKS, is_enabled=True, auto_name=True)
mixer.layer = Layer(track_select_buttons=self._select_buttons, send_controls=self._send_encoders, next_sends_button=self._down_button, prev_sends_button=self._up_button, pan_controls=self._pan_device_encoders, volume_controls=self._volume_faders, send_lights=self._send_encoder_lights, pan_lights=self._pan_device_encoder_lights)
mixer.on_send_index_changed = partial(self._show_controlled_sends_message, mixer)
for channel_strip in map(mixer.channel_strip, xrange(NUM_TRACKS)):
channel_strip.empty_color = 'Mixer.NoTrack'
mixer_modes = ModesComponent()
mixer_modes.add_mode('mute', [AddLayerMode(mixer, Layer(mute_buttons=self._state_buttons))])
mixer_modes.add_mode('solo', [AddLayerMode(mixer, Layer(solo_buttons=self._state_buttons))])
mixer_modes.add_mode('arm', [AddLayerMode(mixer, Layer(arm_buttons=self._state_buttons))])
mixer_modes.layer = Layer(mute_button=self._mute_mode_button, solo_button=self._solo_mode_button, arm_button=self._arm_mode_button)
mixer_modes.selected_mode = 'mute'
return mixer
示例5: _create_encoder_modes
# 需要导入模块: from _Framework.ModesComponent import ModesComponent [as 别名]
# 或者: from _Framework.ModesComponent.ModesComponent import add_mode [as 别名]
def _create_encoder_modes(self):
knob_modes = ModesComponent(name='Knob Modes', is_enabled=False)
parameter_knobs_matrix = self.wrap_matrix(self._parameter_knobs)
knob_modes.add_mode('volume', AddLayerMode(self._mixer, Layer(volume_controls=parameter_knobs_matrix)))
knob_modes.add_mode('pan', AddLayerMode(self._mixer, Layer(pan_controls=parameter_knobs_matrix)))
knob_modes.add_mode('send', [AddLayerMode(self._mixer, Layer(send_controls=parameter_knobs_matrix)), DelayMode(LayerMode(SendToggleComponent(self._mixer, name='Toggle Send', is_enabled=False), Layer(priority=MODE_PRIORITY, toggle_button=self._send_button)), delay=TIMER_DELAY)])
knob_modes.add_mode('device', AddLayerMode(self._device, Layer(parameter_controls=parameter_knobs_matrix)))
knob_modes.selected_mode = 'volume'
knob_modes.layer = Layer(volume_button=self._volume_button, pan_button=self._pan_button, send_button=self._send_button, device_button=self._device_button)
knob_modes.layer.priority = MODE_PRIORITY
示例6: _create_encoder_modes
# 需要导入模块: from _Framework.ModesComponent import ModesComponent [as 别名]
# 或者: from _Framework.ModesComponent.ModesComponent import add_mode [as 别名]
def _create_encoder_modes(self):
knob_modes = ModesComponent(name='Knob Modes', is_enabled=False)
parameter_knobs_matrix = self.wrap_matrix(self._parameter_knobs)
send_toggle_component = SendToggleComponent(self._mixer, name='Toggle Send', is_enabled=False, layer=Layer(toggle_button=self._send_button, priority=1))
knob_modes.add_mode('volume', AddLayerMode(self._mixer, Layer(volume_controls=parameter_knobs_matrix)))
knob_modes.add_mode('pan', AddLayerMode(self._mixer, Layer(pan_controls=parameter_knobs_matrix)))
knob_modes.add_mode('send', [AddLayerMode(self._mixer, Layer(send_controls=parameter_knobs_matrix)), send_toggle_component])
knob_modes.add_mode('device', AddLayerMode(self._device, Layer(parameter_controls=parameter_knobs_matrix)))
knob_modes.selected_mode = 'volume'
knob_modes.layer = Layer(volume_button=self._volume_button, pan_button=self._pan_button, send_button=self._send_button, device_button=self._device_button)
return knob_modes
示例7: _create_track_button_modes
# 需要导入模块: from _Framework.ModesComponent import ModesComponent [as 别名]
# 或者: from _Framework.ModesComponent.ModesComponent import add_mode [as 别名]
def _create_track_button_modes(self):
track_button_modes = ModesComponent(name="Track Button Modes", is_enabled=False)
select_button_matrix = self.wrap_matrix(self._select_buttons)
track_button_modes.add_mode(
"clip_stop", AddLayerMode(self._session, Layer(stop_track_clip_buttons=select_button_matrix))
)
track_button_modes.add_mode("solo", AddLayerMode(self._mixer, layer=Layer(solo_buttons=select_button_matrix)))
track_button_modes.add_mode("arm", AddLayerMode(self._mixer, layer=Layer(arm_buttons=select_button_matrix)))
track_button_modes.add_mode("mute", AddLayerMode(self._mixer, layer=Layer(mute_buttons=select_button_matrix)))
track_button_modes.add_mode(
"select", AddLayerMode(self._mixer, layer=Layer(track_select_buttons=select_button_matrix))
)
track_button_modes.selected_mode = "clip_stop"
track_button_modes.layer = Layer(
clip_stop_button=self._stop_button,
solo_button=self._solo_button,
arm_button=self._arm_button,
mute_button=self._mute_button,
select_button=self._select_button,
)
return track_button_modes
示例8: _create_global_control
# 需要导入模块: from _Framework.ModesComponent import ModesComponent [as 别名]
# 或者: from _Framework.ModesComponent.ModesComponent import add_mode [as 别名]
def _create_global_control(self):
def set_pan_controls():
for index, control in enumerate(self._global_param_controls):
self._mixer.channel_strip(index).set_pan_control(control)
self._mixer.channel_strip(index).set_send_controls((None, None, None))
control.set_channel(0)
return None
def set_send_controls(send_index):
for index, control in enumerate(self._global_param_controls):
self._mixer.channel_strip(index).set_pan_control(None)
send_controls = [None] * 3
send_controls[send_index] = control
self._mixer.channel_strip(index).set_send_controls(send_controls)
control.set_channel(send_index + 1)
return
encoder_modes = ModesComponent(name='Track_Control_Modes', is_enabled=False)
encoder_modes.add_mode('pan', [set_pan_controls])
encoder_modes.add_mode('send_a', [partial(set_send_controls, 0)])
encoder_modes.add_mode('send_b', [partial(set_send_controls, 1)])
encoder_modes.add_mode('send_c', [partial(set_send_controls, 2)])
encoder_modes.selected_mode = 'pan'
encoder_modes.layer = Layer(pan_button=self._global_bank_buttons[0], send_a_button=self._global_bank_buttons[1], send_b_button=self._global_bank_buttons[2], send_c_button=self._global_bank_buttons[3])
self._translation_selector = ChannelTranslationSelector(name='Global_Translations')
示例9: InstrumentComponent
# 需要导入模块: from _Framework.ModesComponent import ModesComponent [as 别名]
# 或者: from _Framework.ModesComponent.ModesComponent import add_mode [as 别名]
class InstrumentComponent(ControlSurfaceComponent):
"""
handles notes mode and switches between note, drum and dummy audio mode.
"""
def __init__(self, control_surface, drum_component=None, *a, **k):
self._control_surface = control_surface
self._drum_component = drum_component
self._implicit_arm = True
self._modes = ModesComponent(name="Instrument_Modes", is_enabled=False)
self._modes.set_enabled = self.set_enabled
self._feedback_channels = [
consts.DR_MAP_CHANNEL,
consts.DR_MAP_CHANNEL + 1,
consts.DR_MAP_CHANNEL + 2,
consts.DR_MAP_CHANNEL + 3,
consts.DR_MAP_CHANNEL + 4,
]
self._non_feedback_channel = consts.DR_MAP_CHANNEL + 5
self._common_component = CommonModeComponent(instrument_component=self, control_surface=self._control_surface)
self._scale_component = ScaleComponent(control_surface=self._control_surface, enabled=True)
self._note_component = NoteComponent(
control_surface=self._control_surface,
feedback_channels=self._feedback_channels,
non_feedback_channel=self._non_feedback_channel,
get_pattern=self._scale_component.get_pattern,
)
super(InstrumentComponent, self).__init__(*a, **k)
def set_layers(self, midimap):
common_layer_mode = LayerMode(
self._common_component,
layer=Layer(
arrow_left_button=midimap["Arrow_Left_Button"],
arrow_right_button=midimap["Arrow_Right_Button"],
arrow_up_button=midimap["Arrow_Up_Button"],
arrow_down_button=midimap["Arrow_Down_Button"],
scale_button=midimap["Scene_Launch_Button_Matrix_Raw"][0][0],
scale_up_button=midimap["Scene_Launch_Button_Matrix_Raw"][0][1],
scale_down_button=midimap["Scene_Launch_Button_Matrix_Raw"][0][2],
dummy_button=midimap["Scene_Launch_Button_Matrix_Raw"][0][3],
play_button=midimap["Scene_Launch_Button_Matrix_Raw"][0][6],
stop_button=midimap["Scene_Launch_Button_Matrix_Raw"][0][7],
),
)
drum_group_layer_mode = LayerMode(
self._control_surface._drum_group,
layer=Layer(
# scroll_up_button = midimap['Scene_Launch_Button_Matrix_Raw'][0][1],
# scroll_down_button = midimap['Scene_Launch_Button_Matrix_Raw'][0][2],
mute_button=midimap["Scene_Launch_Button_Matrix_Raw"][0][4],
solo_button=midimap["Scene_Launch_Button_Matrix_Raw"][0][5],
# scroll_up_button=midimap['Arrow_Left_Button'],
# scroll_down_button=midimap['Arrow_Right_Button'],
# scroll_page_up_button=midimap['Arrow_Up_Button'],
# scroll_page_down_button=midimap['Arrow_Down_Button'],
# drum_matrix = midimap['Drum_Button_Matrix']#,
drum_matrix=midimap["Main_Button_Matrix"]
# select_button = midimap['Shift_Button'],
# delete_button = midimap['Delete_Button']
),
)
self._modes.add_mode(
"drum_mode",
[
partial(self._control_surface._layout_setup, consts.SESSION_LAYOUT_SYSEX_BYTE),
partial(
self._control_surface._layout_setup,
consts.USER_LAYOUT_SYSEX_BYTE,
consts.SYSEX_PARAM_BYTE_STANDALONE_LAYOUT,
),
# partial(self._control_surface._layout_setup, consts.DRUM_LAYOUT_SYSEX_BYTE),
self._control_surface._setup_drum_group(),
drum_group_layer_mode,
common_layer_mode # ,
# drum_mode_note_matrix_translation
],
)
scale_layer_mode = LayerMode(self._scale_component, layer=Layer(matrix=midimap["Main_Button_Matrix"]))
self._modes.add_mode(
"scale_mode",
[
partial(self._control_surface._layout_setup, consts.SESSION_LAYOUT_SYSEX_BYTE),
partial(
self._control_surface._layout_setup,
consts.USER_LAYOUT_SYSEX_BYTE,
consts.SYSEX_PARAM_BYTE_STANDALONE_LAYOUT,
),
scale_layer_mode,
common_layer_mode # ,
# drum_mode_note_matrix_translation
],
)
note_layer_mode = LayerMode(
#.........这里部分代码省略.........
示例10: LaunchControl
# 需要导入模块: from _Framework.ModesComponent import ModesComponent [as 别名]
# 或者: from _Framework.ModesComponent.ModesComponent import add_mode [as 别名]
#.........这里部分代码省略.........
self._session.set_enabled(False)
self._session.set_mixer(self._session_mixer)
self._session_layer = Layer(track_bank_left_button=make_button(116, 'Track_Bank_Left_Button'), track_bank_right_button=make_button(117, 'Track_Bank_Right_Button'), select_prev_button=make_button(114, 'Scene_Bank_Up_Button'), select_next_button=make_button(115, 'Scene_Bank_Down_Button'), clip_launch_buttons=ButtonMatrixElement(rows=[clip_launch_buttons]))
scene = self._session.selected_scene()
for index in range(8):
clip_slot = scene.clip_slot(index)
clip_slot.set_triggered_to_play_value(Colors.GREEN_BLINK)
clip_slot.set_triggered_to_record_value(Colors.RED_BLINK)
clip_slot.set_stopped_value(Colors.AMBER_FULL)
clip_slot.set_started_value(Colors.GREEN_FULL)
clip_slot.set_recording_value(Colors.RED_FULL)
clip_slot.name = 'Selected_Clip_Slot_' + str(index)
self._on_track_offset.subject = self._session
def _init_device(self):
make_button = partial(make_launch_control_button, channel=10)
make_encoder = partial(make_launch_control_encoder, channel=10)
bottom_encoders, top_encoders = make_all_encoders('Device', make_encoder)
parameter_controls = top_encoders[:4] + bottom_encoders[:4]
bank_buttons = [ make_button(identifier, 'Device_Bank_Button_' + str(i), is_pad=True) for i, identifier in enumerate(pad_identifiers) ]
for button in bank_buttons:
button.set_on_off_values(Colors.LED_ON, Colors.LED_OFF)
self._device_bank_registry = DeviceBankRegistry()
self._device = DeviceComponent(device_bank_registry=self._device_bank_registry, name='Device')
self._device.set_enabled(False)
self._device.layer = Layer(parameter_controls=ButtonMatrixElement(rows=[parameter_controls]), bank_buttons=ButtonMatrixElement(rows=[bank_buttons]))
self.set_device_component(self._device)
self._device_navigation = DeviceNavigationComponent()
self._device_navigation.set_enabled(False)
self._device_navigation.name = 'Device_Navigation'
self._device_navigation.layer = Layer(next_device_button=make_button(115, 'Next_Device_Button'), previous_device_button=make_button(114, 'Prev_Device_Button'))
self._view_control = ViewControlComponent()
self._view_control.set_enabled(False)
self._view_control.name = 'View_Control'
self._view_control.layer = Layer(next_track_button=make_button(117, 'Device_Next_Track_Button'), prev_track_button=make_button(116, 'Device_Prev_Track_Button'))
def _init_modes(self):
self._modes = ModesComponent(is_root=True)
self._modes.add_mode('mixer', [partial(self._session.set_mixer, self._mixer),
LayerMode(self._session, self._mixer_track_nav_layer),
self._mixer,
self._session,
self._show_controlled_tracks_message])
self._modes.add_mode('session', [partial(self._session.set_mixer, self._session_mixer),
LayerMode(self._session, self._session_layer),
self._session_mixer,
self._session,
self._show_controlled_tracks_message])
self._modes.add_mode('device', [self._device, self._device_navigation, self._view_control])
self._modes.add_mode('user', None)
self._modes.selected_mode = 'mixer'
self._modes.layer = Layer(mixer_button=ButtonSysexControl(Sysex.MIXER_MODE), session_button=ButtonSysexControl(Sysex.SESSION_MODE), device_button=ButtonSysexControl(Sysex.DEVICE_MODE))
return
@subject_slot('offset')
def _on_track_offset(self):
self._show_controlled_tracks_message()
@subject_slot('selected_send_index')
def _on_selected_send_index(self, index):
self._show_controlled_sends_message()
@subject_slot('selected_mixer_mode')
def _on_selected_mixer_mode(self, mode):
if mode == 'sends':
self._show_controlled_sends_message()
else:
self.show_message('Controlling Pan and Volume')
def _show_controlled_tracks_message(self):
start = self._session.track_offset() + 1
end = min(start + 8, len(self._session.tracks_to_use()))
if start < end:
self.show_message('Controlling Track %d to %d' % (start, end))
else:
self.show_message('Controlling Track %d' % start)
def _show_controlled_sends_message(self):
send_index = self._mixer.selected_send_index
send_name1 = chr(ord('A') + send_index)
if send_index + 1 < self._mixer.num_sends:
send_name2 = chr(ord('A') + send_index + 1)
self.show_message('Controlling Send %s and %s' % (send_name1, send_name2))
else:
self.show_message('Controlling Send %s' % send_name1)
def handle_sysex(self, midi_bytes):
super(LaunchControl, self).handle_sysex(midi_bytes)
if self._is_user_mode_message(midi_bytes):
self._modes.selected_mode = 'user'
self.request_rebuild_midi_map()
def _is_user_mode_message(self, midi_bytes):
"""
True if midi_byes refer to a mode change, but none of the three
predefined Live modes
"""
return midi_bytes[:7] == Sysex.MODE_CHANGE_PREFIX and midi_bytes not in SYSEX_MODE_MAP
示例11: MonoWing
# 需要导入模块: from _Framework.ModesComponent import ModesComponent [as 别名]
# 或者: from _Framework.ModesComponent.ModesComponent import add_mode [as 别名]
#.........这里部分代码省略.........
self._pedal[11]._report = False
self._leds = [self._pedal[6], self._pedal[5], self._pedal[4], self._pedal[3]]
self._side_buttons = [MonoButtonElement(True, MIDI_NOTE_TYPE, 0, SIDE_DEFS[index], 'Side_Button_'+str(index), self) for index in range(4)]
self._select_buttons = ButtonMatrixElement()
self._select_buttons.name = 'SelectMatrix'
self._select_buttons.add_row([self._pedal[6], self._pedal[5], self._pedal[4], self._pedal[3]])
self._doublepress_select_buttons = ButtonMatrixElement()
self._doublepress_select_buttons.name = 'DoublepressSelectMatrix'
self._doublepress_select_buttons.add_row([self._pedal[6].double_press, self._pedal[5].double_press, self._pedal[4].double_press, self._pedal[3].double_press])
self._record_button = self._pedal[1]
self._mute_button = self._pedal[2]
self._overdub_button = self._pedal[0]
self._clear_button = self._pedal[7]
self._reverse_button = self._pedal[8]
self._record_button.turn_off()
self._mute_button.turn_off()
self._overdub_button.turn_off()
self._clear_button.turn_off()
self._reverse_button.turn_off()
def _setup_looper(self):
self._looper = MonolooperComponent(self._leds, self)
self._looper.layer = Layer(select_buttons = self._select_buttons,
doublepress_select_buttons = self._doublepress_select_buttons,
overdub_button = self._pedal[2],
record_button = self._pedal[1],
mute_button = self._pedal[0],
clear_button = self._pedal[7],
reverse_button = self._pedal[8],
expression_pedal = self._pedal[9],)
def _setup_launcher(self):
self._launcher = LauncherComponent(self._leds, self)
self._launcher.set_enabled(False)
self._launcher.layer = Layer(select_buttons = self._select_buttons,
doublepress_select_buttons = self._doublepress_select_buttons,
fire1_button = self._pedal[2],
fire2_button = self._pedal[1],
fire3_button = self._pedal[0],
fire4_button = self._pedal[8],
expression_pedal = self._pedal[9])
def _setup_device_control(self):
self._device_control = DeviceControlComponent(self._leds, self)
self._device_control.set_enabled(False)
self._device_control.layer = Layer(select_buttons = self._select_buttons,
doublepress_select_buttons = self._doublepress_select_buttons,
toggle1_button = self._pedal[2],
toggle2_button = self._pedal[1],
toggle3_button = self._pedal[0],
toggle4_button = self._pedal[8],
expression_pedal = self._pedal[9],
expression2 = self._pedal[10],
expression3 = self._pedal[11])
def _setup_modes(self):
self._button_modes = ModesComponent(name='Button_Modes')
self._button_modes.add_mode('launcher', self._launcher)
self._button_modes.add_mode('looper', self._looper)
self._button_modes.add_mode('device', self._device_control)
self._button_modes.selected_mode = 'looper'
self._button_modes.layer = Layer(looper_button = self._side_buttons[0], launcher_button = self._side_buttons[1], device_button = self._side_buttons[2])
self._button_modes.set_enabled(True)
def receive_led(self, button, value):
#self.log_message('receive led: ' + str(index) + ' ' + str(value))
pass
def toggle_mode(self):
self._button_modes.selected_mode = 'launcher' if self._button_modes.selected_mode is 'looper' else 'looper'
self._last_main_mode = self._button_modes.selected_mode
#self.log_message('toggle mode to: ' + str(self._button_modes.selected_mode))
def toggle_device_control(self, x):
self._button_modes.selected_mode = 'device' if not self._button_modes.selected_mode is 'device' else self._last_main_mode
if self._button_modes.selected_mode is 'device':
self._device_control.set_bank(x)
"""called on timer"""
def update_display(self):
super(MonoWing, self).update_display()
self._timer = (self._timer + 1) % 256
self.flash()
def flash(self):
if(self.flash_status > 0):
for control in self.controls:
if isinstance(control, MonoButtonElement):
control.flash(self._timer)
示例12: Cntrlr
# 需要导入模块: from _Framework.ModesComponent import ModesComponent [as 别名]
# 或者: from _Framework.ModesComponent.ModesComponent import add_mode [as 别名]
#.........这里部分代码省略.........
self._instrument.audioloop_layer = LayerMode(self._instrument, Layer(priority = 4, loop_selector_matrix = self._key_matrix.submatrix[:, :1]))
self._instrument.keypad_shift_layer = AddLayerMode(self._instrument, Layer(priority = 4,
scale_up_button = self._button[13],
scale_down_button = self._button[12],
offset_up_button = self._button[11],
offset_down_button = self._button[10],
vertical_offset_up_button = self._button[9],
vertical_offset_down_button = self._button[8],
split_button = self._button[14],
sequencer_button = self._button[15]))
self._instrument.drumpad_shift_layer = AddLayerMode(self._instrument, Layer(priority = 4,
scale_up_button = self._button[13],
scale_down_button = self._button[12],
drum_offset_up_button = self._button[11],
drum_offset_down_button = self._button[10],
drumpad_mute_button = self._button[9],
drumpad_solo_button = self._button[8],
split_button = self._button[14],
sequencer_button = self._button[15]))
self._instrument._keypad.main_layer = LayerMode(self._instrument._keypad, Layer(priority = 4, keypad_matrix = self._matrix))
self._instrument._keypad.sequencer_layer = LayerMode(self._instrument._keypad, Layer(priority = 4, playhead = self._playhead_element, keypad_matrix = self._matrix, sequencer_matrix = self._key_matrix.submatrix[:,:1]))
self._instrument._keypad.split_layer = LayerMode(self._instrument._keypad, Layer(priority = 4, keypad_matrix = self._matrix, split_matrix = self._key_matrix.submatrix[:8,:1]))
self._instrument._keypad.sequencer_shift_layer = LayerMode(self._instrument._keypad, Layer(priority = 4, keypad_matrix = self._matrix, loop_selector_matrix = self._key_matrix.submatrix[:8, :1], quantization_buttons = self._key_matrix.submatrix[:7, 1:], follow_button = self._button[23]))
self._instrument._drumpad.main_layer = LayerMode(self._instrument._drumpad, Layer(priority = 4, drumpad_matrix = self._matrix))
self._instrument._drumpad.sequencer_layer = LayerMode(self._instrument._drumpad, Layer(priority = 4, playhead = self._playhead_element, drumpad_matrix = self._matrix, sequencer_matrix = self._key_matrix.submatrix[:,:1]))
self._instrument._drumpad.split_layer = LayerMode(self._instrument._drumpad, Layer(priority = 4, drumpad_matrix = self._matrix, split_matrix = self._key_matrix.submatrix[:8,:1]))
self._instrument._drumpad.sequencer_shift_layer = LayerMode(self._instrument._drumpad, Layer(priority = 4, drumpad_matrix = self._matrix, loop_selector_matrix = self._key_matrix.submatrix[:8, :1], quantization_buttons = self._key_matrix.submatrix[:7, 1:], follow_button = self._button[23]))
self._instrument.set_enabled(False)
def _setup_modswitcher(self):
self._modswitcher = ModesComponent(name = 'ModSwitcher') # is_enabled = False)
#self._modswitcher.add_mode('instrument', [self._optional_translations])
self._modswitcher.add_mode('mod', [self.modhandler, self._optional_translations])
self._modswitcher.add_mode('instrument', [self._instrument, self._instrument.shift_button_layer, self._optional_translations])
self._modswitcher.set_enabled(False)
def _setup_viewcontrol(self):
self._view_control = ViewControlComponent(name='View_Control')# is_enabled = False)
self._view_control.main_layer = AddLayerMode(self._view_control, Layer(prev_track_button=self._button[24],
next_track_button= self._button[25],
next_scene_button=self._button[27],
prev_scene_button = self._button[26]))
#self._view_control.set_enabled(False)
self._view_control.selector_layer = AddLayerMode(self._view_control, Layer(priority = 8,
prev_track_button = self._grid[12],
next_track_button = self._grid[13],
next_scene_button = self._grid[15],
prev_scene_button = self._grid[14]))
def _setup_modes(self):
main_buttons=CompoundMode(self._mixer.main_buttons_layer, self._mixer.stop_layer, self._transport, self._send_reset, self._session.nav_layer)
main_buttons_instrument=CompoundMode(self._mixer.main_buttons_layer, self._recorder, self._view_control.main_layer)
main_faders=CompoundMode(self._mixer.main_faders_layer, self._mixer.master_fader_layer)
bottom_buttons=CompoundMode(self._mixer.instrument_buttons_layer, self._recorder, self._view_control.main_layer)
self._instrument._main_modes = ModesComponent(name = 'InstrumentModes')
self._instrument._main_modes.add_mode('disabled', [main_buttons_instrument, main_faders, self._mixer.main_knobs_layer, self._device, self._session, self._recorder, self._view_control.main_layer, self._send_reset, self._session.nav_layer,])
self._instrument._main_modes.add_mode('drumpad', [self._instrument._drumpad.main_layer, main_buttons_instrument, self._send_reset, self._session.nav_layer])
self._instrument._main_modes.add_mode('drumpad_split', [self._instrument._drumpad.split_layer, self._send_reset, self._session.nav_layer])
self._instrument._main_modes.add_mode('drumpad_sequencer', [self._instrument._drumpad.sequencer_layer, bottom_buttons])
self._instrument._main_modes.add_mode('drumpad_shifted', [self._instrument._drumpad.main_layer, self._instrument.drumpad_shift_layer, main_buttons_instrument, self._recorder, self._view_control.main_layer])
self._instrument._main_modes.add_mode('drumpad_split_shifted', [self._instrument._drumpad.split_layer, self._instrument.drumpad_shift_layer, bottom_buttons, self._recorder, self._view_control.main_layer])
self._instrument._main_modes.add_mode('drumpad_sequencer_shifted', [self._instrument._drumpad.sequencer_shift_layer, self._instrument.drumpad_shift_layer, self._recorder, self._view_control.main_layer])
示例13: Launchkey_MK2
# 需要导入模块: from _Framework.ModesComponent import ModesComponent [as 别名]
# 或者: from _Framework.ModesComponent.ModesComponent import add_mode [as 别名]
class Launchkey_MK2(OptimizedControlSurface):
identity_request_delay = 0.5
def __init__(self, c_instance, *a, **k):
super(Launchkey_MK2, self).__init__(c_instance=c_instance, *a, **k)
self._is_25_key_model = False
self._is_in_control_on = True
with self.component_guard():
self._skin = make_skin()
with inject(skin=const(self._skin)).everywhere():
self._create_controls()
self._request_task = self._tasks.add(Task.sequence(Task.wait(self.identity_request_delay), Task.run(self._send_identity_request)))
self._request_task.kill()
def _create_controls(self):
self._encoders = ButtonMatrixElement(rows=[[ make_encoder(identifier, name='Encoder_%d' % (index,)) for index, identifier in enumerate(xrange(21, 29)) ]])
self._top_pad_row = ButtonMatrixElement(rows=[[ make_button(identifier, name='Pad_0_%d' % (index,)) for index, identifier in enumerate(xrange(96, 104)) ]])
self._bottom_pad_row_raw = [ make_button(identifier, name='Pad_1_%d' % (index,)) for index, identifier in enumerate(xrange(112, 120)) ]
self._bottom_pad_row = ButtonMatrixElement(rows=[self._bottom_pad_row_raw])
self._top_launch_button = make_button(104, name='Scene_Launch_Button')
self._bottom_launch_button = make_button(120, name='Stop_All_Clips_Button')
self._scene_up_button = make_button(112, MIDI_CC_TYPE, name='Scene_Up_Button')
self._scene_down_button = make_button(113, MIDI_CC_TYPE, name='Scene_Down_Button')
self._stop_button = make_button(114, MIDI_CC_TYPE, name='Stop_Button')
self._play_button = make_button(115, MIDI_CC_TYPE, name='Play_Button')
self._loop_button = make_button(116, MIDI_CC_TYPE, name='Loop_Button')
self._record_button = make_button(117, MIDI_CC_TYPE, name='Record_Button')
self._sliders = ButtonMatrixElement(rows=[[ make_slider(identifier, name='Slider_%d' % (index,)) for index, identifier in enumerate(xrange(41, 49)) ]])
self._master_slider = make_slider(7, name='Master_Slider')
self._25_key_slider = make_slider(7, name='Slider', channel=0)
self._mute_buttons_raw = [ make_button(identifier, MIDI_CC_TYPE, name='Mute_Button_%d' % (index,)) for index, identifier in enumerate(xrange(51, 59)) ]
self._mute_buttons = ButtonMatrixElement(rows=[self._mute_buttons_raw])
self._master_button = make_button(59, MIDI_CC_TYPE, name='Master_Button')
self._track_left_button = make_button(102, MIDI_CC_TYPE, name='Track_Left_Button')
self._track_right_button = make_button(103, MIDI_CC_TYPE, name='Track_Right_Button')
self._device_mode_button = self._bottom_pad_row_raw[0]
self._pan_mode_button = self._bottom_pad_row_raw[1]
self._send_mode_buttons = dict()
for index in xrange(consts.MAX_SENDS):
setattr(self, '_send_%d_button' % (index,), self._bottom_pad_row_raw[index + 2])
self._send_mode_buttons['send_%d_mode_button' % (index,)] = getattr(self, '_send_%d_button' % (index,))
self._extended_mode_button = make_button(12, name='Dummy_Extended_Mode_Button')
self._extended_mode_button.add_value_listener(nop)
self._encoder_incontrol_button = make_button(13, is_momentary=False, name='Encoder_InControl_Button')
self._encoder_incontrol_button.add_value_listener(nop)
self._slider_incontrol_button = make_button(14, is_momentary=False, name='Fader_InControl_Button')
self._slider_incontrol_button.add_value_listener(nop)
self._pad_incontrol_button = make_button(15, is_momentary=False, name='Pad_InControl_Button')
self._pad_incontrol_button.add_value_listener(self._update_pads)
self._encoder_incontrol_button2 = make_button(16, name='Encoder_InControl_Button')
self._pad_in_control_status_button = make_button(11, name='Dummy_InControl_Button')
def _create_session(self):
self._session = SessionComponent(name='Session', is_enabled=False, num_tracks=self._top_pad_row.width(), num_scenes=self._top_pad_row.height(), enable_skinning=True, layer=Layer(clip_launch_buttons=self._top_pad_row, scene_launch_buttons=ButtonMatrixElement(rows=[[self._top_launch_button]]), stop_track_clip_buttons=self._bottom_pad_row, stop_all_clips_button=self._bottom_launch_button))
self._session.set_rgb_mode(CLIP_COLOR_TABLE, RGB_COLOR_TABLE)
self._session.set_mixer(self._mixer)
self._session.set_enabled(True)
def _setup_navigation(self):
self._session_navigation = SessionNavigationComponent(is_enabled=False, name='Session_Navigation', layer=Layer(next_track_button=self._track_right_button, prev_track_button=self._track_left_button, next_scene_button=self._scene_down_button, prev_scene_button=self._scene_up_button))
self._session_navigation.set_enabled(True)
def _create_transport(self):
self._transport = TransportComponent(is_enabled=False, name='Transport', layer=Layer(play_button=self._play_button, stop_button=self._stop_button, loop_button=self._loop_button, record_button=self._record_button))
self._transport.set_enabled(True)
def _create_mixer(self):
mixer_volume_layer = None
if self._is_25_key_model:
mixer_volume_layer = Layer(volume_control=self._25_key_slider)
else:
mixer_volume_layer = Layer(volume_controls=self._sliders)
self._mixer = MixerComponent(is_enabled=False, name='Mixer', num_tracks=self._sliders.width(), layer=mixer_volume_layer)
if not self._is_25_key_model:
self._mixer.master_strip().layer = Layer(volume_control=self._master_slider)
self._mixer.set_enabled(True)
self._mute_button_modes = ModesComponent()
mute_mode = AddLayerMode(self._mixer, Layer(mute_buttons=self._mute_buttons))
solo_mode = AddLayerMode(self._mixer, Layer(solo_buttons=self._mute_buttons))
self._mute_button_modes.add_mode('mute_mode', mute_mode)
self._mute_button_modes.add_mode('solo_mode', solo_mode, behaviour=CancellableBehaviour())
self._mute_button_modes.layer = Layer(solo_mode_button=self._master_button)
self._mute_button_modes.selected_mode = 'mute_mode'
self._mute_button_modes.set_enabled(True)
def _create_device(self):
self._device = DeviceComponent(name='Device', is_enabled=False, device_selection_follows_track_selection=True)
self.set_device_component(self._device)
self._device.set_enabled(True)
def _create_background(self):
self._background = BackgroundComponent(name='BackgroundComponent')
def _create_encoder_modes(self):
self._encoder_modes = DisablingModesComponent()
self._encoder_modes.default_behaviour = mixin(SkinableBehaviourMixin, ImmediateBehaviour)()
device_mode = LayerMode(self._device, Layer(parameter_controls=self._encoders, bank_buttons=self._top_pad_row))
pan_mode = AddLayerMode(self._mixer, Layer(pan_controls=self._encoders))
sends_mode = AddLayerMode(self._mixer, Layer(send_controls=self._encoders))
#.........这里部分代码省略.........
示例14: Crate
# 需要导入模块: from _Framework.ModesComponent import ModesComponent [as 别名]
# 或者: from _Framework.ModesComponent.ModesComponent import add_mode [as 别名]
#.........这里部分代码省略.........
def _setup_next_buttons(self):
self._next_a_button = FireNextClipComponent()
self._next_a_button.set_track('SET A')
self._next_a_button.layer = Layer(button = self._next_button[0])
self._next_b_button = FireNextClipComponent()
self._next_b_button.set_track('SET B')
self._next_b_button.layer = Layer(button = self._next_button[1])
def _setup_tempo(self):
self._on_tempo_changed.subject = self.song()
self._on_tempo_changed()
@subject_slot('value')
def _on_tempo_slider_value(self, value):
self.song().tempo = ((value/127.)*979.)+20.
@subject_slot('tempo')
def _on_tempo_changed(self, *a, **k):
debug('on tempo changed:', self.song().tempo)
new_tempo = self.song().tempo
#self._on_tempo_slider_value.subject and self._on_tempo_slider_value.subject.send_value(((new_tempo-20)/979)*127)
self.send_tempo('Tempo '+str(new_tempo))
def _setup_modes(self):
next_buttons = CompoundMode(self._next_a_button, self._next_a_button)
self._main_modes = ModesComponent(name = 'MainModes')
self._main_modes.add_mode('disabled', None)
self._main_modes.add_mode('left_session', [self._left_session, next_buttons])
self._main_modes.add_mode('right_session', [self._right_session, next_buttons])
self._main_modes.add_mode('set_session', [self._left_set_session, self._right_set_session, next_buttons])
self._main_modes.layer = Layer(priority = 6, left_session_button = self._crate_button[0], right_session_button = self._crate_button[1], set_session_button = self._crate_button[2])
self._main_modes.selected_mode = 'set_session'
self._main_modes.set_enabled(True)
#self._next_a_button.set_enabled(True)
#self._next_b_button.set_enabled(True)
def _create_fallback_control_owner(self):
self.register_disconnectable(SimpleLayerOwner(layer=Layer(_matrix=self._matrix, priority=0)))
def update_display(self):
super(Crate, self).update_display()
self._timer = (self._timer + 1) % 256
self.flash()
def flash(self):
if(self.flash_status > 0):
for control in self.controls:
if isinstance(control, MonoButtonElement):
control.flash(self._timer)
@subject_slot('appointed_device')
def _on_device_changed(self):
debug('appointed device changed, script')
示例15: APC40_MkII
# 需要导入模块: from _Framework.ModesComponent import ModesComponent [as 别名]
# 或者: from _Framework.ModesComponent.ModesComponent import add_mode [as 别名]
#.........这里部分代码省略.........
self._master_volume_control = make_slider(0, 14, name='Master_Volume_Control')
self._prehear_control = make_encoder(0, 47, name='Prehear_Volume_Control')
self._crossfader_control = make_slider(0, 15, name='Crossfader')
self._raw_select_buttons = [ make_on_off_button(channel, 51, name='%d_Select_Button' % channel) for channel in xrange(NUM_TRACKS) ]
self._arm_buttons = ButtonMatrixElement(rows=[[ make_on_off_button(channel, 48, name='%d_Arm_Button' % channel) for channel in xrange(NUM_TRACKS) ]])
self._solo_buttons = ButtonMatrixElement(rows=[[ make_on_off_button(channel, 49, name='%d_Solo_Button' % channel) for channel in xrange(NUM_TRACKS) ]])
self._mute_buttons = ButtonMatrixElement(rows=[[ make_on_off_button(channel, 50, name='%d_Mute_Button' % channel) for channel in xrange(NUM_TRACKS) ]])
self._crossfade_buttons = ButtonMatrixElement(rows=[[ make_button(channel, 66, name='%d_Crossfade_Button' % channel, skin=self._crossfade_button_skin) for channel in xrange(NUM_TRACKS) ]])
self._select_buttons = ButtonMatrixElement(rows=[self._raw_select_buttons])
self._master_select_button = make_on_off_button(channel=0, identifier=80, name='Master_Select_Button')
self._send_select_buttons = ButtonMatrixElement(rows=[[ ComboElement(button, modifiers=[self._sends_button]) for button in self._raw_select_buttons ]])
self._quantization_buttons = ButtonMatrixElement(rows=[[ ComboElement(button, modifiers=[self._shift_button]) for button in self._raw_select_buttons ]])
self._metronome_button = make_on_off_button(0, 90, name='Metronome_Button')
self._play_button = make_on_off_button(0, 91, name='Play_Button')
self._record_button = make_on_off_button(0, 93, name='Record_Button')
self._session_record_button = make_on_off_button(0, 102, name='Session_Record_Button')
self._nudge_down_button = make_button(0, 100, name='Nudge_Down_Button')
self._nudge_up_button = make_button(0, 101, name='Nudge_Up_Button')
self._tap_tempo_button = make_button(0, 99, name='Tap_Tempo_Button')
self._tempo_control = make_encoder(0, 13, name='Tempo_Control')
self._device_controls = ButtonMatrixElement(rows=[[ make_ring_encoder(16 + index, 24 + index, name='Device_Control_%d' % index) for index in xrange(8) ]])
self._device_control_buttons_raw = [ make_on_off_button(0, 58 + index) for index in xrange(8) ]
self._device_bank_buttons = ButtonMatrixElement(rows=[[ DeviceBankButtonElement(button, modifiers=[self._shift_button]) for button in self._device_control_buttons_raw ]])
self._device_prev_bank_button = self._device_control_buttons_raw[2]
self._device_prev_bank_button.name = 'Device_Prev_Bank_Button'
self._device_next_bank_button = self._device_control_buttons_raw[3]
self._device_next_bank_button.name = 'Device_Next_Bank_Button'
self._device_on_off_button = self._device_control_buttons_raw[4]
self._device_on_off_button.name = 'Device_On_Off_Button'
self._device_lock_button = self._device_control_buttons_raw[5]
self._device_lock_button.name = 'Device_Lock_Button'
self._prev_device_button = self._device_control_buttons_raw[0]
self._prev_device_button.name = 'Prev_Device_Button'
self._next_device_button = self._device_control_buttons_raw[1]
self._next_device_button.name = 'Next_Device_Button'
self._clip_device_button = self._device_control_buttons_raw[6]
self._clip_device_button.name = 'Clip_Device_Button'
self._detail_view_button = self._device_control_buttons_raw[7]
self._detail_view_button.name = 'Detail_View_Button'
self._foot_pedal_button = DoublePressElement(make_pedal_button(64, name='Foot_Pedal'))
self._shifted_matrix = ButtonMatrixElement(rows=recursive_map(self._with_shift, self._matrix_rows_raw))
self._shifted_scene_buttons = ButtonMatrixElement(rows=[[ self._with_shift(button) for button in self._scene_launch_buttons_raw ]])
def _create_bank_toggle(self):
self._bank_toggle = BankToggleComponent(is_enabled=False, layer=Layer(bank_toggle_button=self._bank_button))
def _create_session(self):
def when_bank_on(button):
return self._bank_toggle.create_toggle_element(on_control=button)
def when_bank_off(button):
return self._bank_toggle.create_toggle_element(off_control=button)
self._session = SessionComponent(NUM_TRACKS, NUM_SCENES, auto_name=True, is_enabled=False, enable_skinning=True, layer=Layer(track_bank_left_button=when_bank_off(self._left_button), track_bank_right_button=when_bank_off(self._right_button), scene_bank_up_button=when_bank_off(self._up_button), scene_bank_down_button=when_bank_off(self._down_button), page_left_button=when_bank_on(self._left_button), page_right_button=when_bank_on(self._right_button), page_up_button=when_bank_on(self._up_button), page_down_button=when_bank_on(self._down_button), stop_track_clip_buttons=self._stop_buttons, stop_all_clips_button=self._stop_all_button, scene_launch_buttons=self._scene_launch_buttons, clip_launch_buttons=self._session_matrix))
clip_color_table = colors.CLIP_COLOR_TABLE.copy()
clip_color_table[16777215] = 119
self._session.set_rgb_mode(clip_color_table, colors.RGB_COLOR_TABLE)
self._session_zoom = SessionZoomingComponent(self._session, name='Session_Overview', enable_skinning=True, is_enabled=False, layer=Layer(button_matrix=self._shifted_matrix, nav_left_button=self._with_shift(self._left_button), nav_right_button=self._with_shift(self._right_button), nav_up_button=self._with_shift(self._up_button), nav_down_button=self._with_shift(self._down_button), scene_bank_buttons=self._shifted_scene_buttons))
def _create_mixer(self):
self._mixer = MixerComponent(NUM_TRACKS, auto_name=True, is_enabled=False, invert_mute_feedback=True, layer=Layer(volume_controls=self._volume_controls, arm_buttons=self._arm_buttons, solo_buttons=self._solo_buttons, mute_buttons=self._mute_buttons, shift_button=self._shift_button, track_select_buttons=self._select_buttons, prehear_volume_control=self._prehear_control, crossfader_control=self._crossfader_control, crossfade_buttons=self._crossfade_buttons))
self._mixer.master_strip().layer = Layer(volume_control=self._master_volume_control, select_button=self._master_select_button)
self._encoder_mode = ModesComponent(name='Encoder_Mode', is_enabled=False)
self._encoder_mode.default_behaviour = ImmediateBehaviour()
self._encoder_mode.add_mode('pan', [AddLayerMode(self._mixer, Layer(pan_controls=self._mixer_encoders))])
self._encoder_mode.add_mode('sends', [AddLayerMode(self._mixer, Layer(send_controls=self._mixer_encoders)), DelayMode(AddLayerMode(self._mixer, Layer(send_select_buttons=self._send_select_buttons)))])
self._encoder_mode.add_mode('user', [AddLayerMode(self._mixer, Layer(user_controls=self._mixer_encoders))])
self._encoder_mode.layer = Layer(pan_button=self._pan_button, sends_button=self._sends_button, user_button=self._user_button)
self._encoder_mode.selected_mode = 'pan'
def _create_transport(self):
self._transport = TransportComponent(name='Transport', is_enabled=False, layer=Layer(shift_button=self._shift_button, play_button=self._play_button, stop_button=ComboElement(self._play_button, modifiers=[self._shift_button]), record_button=self._record_button, metronome_button=self._metronome_button, tap_tempo_button=self._tap_tempo_button, nudge_down_button=self._nudge_down_button, nudge_up_button=self._nudge_up_button, tempo_encoder=self._tempo_control), play_toggle_model_transform=lambda v: v)
def _create_device(self):
self._device = DeviceComponent(name='Device', is_enabled=False, layer=Layer(parameter_controls=self._device_controls, bank_buttons=self._device_bank_buttons, bank_prev_button=self._device_prev_bank_button, bank_next_button=self._device_next_bank_button, on_off_button=self._device_on_off_button, lock_button=self._device_lock_button))
def _create_view_control(self):
self._view_control = DetailViewCntrlComponent(name='View_Control', is_enabled=False, layer=Layer(device_nav_left_button=self._prev_device_button, device_nav_right_button=self._next_device_button, device_clip_toggle_button=self._clip_device_button, detail_toggle_button=self._detail_view_button))
self._view_control.device_clip_toggle_button.pressed_color = 'DefaultButton.On'
def _create_quantization_selection(self):
self._quantization_selection = QuantizationComponent(name='Quantization_Selection', is_enabled=False, layer=Layer(quantization_buttons=self._quantization_buttons))
def _create_recording(self):
record_button = MultiElement(self._session_record_button, self._foot_pedal_button.single_press)
self._session_recording = SessionRecordingComponent(ClipCreator(), self._view_control, name='Session_Recording', is_enabled=False, layer=Layer(new_button=self._foot_pedal_button.double_press, record_button=record_button, _uses_foot_pedal=self._foot_pedal_button))
def _create_m4l_interface(self):
self._m4l_interface = M4LInterfaceComponent(controls=self.controls, component_guard=self.component_guard, priority=1)
self.get_control_names = self._m4l_interface.get_control_names
self.get_control = self._m4l_interface.get_control
self.grab_control = self._m4l_interface.grab_control
self.release_control = self._m4l_interface.release_control
def get_matrix_button(self, column, row):
return self._matrix_rows_raw[row][column]
def _product_model_id_byte(self):
return 41