Controlling RNBO parameters with HI gamecontroller in RSPI
Hello,
I was wondering if there is some kind of way of connecting HI to control RNBO parameters in a Raspberry Pi. My idea is to be able to make a voice module for eurorack that can be controlled by gamepad. Thank you for your help!
yes, you can use the evdev python library to send game controller data to RNBO via OSC
run something like this as a python script on the rpi
from evdev import InputDevice, categorize, ecodes
import liblo as OSC
import sys
gamepad = InputDevice('/dev/input/event7')
# send all messages to port 1234 on the local machine
try:
target = OSC.Address(1234)
except OSC.AddressError as err:
print(err)
sys.exit()
# start the transport via OSC
OSC.send(target, "/rnbo/jack/transport/rolling", 1)
for event in gamepad.read_loop():
if event.type == ecodes.EV_KEY:
keyevent = categorize(event)
print(keyevent)
if event.type == ecodes.EV_ABS:
if event.code == ecodes.ABS_X:
if event.value < 115 or event.value > 135:
left_horiz = event.value
left_horiz_norm = left_horiz / 255
print(f"left horizontal: {event.value}")
OSC.send(target, "/rnbo/inst/0/params/mix/normalized", left_horiz_norm)
elif event.code == ecodes.ABS_Y:
if event.value < 115 or event.value > 135:
print(f"left vertical: {event.value}")
elif event.code == ecodes.ABS_RX:
if event.value < 115 or event.value > 135:
print(f"right horizontal: {event.value}")
elif event.code == ecodes.ABS_RY:
if event.value < 115 or event.value > 135:
print(f"right vertical: {event.value}")
elif event.code == ecodes.ABS_HAT0X:
print(f"dpat horiz: {event.value}")
elif event.code == ecodes.ABS_HAT0Y:
print(f"dpad verti: {event.value}")
# Add additional elif statements here to print values for other ABS codes
Thank you John!! I will work on it right away!! Will keep you posted!