Skip to content

Commit d79c535

Browse files
committed
Avoid unnecessary checks when matching midi in messages from push
1 parent 919a924 commit d79c535

File tree

5 files changed

+12
-4
lines changed

5 files changed

+12
-4
lines changed

push2_python/__init__.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -215,10 +215,10 @@ def on_midi_message(self, message):
215215
# are not interested in (probably some internal state which Ableton uses but we don't care about?)
216216

217217
# Send received message to each "part" so it is processes accordingly
218-
self.pads.on_midi_message(message)
219-
self.buttons.on_midi_message(message)
220-
self.encoders.on_midi_message(message)
221-
self.touchtrip.on_midi_message(message)
218+
for func in [self.pads.on_midi_message, self.buttons.on_midi_message, self.encoders.on_midi_message, self.touchtrip.on_midi_message]:
219+
action_taken = func(message)
220+
if action_taken:
221+
break # Early return from for loop to avoid running unnecessary checks
222222

223223
# Also check for some other extra general message types here
224224
if message.type == MIDO_CONTROLCHANGE:

push2_python/buttons.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,4 +57,5 @@ def on_midi_message(self, message):
5757
action = ACTION_BUTTON_PRESSED if message.value == 127 else ACTION_BUTTON_RELEASED
5858
self.push.trigger_action(action, button['Name']) # Trigger generic button action
5959
self.push.trigger_action(get_individual_button_action_name(action, button['Name'])) # Trigger individual button action as well
60+
return True
6061

push2_python/encoders.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,10 +52,12 @@ def on_midi_message(self, message):
5252
self.push.trigger_action(action, encoder['Name'], value) # Trigger generic rotate encoder action
5353
self.push.trigger_action(get_individual_encoder_action_name(
5454
action, encoder['Name']), value) # Trigger individual rotate encoder action as well
55+
return True
5556
elif message.type in [MIDO_NOTEON, MIDO_NOTEOFF]: # Encoder touched or released
5657
if message.note in self.encoder_touch_map: # Note number corresponds to one of the encoders in touch mode
5758
encoder = self.encoder_touch_map[message.note]
5859
action = ACTION_ENCODER_TOUCHED if message.velocity == 127 else ACTION_ENCODER_RELEASED
5960
self.push.trigger_action(action, encoder['Name']) # Trigger generic touch/release encoder action
6061
self.push.trigger_action(get_individual_encoder_action_name(
6162
action, encoder['Name'])) # Trigger individual touch/release encoder action as well
63+
return True

push2_python/pads.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -169,13 +169,17 @@ def on_midi_message(self, message):
169169
self.push.trigger_action(ACTION_PAD_PRESSED, pad_n, pad_ij, velocity) # Trigger generic pad action
170170
self.push.trigger_action(get_individual_pad_action_name(
171171
ACTION_PAD_PRESSED, pad_n=pad_n), velocity) # Trigger individual pad action as well
172+
return True
172173
elif message.type == MIDO_NOTEOFF:
173174
self.push.trigger_action(ACTION_PAD_RELEASED, pad_n, pad_ij, velocity)
174175
self.push.trigger_action(get_individual_pad_action_name(
175176
ACTION_PAD_RELEASED, pad_n=pad_n), velocity) # Trigger individual pad action as well
177+
return True
176178
elif message.type == MIDO_POLYAT:
177179
self.push.trigger_action(ACTION_PAD_AFTERTOUCH, pad_n, pad_ij, velocity)
178180
self.push.trigger_action(get_individual_pad_action_name(
179181
ACTION_PAD_AFTERTOUCH, pad_n=pad_n), velocity) # Trigger individual pad action as well
182+
return True
180183
elif message.type == MIDO_AFTERTOUCH:
181184
self.push.trigger_action(ACTION_PAD_AFTERTOUCH, None, None, message.value)
185+
return True

push2_python/touchstrip.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,3 +13,4 @@ def on_midi_message(self, message):
1313
if message.type == MIDI_PITCWHEEL:
1414
value = message.pitch
1515
self.push.trigger_action(ACTION_TOUCHSTRIP_TOUCHED, value)
16+
return True

0 commit comments

Comments
 (0)