import time import board from digitalio import DigitalInOut, Direction, Pull import usb_midi import adafruit_midi from adafruit_midi.control_change import ControlChange # MIDI setup as MIDI out device midi = adafruit_midi.MIDI(midi_out=usb_midi.ports[1], out_channel=0) # button pins, all pins in order skipping GP15 button_pins = [ board.GP18, board.GP19, board.GP20, board.GP21, board.GP22, ] buttons = [] for pin in button_pins: button = DigitalInOut(pin) button.direction = Direction.INPUT button.pull = Pull.UP buttons.append(button) cc_numbers = [ 20, 21, 22, 23, 24, ] # button states button_states = [True] * len(buttons) while True: for i, button in enumerate(buttons): current_state = button.value if current_state != button_states[i]: if not current_state: # Button pressed midi.send(ControlChange(cc_numbers[i], 127)) print(f"Button {i+1} pressed -> CC{cc_numbers[i]}:127") else: # Button released midi.send(ControlChange(cc_numbers[i], 0)) print(f"Button {i+1} released -> CC{cc_numbers[i]}:0") button_states[i] = current_state time.sleep(0.01)