parent
c0b15473e6
commit
4da786e314
48
code.py
48
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)
|
||||
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)
|
||||
|
||||
# Blend white → base_color
|
||||
# Fade to white
|
||||
for i in range(steps):
|
||||
ratio = (i + 1) / steps # 0.1 to 1.0
|
||||
blended = tuple(
|
||||
int(white[k] * blend_ratio + base_color[k] * (1 - blend_ratio))
|
||||
int(base_color[k] * (1 - ratio) + white[k] * ratio)
|
||||
for k in range(3)
|
||||
)
|
||||
led[encoder_range[idx]] = blended
|
||||
|
||||
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))
|
||||
|
||||
|
|
Loading…
Reference in New Issue