From 394911df7bb7013c6fdd3c78712b0d3f12c0bd41 Mon Sep 17 00:00:00 2001 From: Chris Cowley Date: Wed, 9 Jul 2025 16:37:18 +0200 Subject: [PATCH] Add Circuit python code --- CIRCUITPYTHON/Makefile | 2 ++ CIRCUITPYTHON/code.py | 56 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 58 insertions(+) create mode 100644 CIRCUITPYTHON/Makefile create mode 100644 CIRCUITPYTHON/code.py diff --git a/CIRCUITPYTHON/Makefile b/CIRCUITPYTHON/Makefile new file mode 100644 index 0000000..ed8cc4b --- /dev/null +++ b/CIRCUITPYTHON/Makefile @@ -0,0 +1,2 @@ +install: + cp code.py /run/media/ccowley/CIRCUITPY/code.py diff --git a/CIRCUITPYTHON/code.py b/CIRCUITPYTHON/code.py new file mode 100644 index 0000000..4c2d02b --- /dev/null +++ b/CIRCUITPYTHON/code.py @@ -0,0 +1,56 @@ +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)