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
|
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":
|
|
||||||
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]
|
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(
|
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)
|
for k in range(3)
|
||||||
)
|
)
|
||||||
led[encoder_range[idx]] = blended
|
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))
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue