Allow for individual midi channels per pedal

This commit is contained in:
2024-03-10 06:42:16 +10:00
parent 15d68a51bd
commit 144499f798

21
code.py
View File

@@ -29,9 +29,6 @@ from adafruit_midi.note_off import NoteOff
from adafruit_midi.pitch_bend import PitchBend from adafruit_midi.pitch_bend import PitchBend
from adafruit_midi.control_change import ControlChange from adafruit_midi.control_change import ControlChange
# Midi output settings
midi_channel = 1 # Target midi channel
# Expression pedal settings # Expression pedal settings
logarithmic = True # Expression pedal logarithmic or linear. Set to False for linear logarithmic = True # Expression pedal logarithmic or linear. Set to False for linear
log_base = 100 # This value changes the feel of the log curve log_base = 100 # This value changes the feel of the log curve
@@ -42,19 +39,17 @@ exp_pedal_calibration_percent = 80 # 0 - 100
# Define expression pedals # Define expression pedals
expression_pedals = [ expression_pedals = [
# Set expression pedal midi control change number, and min/max values # Set expression pedal midi control change number, and min/max values
{"pin": board.GP26, "cc": 1, "cc_min": 0, "cc_max": 127}, # Pedal 1. Pin 31 {"pin": board.GP26, "midi_channel": 1, "cc": 1, "cc_min": 0, "cc_max": 127}, # Pedal 1. Pin 31
{"pin": board.GP27, "cc": 2, "cc_min": 0, "cc_max": 127}, # Pedal 2. Pin 32 {"pin": board.GP27, "midi_channel": 1, "cc": 2, "cc_min": 0, "cc_max": 127}, # Pedal 2. Pin 32
{"pin": board.GP28, "cc": 3, "cc_min": 0, "cc_max": 127} # Peadl 3. Pin 34 {"pin": board.GP28, "midi_channel": 1, "cc": 3, "cc_min": 0, "cc_max": 127} # Peadl 3. Pin 34
] ]
# Devices # Devices
led = digitalio.DigitalInOut(board.LED) led = digitalio.DigitalInOut(board.LED)
led.direction = digitalio.Direction.OUTPUT led.direction = digitalio.Direction.OUTPUT
uart = busio.UART(tx=board.GP4, rx=board.GP5, baudrate=31250, timeout=0.001) # UART Midi device on pin 6 uart = busio.UART(tx=board.GP4, rx=board.GP5, baudrate=31250, timeout=0.001) # UART Midi device on pin 6
uart_midi = adafruit_midi.MIDI(midi_out=uart, out_channel=midi_channel - 1) uart_midi = [adafruit_midi.MIDI(midi_out=uart, out_channel=pedal["midi_channel"] - 1) for pedal in expression_pedals]
usb_midi = adafruit_midi.MIDI( usb_midi = [adafruit_midi.MIDI(midi_out=usb_midi.ports[1], out_channel=pedal["midi_channel"] - 1) for pedal in expression_pedals]
midi_out=usb_midi.ports[1], out_channel=midi_channel - 1)
# Initialize expression pedals # Initialize expression pedals
exp_values = [analogio.AnalogIn(pedal["pin"]) for pedal in expression_pedals] exp_values = [analogio.AnalogIn(pedal["pin"]) for pedal in expression_pedals]
exp_previous = [exp.value for exp in exp_values] exp_previous = [exp.value for exp in exp_values]
@@ -89,8 +84,8 @@ while True:
if exp_max[i] - exp_min[i] > exp_calibration_threshold[i]: if exp_max[i] - exp_min[i] > exp_calibration_threshold[i]:
led.value = True # Turn led on led.value = True # Turn led on
cc_val = translate(exp_current, exp_min[i], exp_max[i], expression_pedals[i]["cc_min"], expression_pedals[i]["cc_max"]) cc_val = translate(exp_current, exp_min[i], exp_max[i], expression_pedals[i]["cc_min"], expression_pedals[i]["cc_max"])
uart_midi.send(ControlChange(expression_pedals[i]["cc"], cc_val)) uart_midi[i].send(ControlChange(expression_pedals[i]["cc"], cc_val))
usb_midi.send(ControlChange(expression_pedals[i]["cc"], cc_val)) usb_midi[i].send(ControlChange(expression_pedals[i]["cc"], cc_val))
led.value = False # Turn led off led.value = False # Turn led off
print("Pedal {}: Writing Midi Channel: {}, ControlChange: {}, Value {}. Exp Pedal: cur: {}, min: {}, max: {}".format( print("Pedal {}: Writing Midi Channel: {}, ControlChange: {}, Value {}. Exp Pedal: cur: {}, min: {}, max: {}".format(
i + 1, midi_channel, expression_pedals[i]["cc"], cc_val, exp_current, exp_min[i], exp_max[i])) i + 1, expression.pedals[i]["midi_channel"], expression_pedals[i]["cc"], cc_val, exp_current, exp_min[i], exp_max[i]))