本文整理汇总了Python中MainSelectorComponent.MainSelectorComponent.channel_for_current_mode方法的典型用法代码示例。如果您正苦于以下问题:Python MainSelectorComponent.channel_for_current_mode方法的具体用法?Python MainSelectorComponent.channel_for_current_mode怎么用?Python MainSelectorComponent.channel_for_current_mode使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类MainSelectorComponent.MainSelectorComponent
的用法示例。
在下文中一共展示了MainSelectorComponent.channel_for_current_mode方法的8个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: Launchpad
# 需要导入模块: from MainSelectorComponent import MainSelectorComponent [as 别名]
# 或者: from MainSelectorComponent.MainSelectorComponent import channel_for_current_mode [as 别名]
#.........这里部分代码省略.........
self.set_highlighting_session_component(self._selector.session_component())
self._suppress_session_highlight = False
#self.set_suppress_rebuild_requests(False)
" DISCONNECTOR "
def disconnect(self):
self._suppress_send_midi = True
for control in self.controls:
if isinstance(control, ConfigurableButtonElement):
control.remove_value_listener(self._button_value)
self._selector = None
self._user_byte_write_button.remove_value_listener(self._user_byte_value)
self._config_button.remove_value_listener(self._config_value)
ControlSurface.disconnect(self)
self._suppress_send_midi = False
self._config_button.send_value(32)
self._config_button.send_value(0)
self._config_button = None
self._user_byte_write_button.send_value(0)
self._user_byte_write_button = None
" RETURN THE SESSION COMPONENT SHOWING THE RING IN LIVE SESSION "
def highlighting_session_component(self):
return self._selector.session_component()
" REFRESH "
def refresh_state(self):
ControlSurface.refresh_state(self)
self.schedule_message(5, self._update_hardware)
" SYSEX HANDLING "
def handle_sysex(self, midi_bytes):
if (len(midi_bytes) == 8):
if (midi_bytes[1:5] == (0, 32, 41, 6)):
response = long(midi_bytes[5])
response += (long(midi_bytes[6]) << 8)
if (response == Live.Application.encrypt_challenge2(self._challenge)):
self._suppress_send_midi = False
self.set_enabled(True)
" MIDI MAP "
def build_midi_map(self, midi_map_handle):
ControlSurface.build_midi_map(self, midi_map_handle)
if (self._selector.mode_index == 1):
new_channel = self._selector.channel_for_current_mode()
for note in DRUM_NOTES:
self._translate_message(MIDI_NOTE_TYPE, note, 0, note, new_channel)
" SEND THE MIDI STUFF "
def _send_midi(self, midi_bytes, optimized = None):
sent_successfully = False
if (not self._suppress_send_midi):
sent_successfully = ControlSurface._send_midi(self, midi_bytes, optimized=optimized)
return sent_successfully
" UPDATE THE HARDWARE "
def _update_hardware(self):
self._suppress_send_midi = False
self._wrote_user_byte = True
self._user_byte_write_button.send_value(1)
self._suppress_send_midi = True
self.set_enabled(False)
self._suppress_send_midi = False
self._send_challenge()
" CHALLANGE SEND "
def _send_challenge(self):
for index in range(4):
challenge_byte = ((self._challenge >> (8 * index)) & 127)
self._send_midi((176, (17 + index), challenge_byte))
" USER BYTE STUFF "
def _user_byte_value(self, value):
if not value in range(128):
raise AssertionError
enabled = self._wrote_user_byte or value == 1
self._control_is_with_automap = not enabled
self._suppress_send_midi = self._control_is_with_automap
if not self._control_is_with_automap:
for control in self.controls:
if isinstance(control, ConfigurableButtonElement):
control.set_force_next_value()
self._selector.set_mode(0)
self.set_enabled(enabled)
self._suppress_send_midi = False
else:
self._wrote_user_byte = False
" BUTTON VALUE "
def _button_value(self, value):
assert (value in range(128))
" CONFIG VALUE "
def _config_value(self, value):
assert (value in range(128))
" SET THE SESSION HIGHLIGHT "
def _set_session_highlight(self, track_offset, scene_offset, width, height, include_return_tracks):
if (not self._suppress_session_highlight):
ControlSurface._set_session_highlight(self, track_offset, scene_offset, width, height, include_return_tracks)
示例2: Launchpad
# 需要导入模块: from MainSelectorComponent import MainSelectorComponent [as 别名]
# 或者: from MainSelectorComponent.MainSelectorComponent import channel_for_current_mode [as 别名]
#.........这里部分代码省略.........
def _combine_active_instances():
support_devices = False
for instance in Launchpad._active_instances:
support_devices |= (instance._device_component != None)
offset = 0
for instance in Launchpad._active_instances:
instance._activate_combination_mode(offset, support_devices)
offset += instance._selector._session.width()
_combine_active_instances = staticmethod(_combine_active_instances)
def _activate_combination_mode(self, track_offset, support_devices):
if(LINK_STEPSEQ):
self._selector._stepseq.link_with_step_offset(track_offset)
if(LINK_SESSION):
self._selector._session.link_with_track_offset(track_offset)
def _do_combine(self):
if (DO_COMBINE and (self not in Launchpad._active_instances)):
Launchpad._active_instances.append(self)
Launchpad._combine_active_instances()
def _do_uncombine(self):
if self in Launchpad._active_instances:
Launchpad._active_instances.remove(self)
if(LINK_SESSION):
self._selector._session.unlink()
if(LINK_STEPSEQ):
self._selector._stepseq.unlink()
Launchpad._combine_active_instances()
def refresh_state(self):
ControlSurface.refresh_state(self)
self.schedule_message(5, self._update_hardware)
def handle_sysex(self, midi_bytes):
if len(midi_bytes) == 8:
if midi_bytes[1:5] == (0, 32, 41, 6):
response = long(midi_bytes[5])
response += long(midi_bytes[6]) << 8
if response == Live.Application.encrypt_challenge2(self._challenge):
self._suppress_send_midi = False
self.set_enabled(True)
def build_midi_map(self, midi_map_handle):
ControlSurface.build_midi_map(self, midi_map_handle)
if self._selector.mode_index == 1:
new_channel = self._selector.channel_for_current_mode()
for note in DRUM_NOTES:
self._translate_message(MIDI_NOTE_TYPE, note, 0, note, new_channel)
def _send_midi(self, midi_bytes):
sent_successfully = False
if not self._suppress_send_midi:
sent_successfully = ControlSurface._send_midi(self, midi_bytes)
return sent_successfully
def _update_hardware(self):
self._suppress_send_midi = False
self._wrote_user_byte = True
self._user_byte_write_button.send_value(1)
self._suppress_send_midi = True
self.set_enabled(False)
self._suppress_send_midi = False
self._send_challenge()
def _send_challenge(self):
for index in range(4):
challenge_byte = self._challenge >> 8 * index & 127
self._send_midi((176, 17 + index, challenge_byte))
def _user_byte_value(self, value):
assert (value in range(128))
if (not self._wrote_user_byte):
enabled = (value == 1)
self._control_is_with_automap = (not enabled)
self._suppress_send_midi = self._control_is_with_automap
if not self._control_is_with_automap:
for control in self.controls:
if isinstance(control, ConfigurableButtonElement):
control.set_force_next_value()
self._selector.set_mode(0)
self.set_enabled(enabled)
self._suppress_send_midi = False
else:
self._wrote_user_byte = False
def _button_value(self, value):
assert (value in range(128))
def _config_value(self, value):
assert (value in range(128))
def _set_session_highlight(self, track_offset, scene_offset, width, height, include_return_tracks):
if not self._suppress_session_highlight:
ControlSurface._set_session_highlight(self, track_offset, scene_offset, width, height, include_return_tracks)
示例3: Launchpad
# 需要导入模块: from MainSelectorComponent import MainSelectorComponent [as 别名]
# 或者: from MainSelectorComponent.MainSelectorComponent import channel_for_current_mode [as 别名]
#.........这里部分代码省略.........
if(Settings.SESSION__LINK):
self._selector._session.unlink()
if(Settings.STEPSEQ__LINK_WITH_SESSION):
self._selector._stepseq.unlink()
Launchpad._combine_active_instances()
def refresh_state(self):
ControlSurface.refresh_state(self)
self.schedule_message(5, self._update_hardware)
def handle_sysex(self, midi_bytes):
# MK2 has different challenge and params
if len(midi_bytes) == 10 and midi_bytes[:7] == (240, 0, 32, 41, 2, 24, 64):
response = long(midi_bytes[7])
response += long(midi_bytes[8]) << 8
if response == Live.Application.encrypt_challenge2(self._challenge):
self._mk2_rgb = True
self.log_message("Challenge Response ok (mk2)")
self._suppress_send_midi = False
self.set_enabled(True)
self.init()
#MK1 Challenge
elif len(midi_bytes) == 8 and midi_bytes[1:5] == (0, 32, 41, 6):
response = long(midi_bytes[5])
response += long(midi_bytes[6]) << 8
if response == Live.Application.encrypt_challenge2(self._challenge):
self.log_message("Challenge Response ok (mk1)")
self._mk2_rgb = False
self.init()
self._suppress_send_midi = False
self.set_enabled(True)
else:
ControlSurface.handle_sysex(self,midi_bytes)
def build_midi_map(self, midi_map_handle):
ControlSurface.build_midi_map(self, midi_map_handle)
if self._selector!=None:
if self._selector._main_mode_index==2 or self._selector._main_mode_index==1:
mode = Settings.USER_MODES[ (self._selector._main_mode_index-1) * 3 + self._selector._sub_mode_index[self._selector._main_mode_index] ]
#self._selector.mode_index == 1:
#if self._selector._sub_mode_index[self._selector._mode_index] > 0: # disable midi map rebuild for instrument mode to prevent light feedback errors
if mode != "instrument":
new_channel = self._selector.channel_for_current_mode()
for note in self._drum_notes:
self._translate_message(MIDI_NOTE_TYPE, note, 0, note, new_channel)
def _send_midi(self, midi_bytes, optimized=None):
sent_successfully = False
if not self._suppress_send_midi:
sent_successfully = ControlSurface._send_midi(self, midi_bytes, optimized=optimized)
return sent_successfully
def _update_hardware(self):
self._suppress_send_midi = False
if self._user_byte_write_button != None:
self._user_byte_write_button.send_value(1)
self._wrote_user_byte = True
self._suppress_send_midi = True
self.set_enabled(False)
self._suppress_send_midi = False
self._send_challenge()
def _send_challenge(self):
# send challenge for all models to allow to detect which one is actually plugged
# mk2
challenge_bytes = tuple([ self._challenge >> 8 * index & 127 for index in xrange(4) ])
self._send_midi((240, 0, 32, 41, 2, 24, 64) + challenge_bytes + (247,))
# mk1's
for index in range(4):
challenge_byte = self._challenge >> 8 * index & 127
self._send_midi((176, 17 + index, challenge_byte))
def _user_byte_value(self, value):
assert (value in range(128))
if not self._wrote_user_byte:
enabled = (value == 1)
self._control_is_with_automap = not enabled
self._suppress_send_midi = self._control_is_with_automap
if not self._control_is_with_automap:
for control in self.controls:
if isinstance(control, ConfigurableButtonElement):
control.force_next_send()
self._selector.set_mode(0)
self.set_enabled(enabled)
self._suppress_send_midi = False
else:
self._wrote_user_byte = False
def _button_value(self, value):
assert value in range(128)
def _config_value(self, value):
assert value in range(128)
def _set_session_highlight(self, track_offset, scene_offset, width, height, include_return_tracks):
if not self._suppress_session_highlight:
ControlSurface._set_session_highlight(self, track_offset, scene_offset, width, height, include_return_tracks)
示例4: Launchpad
# 需要导入模块: from MainSelectorComponent import MainSelectorComponent [as 别名]
# 或者: from MainSelectorComponent.MainSelectorComponent import channel_for_current_mode [as 别名]
#.........这里部分代码省略.........
self._selector._session.link_with_track_offset(track_offset)
def _do_combine(self):
if (DO_COMBINE and (self not in Launchpad._active_instances)):
Launchpad._active_instances.append(self)
Launchpad._combine_active_instances()
def _do_uncombine(self):
if self in Launchpad._active_instances:
Launchpad._active_instances.remove(self)
if(Settings.SESSION__LINK):
self._selector._session.unlink()
if(Settings.STEPSEQ__LINK_WITH_SESSION):
self._selector._stepseq.unlink()
Launchpad._combine_active_instances()
def refresh_state(self):
ControlSurface.refresh_state(self)
self.schedule_message(5, self._update_hardware)
def handle_sysex(self, midi_bytes):
if self._mk2:
# mk2 has different challenge and params
if len(midi_bytes) == 10:
if midi_bytes[:7] == (240, 0, 32, 41, 2, 24, 64):
response = long(midi_bytes[7])
response += long(midi_bytes[8]) << 8
if response == Live.Application.encrypt_challenge2(self._challenge):
# self.log_message("Challenge Response ok")
self._suppress_send_midi = False
self.set_enabled(True)
else:
if len(midi_bytes) == 8:
if midi_bytes[1:5] == (0, 32, 41, 6):
response = long(midi_bytes[5])
response += long(midi_bytes[6]) << 8
if response == Live.Application.encrypt_challenge2(self._challenge):
self._suppress_send_midi = False
self.set_enabled(True)
def build_midi_map(self, midi_map_handle):
ControlSurface.build_midi_map(self, midi_map_handle)
if self._selector.mode_index == 1:
if self._selector._sub_mode_index[self._selector._mode_index] > 0: # disable midi map rebuild for instrument mode to prevent light feedback errors
new_channel = self._selector.channel_for_current_mode()
# self.log_message(str(new_channel))
for note in self.drum_notes:
self._translate_message(MIDI_NOTE_TYPE, note, 0, note, new_channel)
def _send_midi(self, midi_bytes, optimized=None):
sent_successfully = False
if not self._suppress_send_midi:
sent_successfully = ControlSurface._send_midi(self, midi_bytes, optimized=optimized)
return sent_successfully
def _update_hardware(self):
self._suppress_send_midi = False
self._wrote_user_byte = True
self._user_byte_write_button.send_value(1)
self._suppress_send_midi = True
self.set_enabled(False)
self._suppress_send_midi = False
self._send_challenge()
def _send_challenge(self):
if self._mk2:
challenge_bytes = tuple([ self._challenge >> 8 * index & 127 for index in xrange(4) ])
self._send_midi((240, 0, 32, 41, 2, 24, 64) + challenge_bytes + (247,))
else:
for index in range(4):
challenge_byte = self._challenge >> 8 * index & 127
self._send_midi((176, 17 + index, challenge_byte))
def _user_byte_value(self, value):
assert (value in range(128))
if not self._wrote_user_byte:
enabled = (value == 1)
self._control_is_with_automap = not enabled
self._suppress_send_midi = self._control_is_with_automap
if not self._control_is_with_automap:
for control in self.controls:
if isinstance(control, ConfigurableButtonElement):
control.set_force_next_value()
self._selector.set_mode(0)
self.set_enabled(enabled)
self._suppress_send_midi = False
else:
self._wrote_user_byte = False
def _button_value(self, value):
assert value in range(128)
def _config_value(self, value):
assert value in range(128)
def _set_session_highlight(self, track_offset, scene_offset, width, height, include_return_tracks):
if not self._suppress_session_highlight:
ControlSurface._set_session_highlight(self, track_offset, scene_offset, width, height, include_return_tracks)
示例5: Launchpad
# 需要导入模块: from MainSelectorComponent import MainSelectorComponent [as 别名]
# 或者: from MainSelectorComponent.MainSelectorComponent import channel_for_current_mode [as 别名]
class Launchpad(ControlSurface):
""" Script for Novation's Launchpad Controller """
def __init__(self, c_instance):
ControlSurface.__init__(self, c_instance)
with self.component_guard():
self._suppress_send_midi = True
self._suppress_session_highlight = True
is_momentary = True
self._suggested_input_port = 'Launchpad'
self._suggested_output_port = 'Launchpad'
self._control_is_with_automap = False
self._user_byte_write_button = ButtonElement(is_momentary, MIDI_CC_TYPE, 0, 16)
self._user_byte_write_button.name = 'User_Byte_Button'
self._user_byte_write_button.send_value(1)
self._user_byte_write_button.add_value_listener(self._user_byte_value)
self._wrote_user_byte = False
self._challenge = Live.Application.get_random_int(0, 400000000) & 2139062143
matrix = ButtonMatrixElement()
matrix.name = 'Button_Matrix'
for row in range(8):
button_row = []
for column in range(8):
button = ConfigurableButtonElement(is_momentary, MIDI_NOTE_TYPE, 0, row * 16 + column)
button.name = str(column) + '_Clip_' + str(row) + '_Button'
button_row.append(button)
matrix.add_row(tuple(button_row))
self._config_button = ButtonElement(is_momentary, MIDI_CC_TYPE, 0, 0, optimized_send_midi=False)
self._config_button.add_value_listener(self._config_value)
top_buttons = [ ConfigurableButtonElement(is_momentary, MIDI_CC_TYPE, 0, 104 + index) for index in range(8) ]
side_buttons = [ ConfigurableButtonElement(is_momentary, MIDI_NOTE_TYPE, 0, SIDE_NOTES[index]) for index in range(8) ]
top_buttons[0].name = 'Bank_Select_Up_Button'
top_buttons[1].name = 'Bank_Select_Down_Button'
top_buttons[2].name = 'Bank_Select_Left_Button'
top_buttons[3].name = 'Bank_Select_Right_Button'
top_buttons[4].name = 'Session_Button'
top_buttons[5].name = 'User1_Button'
top_buttons[6].name = 'User2_Button'
top_buttons[7].name = 'Mixer_Button'
side_buttons[0].name = 'Vol_Button'
side_buttons[1].name = 'Pan_Button'
side_buttons[2].name = 'SndA_Button'
side_buttons[3].name = 'SndB_Button'
side_buttons[4].name = 'Stop_Button'
side_buttons[5].name = 'Trk_On_Button'
side_buttons[6].name = 'Solo_Button'
side_buttons[7].name = 'Arm_Button'
self._selector = MainSelectorComponent(matrix, tuple(top_buttons), tuple(side_buttons), self._config_button)
self._selector.name = 'Main_Modes'
for control in self.controls:
if isinstance(control, ConfigurableButtonElement):
control.add_value_listener(self._button_value)
self.set_highlighting_session_component(self._selector.session_component())
self._suppress_session_highlight = False
def disconnect(self):
self._suppress_send_midi = True
for control in self.controls:
if isinstance(control, ConfigurableButtonElement):
control.remove_value_listener(self._button_value)
self._selector = None
self._user_byte_write_button.remove_value_listener(self._user_byte_value)
self._config_button.remove_value_listener(self._config_value)
ControlSurface.disconnect(self)
self._suppress_send_midi = False
self._config_button.send_value(32)
self._config_button.send_value(0)
self._config_button = None
self._user_byte_write_button.send_value(0)
self._user_byte_write_button = None
def refresh_state(self):
ControlSurface.refresh_state(self)
self.schedule_message(5, self._update_hardware)
def handle_sysex(self, midi_bytes):
if len(midi_bytes) == 8:
if midi_bytes[1:5] == (0, 32, 41, 6):
response = long(midi_bytes[5])
response += long(midi_bytes[6]) << 8
if response == Live.Application.encrypt_challenge2(self._challenge):
self._on_handshake_successful()
def _on_handshake_successful(self):
self._suppress_send_midi = False
self.set_enabled(True)
def build_midi_map(self, midi_map_handle):
ControlSurface.build_midi_map(self, midi_map_handle)
if self._selector.mode_index == 1:
new_channel = self._selector.channel_for_current_mode()
for note in DRUM_NOTES:
self._translate_message(MIDI_NOTE_TYPE, note, 0, note, new_channel)
def _send_midi(self, midi_bytes, optimized = None):
sent_successfully = False
#.........这里部分代码省略.........
示例6: LaunchMod
# 需要导入模块: from MainSelectorComponent import MainSelectorComponent [as 别名]
# 或者: from MainSelectorComponent.MainSelectorComponent import channel_for_current_mode [as 别名]
class LaunchMod(ControlSurface):
""" Script for Novation's Launchpad Controller """
def __init__(self, c_instance):
ControlSurface.__init__(self, c_instance)
with self.component_guard():
self._monomod_version = 'b995'
self._host_name = 'LaunchMod'
self._color_type = 'Launchpad'
self.hosts = []
self._timer = 0
self._suppress_send_midi = True
self._suppress_session_highlight = True
self._suppress_highlight = False
is_momentary = True
self._suggested_input_port = 'Launchpad'
self._suggested_output_port = 'Launchpad'
self._control_is_with_automap = False
self._user_byte_write_button = ButtonElement(is_momentary, MIDI_CC_TYPE, 0, 16)
self._user_byte_write_button.name = 'User_Byte_Button'
self._user_byte_write_button.send_value(1)
self._user_byte_write_button.add_value_listener(self._user_byte_value)
self._wrote_user_byte = False
self._challenge = Live.Application.get_random_int(0, 400000000) & 2139062143
matrix = ButtonMatrixElement()
matrix.name = 'Button_Matrix'
for row in range(8):
button_row = [ ConfigurableButtonElement(is_momentary, MIDI_NOTE_TYPE, 0, ((row * 16) + column), str(column) + '_Clip_' + str(row) + '_Button', self) for column in range(8) ]
matrix.add_row(tuple(button_row))
self._config_button = ButtonElement(is_momentary, MIDI_CC_TYPE, 0, 0, optimized_send_midi=False)
self._config_button.add_value_listener(self._config_value)
top_button_names = ['Bank_Select_Up_Button', 'Bank_Select_Down_Button', 'Bank_Select_Left_Button', 'Bank_Select_Right_Button', 'Session_Button', 'User1_Button', 'User2_Button', 'Mixer_Button']
side_button_names = ['Vol_Button', 'Pan_Button', 'SndA_Button', 'SndB_Button', 'Stop_Button', 'Trk_On_Button', 'Solo_Button', 'Arm_Button']
top_buttons = [ ConfigurableButtonElement(is_momentary, MIDI_CC_TYPE, 0, (104 + index), top_button_names[index], self) for index in range(8) ]
side_buttons = [ ConfigurableButtonElement(is_momentary, MIDI_NOTE_TYPE, 0, SIDE_NOTES[index], side_button_names[index], self) for index in range(8) ]
self._setup_monobridge()
self._setup_monomod()
self._selector = MainSelectorComponent(matrix, tuple(top_buttons), tuple(side_buttons), self._config_button, self)
self._selector.name = 'Main_Modes'
for control in self.controls:
if isinstance(control, MonoButtonElement):
control.add_value_listener(self._button_value)
self.set_highlighting_session_component(self._selector.session_component())
self._suppress_session_highlight = False
self.log_message("--------------= " + str(self._monomod_version) + " log opened =--------------") #Create entry in log file
def allow_updates(self, allow_updates):
for component in self.components:
component.set_allow_update(int(allow_updates!=0))
def disconnect(self):
self._suppress_send_midi = True
for control in self.controls:
if isinstance(control, ConfigurableButtonElement):
control.remove_value_listener(self._button_value)
self._selector = None
self._user_byte_write_button.remove_value_listener(self._user_byte_value)
self._config_button.remove_value_listener(self._config_value)
ControlSurface.disconnect(self)
self._suppress_send_midi = False
self._config_button.send_value(32)
self._config_button.send_value(0)
self._config_button = None
self._user_byte_write_button.send_value(0)
self._user_byte_write_button = None
def refresh_state(self):
ControlSurface.refresh_state(self)
self.schedule_message(5, self._update_hardware)
def handle_sysex(self, midi_bytes):
if len(midi_bytes) == 8:
if midi_bytes[1:5] == (0, 32, 41, 6):
response = long(midi_bytes[5])
response += long(midi_bytes[6]) << 8
if response == Live.Application.encrypt_challenge2(self._challenge):
self._suppress_send_midi = False
self.set_enabled(True)
def build_midi_map(self, midi_map_handle):
ControlSurface.build_midi_map(self, midi_map_handle)
if self._selector.mode_index == 1:
new_channel = self._selector.channel_for_current_mode()
for note in DRUM_NOTES:
self._translate_message(MIDI_NOTE_TYPE, note, 0, note, new_channel)
def _send_midi(self, midi_bytes, optimized = None):
sent_successfully = False
if not self._suppress_send_midi:
sent_successfully = ControlSurface._send_midi(self, midi_bytes, optimized=optimized)
return sent_successfully
def _update_hardware(self):
self._suppress_send_midi = False
self._wrote_user_byte = True
self._user_byte_write_button.send_value(1)
#.........这里部分代码省略.........
示例7: APCmini
# 需要导入模块: from MainSelectorComponent import MainSelectorComponent [as 别名]
# 或者: from MainSelectorComponent.MainSelectorComponent import channel_for_current_mode [as 别名]
#.........这里部分代码省略.........
def _combine_active_instances():
support_devices = False
for instance in APCmini._active_instances:
support_devices |= (instance._device_component != None)
offset = 0
for instance in APCmini._active_instances:
instance._activate_combination_mode(offset, support_devices)
offset += instance._selector._session.width()
_combine_active_instances = staticmethod(_combine_active_instances)
def _activate_combination_mode(self, track_offset, support_devices):
if(Settings.STEPSEQ__LINK_WITH_SESSION):
self._selector._stepseq.link_with_step_offset(track_offset)
if(Settings.SESSION__LINK):
self._selector._session.link_with_track_offset(track_offset)
def _do_combine(self):
if (DO_COMBINE and (self not in APCmini._active_instances)):
APCmini._active_instances.append(self)
APCmini._combine_active_instances()
def _do_uncombine(self):
if self in APCmini._active_instances:
APCmini._active_instances.remove(self)
if(Settings.SESSION__LINK):
self._selector._session.unlink()
if(Settings.STEPSEQ__LINK_WITH_SESSION):
self._selector._stepseq.unlink()
APCmini._combine_active_instances()
def refresh_state(self):
ControlSurface.refresh_state(self)
self.schedule_message(5, self._update_hardware)
def handle_sysex(self, midi_bytes):
# if len(midi_bytes) == 8:
# if midi_bytes[1:5] == (0, 32, 41, 6):
# response = long(midi_bytes[5])
# response += long(midi_bytes[6]) << 8
# if response == Live.Application.encrypt_challenge2(self._challenge):
self._suppress_send_midi = False
self.set_enabled(True)
def build_midi_map(self, midi_map_handle):
ControlSurface.build_midi_map(self, midi_map_handle)
if self._selector.mode_index == 1:
if self._selector._sub_mode_index[self._selector._mode_index] > 0: # disable midi map rebuild for instrument mode to prevent light feedback errors
new_channel = self._selector.channel_for_current_mode()
# self.log_message(str(new_channel))
# for note in DRUM_NOTES:
# self._translate_message(MIDI_NOTE_TYPE, note, 0, note, new_channel)
def _send_midi(self, midi_bytes, optimized=None):
sent_successfully = False
if not self._suppress_send_midi:
sent_successfully = ControlSurface._send_midi(self, midi_bytes, optimized=optimized)
return sent_successfully
def _update_hardware(self):
self._suppress_send_midi = False
self._wrote_user_byte = True
self._user_byte_write_button.send_value(1)
self._suppress_send_midi = True
self.set_enabled(False)
self._suppress_send_midi = False
# self._send_challenge()
self.set_enabled(True) # Enable anyways, without checking
def _send_challenge(self):
for index in range(4):
challenge_byte = self._challenge >> 8 * index & 127
self._send_midi((176, 17 + index, challenge_byte))
def _user_byte_value(self, value):
assert (value in range(128))
if not self._wrote_user_byte:
enabled = (value == 1)
self._control_is_with_automap = not enabled
self._suppress_send_midi = self._control_is_with_automap
if not self._control_is_with_automap:
for control in self.controls:
if isinstance(control, ConfigurableButtonElement):
control.set_force_next_value()
self._selector.set_mode(0)
self.set_enabled(enabled)
self._suppress_send_midi = False
else:
self._wrote_user_byte = False
def _button_value(self, value):
assert value in range(128)
def _config_value(self, value):
assert value in range(128)
def _set_session_highlight(self, track_offset, scene_offset, width, height, include_return_tracks):
if not self._suppress_session_highlight:
ControlSurface._set_session_highlight(self, track_offset, scene_offset, width, height, include_return_tracks)
示例8: Launchpad
# 需要导入模块: from MainSelectorComponent import MainSelectorComponent [as 别名]
# 或者: from MainSelectorComponent.MainSelectorComponent import channel_for_current_mode [as 别名]
#.........这里部分代码省略.........
self._config_button.send_value(0)
self._config_button = None
self._user_byte_write_button.send_value(0)
self._user_byte_write_button = None
def highlighting_session_component(self):
" Return the session component showing the ring in Live session "
return self._selector.session_component()
def refresh_state(self):
ControlSurface.refresh_state(self)
self.schedule_message(5, self._update_hardware)
def handle_sysex(self, midi_bytes):
if (len(midi_bytes) == 8):
if (midi_bytes[1:5] == (0, 32, 41, 6)):
response = long(midi_bytes[5])
response += (long(midi_bytes[6]) << 8)
if (response == Live.Application.encrypt_challenge2(self._challenge)):
self._suppress_send_midi = False
self.set_enabled(True)
def build_midi_map(self, midi_map_handle):
ControlSurface.build_midi_map(self, midi_map_handle)
if (self._selector.mode_index == 1):
new_channel = self._selector.channel_for_current_mode()
for note in DRUM_NOTES:
self._translate_message(MIDI_NOTE_TYPE, note, 0, note, new_channel)
def _send_midi(self, midi_bytes):
sent_successfully = False
if (not self._suppress_send_midi):
sent_successfully = ControlSurface._send_midi(self, midi_bytes)
return sent_successfully
def _update_hardware(self):
self._suppress_send_midi = False
self._wrote_user_byte = True
self._user_byte_write_button.send_value(1)
self._suppress_send_midi = True
self.set_enabled(False)
self._suppress_send_midi = False
self._send_challenge()
def _send_challenge(self):
for index in range(4):
challenge_byte = ((self._challenge >> (8 * index)) & 127)
self._send_midi((176,
(17 + index),
challenge_byte))