Shbobo talking to monome

has anyone gotten the shbobo to talk to an Earthsea or and ansible. I would just love to unite these to worlds this way

1 Like

to get an answer it might help to refine your topic title by specifiying “monome euro”

there’s been a bit of past discussion on shnth but i’m not sure whether your question has already been answered

shnth shows up as a generic HID device, like a joystick, that blasts all its values out every 1ms.

AFAIK there is no specific functionality in the modules for handling generic HID. teletype checks the HID frame but assumes that the sending device is an ASCII keyboard.

aleph just stores the frame data and lets operators use it if they want. there is a generic HID operator, so you actually can use the shnth as an aleph controller by manualling peeking at different words in the frame, but it’s not very convenient.

the libavr32 HID driver isn’t smart enough to distinguish between HID protocols (keyboard, mouse, or generic.) it should do so (by parsing the device report on connection) and pass a protocol identifier to the HidConnect event.


i wonder if i made a IOS app people would be into it. maybe convert the values to midi and whatnot

thanks Gila: I appreciate the tip for clarity and i’ll search shnth

i must be dense… can’t see the obvious connection between shbobo shnth, ios devices, and monome eurorack. i assumed you just want to plug the shnth into a module’s USB host port and use it as a controller?

this would require a little bit of coding, on two levels: 1) extend HID driver to recognize the shnth (from VID/PID i guess, otherwise there’s no way to differentiate it from a gamepad), and 2) map the barre and button values to module functions in whatever manner you envision. both should be pretty simple…

actually for earthsea/ansible you wouldn’t strictly need to identify the shnth as such… USB host stack will already connect it as a HID device, and unlike teletype, those modules don’t have any existing functionality for HID devices.

so e.g. for ansible, declare HID handler functions, in here
define them in the main body or wherever
and add them to handler table here

( analogous to these declarations, definitions, and assignments in teletype )

… and you’re off to the races.

the only technical hurdle i might anticipate is that shnth packet rate could be a little much for the modules to handle gracefully.


This might be useful?

Or, is the shnth HID behavior documented?

i just thought if an ios app could convert the shnth outputs to midi then it could control an app and spit out useable midi to the ansible. just thinking of ways to use it. currently i am using it to talk to msp so it not impossible to get it to play nice into midi world, that way the “app” would deal with all the rates hopefully as well.

i don’t have a shnth handy, and a quick search is not revealing a document of the hid format or a sample patch decoding it. but yeah it’s pretty easy to determine.

on most linuxes you can get usbhid-dump in a package (usbutils on arch.)
or just use hexdump on /dev/inputs/foo

if @shreeswifty is already getting sensible data in msp, then i suppose he already knows the format. seems a little bonkers to use all that infrastructure (iThing and midi interfaces) just to translate barre presses to CV, but hey.