changed animation

Signed-off-by: Ebbe <ebbe@ping-mee.de>
main
Ebbe Baß 2025-06-25 12:55:06 +02:00
parent c0b15473e6
commit 4da786e314
1 changed files with 31 additions and 25 deletions

56
code.py
View File

@ -56,33 +56,38 @@ encoder_bttn_notes = [11, 12, 13, 14, 15]
mode_toggle_note = 21 mode_toggle_note = 21
# Functions # Functions
def encoder_sweep(direction): def encoder_flash():
trail_length = 3 steps = 10
delay = 0.03 # smoother transition delay = 0.5 / (steps * 2) # Half for fade-in, half for fade-out
encoder_range = [3, 4, 5, 6] leds = [3, 4, 5, 6]
if direction == "CCW": base_color = encoder_colors[current_encoder]
encoder_range = list(reversed(encoder_range)) white = (255, 255, 255)
for i in range(len(encoder_range)):
for j in range(trail_length):
idx = i - j
if 0 <= idx < len(encoder_range):
blend_ratio = (trail_length - j) / trail_length # 1.0 to 0.33
white = (255, 255, 255)
base_color = encoder_colors[current_encoder]
# Blend white → base_color
blended = tuple(
int(white[k] * blend_ratio + base_color[k] * (1 - blend_ratio))
for k in range(3)
)
led[encoder_range[idx]] = blended
# Fade to white
for i in range(steps):
ratio = (i + 1) / steps # 0.1 to 1.0
blended = tuple(
int(base_color[k] * (1 - ratio) + white[k] * ratio)
for k in range(3)
)
for led_index in leds:
led[led_index] = blended
time.sleep(delay) time.sleep(delay)
# Reset all encoder LEDs to base color at end # Fade back to base color
for i in encoder_range: for i in range(steps):
led[i] = encoder_colors[current_encoder] ratio = (i + 1) / steps # 0.1 to 1.0
blended = tuple(
int(white[k] * (1 - ratio) + base_color[k] * ratio)
for k in range(3)
)
for led_index in leds:
led[led_index] = blended
time.sleep(delay)
# Final color correction
for led_index in leds:
led[led_index] = base_color
def fade_leds_parallel(led_targets, steps=10, delay=0.01): def fade_leds_parallel(led_targets, steps=10, delay=0.01):
for step in range(steps + 1): for step in range(steps + 1):
@ -166,12 +171,13 @@ while True:
else: else:
direction = "CCW" direction = "CCW"
midi.send(ControlChange(encoder_cc_notes[current_encoder], 127)) midi.send(ControlChange(encoder_cc_notes[current_encoder], 127))
encoder_sweep(direction) encoder_flash()
last_clk = clk.value last_clk = clk.value
# Encoder Button # Encoder Button
if enc_button.fell: if enc_button.fell:
midi.send(NoteOn(encoder_bttn_notes[current_encoder], 127)) midi.send(NoteOn(encoder_bttn_notes[current_encoder], 127))
encoder_flash()
if enc_button.rose: if enc_button.rose:
midi.send(NoteOff(encoder_bttn_notes[current_encoder], 0)) midi.send(NoteOff(encoder_bttn_notes[current_encoder], 0))