midi-controller/CIRCUITPYTHON/code.py

57 lines
1.3 KiB
Python
Raw Normal View History

2025-07-09 16:37:18 +02:00
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)