diff --git a/code.py b/code.py index 231902a..cdc58cc 100644 --- a/code.py +++ b/code.py @@ -56,33 +56,38 @@ encoder_bttn_notes = [11, 12, 13, 14, 15] mode_toggle_note = 21 # Functions -def encoder_sweep(direction): - trail_length = 3 - delay = 0.03 # smoother transition - encoder_range = [3, 4, 5, 6] - if direction == "CCW": - encoder_range = list(reversed(encoder_range)) - - 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 +def encoder_flash(): + steps = 10 + delay = 0.5 / (steps * 2) # Half for fade-in, half for fade-out + leds = [3, 4, 5, 6] + base_color = encoder_colors[current_encoder] + white = (255, 255, 255) + # 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) - # Reset all encoder LEDs to base color at end - for i in encoder_range: - led[i] = encoder_colors[current_encoder] + # Fade back to base color + for i in range(steps): + 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): for step in range(steps + 1): @@ -166,12 +171,13 @@ while True: else: direction = "CCW" midi.send(ControlChange(encoder_cc_notes[current_encoder], 127)) - encoder_sweep(direction) + encoder_flash() last_clk = clk.value # Encoder Button if enc_button.fell: midi.send(NoteOn(encoder_bttn_notes[current_encoder], 127)) + encoder_flash() if enc_button.rose: midi.send(NoteOff(encoder_bttn_notes[current_encoder], 0))