finished code

Signed-off-by: Ebbe <ebbe@ping-mee.de>
main
Ebbe Baß 2025-06-23 10:05:35 +02:00
parent d3b92742c1
commit c0b15473e6
2 changed files with 93 additions and 15 deletions

14
boot.py 100644
View File

@ -0,0 +1,14 @@
import storage
import usb_midi
usb_midi.disable() # Disable USB MIDI temporarily for reconfiguration
usb_midi.set_names(
audio_control_interface_name="gMA3_ENC",
)
usb_midi.enable()
storage.remount("/", readonly=False)
m = storage.getmount("/")
m.label = "gMA3_ENC"
storage.remount("/", readonly=False)
storage.enable_usb_drive()

94
code.py
View File

@ -57,21 +57,42 @@ mode_toggle_note = 21
# Functions
def encoder_sweep(direction):
sweep_order = [3, 4, 5, 6] if direction == "CW" else [6, 5, 4, 3]
for i in sweep_order:
led[i] = (255, 255, 255)
if direction == "CW" and i > 3:
led[i - 1] = (100, 100, 100)
elif direction == "CCW" and i < 6:
led[i + 1] = (100, 100, 100)
time.sleep(0.02)
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
time.sleep(delay)
# Reset all encoder LEDs to base color at end
for i in encoder_range:
led[i] = encoder_colors[current_encoder]
if direction == "CW" and i > 3:
led[i - 1] = encoder_colors[current_encoder]
elif direction == "CCW" and i < 6:
led[i + 1] = encoder_colors[current_encoder]
def fade_leds_parallel(led_targets, steps=10, delay=0.01):
for step in range(steps + 1):
for index, start_color, end_color in led_targets:
blended = tuple(
int(start_color[i] + (end_color[i] - start_color[i]) * step / steps)
for i in range(3)
)
led[index] = blended
time.sleep(delay)
def startup_animation():
@ -111,7 +132,7 @@ def startup_animation():
led[i] = tuple(int(c * step / 100) for c in encoder_colors[current_encoder])
time.sleep(0.02)
# -------------------- Startup -----------------------
# Startup
print("MIDI Encoder Controller started.")
startup_animation()
led[3:7] = [encoder_colors[current_encoder]] * 4
@ -120,7 +141,16 @@ led[1] = encoder_colors[(current_encoder - 1) % len(encoder_colors)]
led[2] = (63, 63, 63) # Mode toggle LED default 25% white
mode_button_state_note = 0
# -------------------- Main Loop ---------------------
should_interrupt = False
def animation_interrupt():
global should_interrupt
if should_interrupt:
should_interrupt = False
return True
return False
# Main Loop
while True:
enc_button.update()
next_button.update()
@ -148,6 +178,23 @@ while True:
# Next Encoder Button
if next_button.fell:
current_encoder = (current_encoder + 1) % len(encoder_cc_notes)
# Prepare fade targets
led_targets = []
# Fade main encoder LEDs (3 to 6)
for i in range(3, 7):
led_targets.append((i, led[i], encoder_colors[current_encoder]))
# Fade forward/backward indicators (0 and 1)
forward_color = encoder_colors[(current_encoder + 1) % len(encoder_colors)]
backward_color = encoder_colors[(current_encoder - 1) % len(encoder_colors)]
led_targets.append((0, led[0], forward_color))
led_targets.append((1, led[1], backward_color))
# Run the simultaneous fade
fade_leds_parallel(led_targets)
forward_color = encoder_colors[(current_encoder + 1) % len(encoder_colors)]
backward_color = encoder_colors[(current_encoder - 1) % len(encoder_colors)]
led[3:7] = [encoder_colors[current_encoder]] * 4
@ -157,6 +204,23 @@ while True:
# Back Encoder Button
if back_button.fell:
current_encoder = (current_encoder - 1) % len(encoder_cc_notes)
# Prepare fade targets
led_targets = []
# Fade main encoder LEDs (3 to 6)
for i in range(3, 7):
led_targets.append((i, led[i], encoder_colors[current_encoder]))
# Fade forward/backward indicators (0 and 1)
forward_color = encoder_colors[(current_encoder + 1) % len(encoder_colors)]
backward_color = encoder_colors[(current_encoder - 1) % len(encoder_colors)]
led_targets.append((0, led[0], forward_color))
led_targets.append((1, led[1], backward_color))
# Run the simultaneous fade
fade_leds_parallel(led_targets)
forward_color = encoder_colors[(current_encoder + 1) % len(encoder_colors)]
backward_color = encoder_colors[(current_encoder - 1) % len(encoder_colors)]
led[3:7] = [encoder_colors[current_encoder]] * 4