Alt/midi navigation on main menu?

Hi there,
I’m working on a project where silence is a determining factor and I would like to know if someone has an idea for navigating in the main menu without using the dedicated encoder, which is very noisy, especially in button mode. I already use an external controller for the project, and I tried stuff for a day without finding a solution. It seems to me that it is not possible to do this via Pure Data even if a communication with the encoder seems possible with the “submenu” option…
Any ideas ?
Thanks

With some more work, I made some little progress. First idea was to physically change the encoder.But because spending time the face stuck on the screen seems in the mood of the times, I made some prospection with my pet mouse.

First, in the mother patch, I found some informations about how to communicate with the hardware :

In Mother.pd/pd messageIO
In Mother.pd/pd menucontrol

[r oscOut]
[r oscIn]

[packOSC]
[routeOSC /encoder/turn /encoder/button]

routeOSC-help.pd
packOSC-help.pd

[send /encoder/turn(
[send /encoder/button(

Second, in the specified pathes, I found some other informations :


/home/music/Organelle_OS/main.cpp
line 136,1 and after :
/* hardware inputevent handlers */
void encoderInput(void);
void encoderButton(void);

line 268,1 and after :
// handle events
if (control.encButFlag) encoderButton();
if (control.encTurnFlag) encoderInput();

line 861,1 and after :
// this is when the encoder gets turned

void encoderInput(void) {

OSCMessage msgOut(“/encoder/turn”);

void encoderButton(void) {

OSCMessage msgOut(“/encoder/button”);


/home/music/Organelle_OS/MainMenu.cpp
line 80,1 and after :
void MainMenu::encoderUp(void) {
void MainMenu::encoderDown(void) {
void MainMenu::encoderPress(void) {
void MainMenu::encoderRelease(void) {


/home/music/Organelle_OS/MainMenu.h
line 18,1 and after :
//encoder events
encoderPress
encoderRelease
encoderDown
encoderUp


On what I beleave saw :
values seems to be only 0 and 1 :
encoder up & press : 1
encoder down & release : 0


So, with all of this, it seems it’s perhaps possible to have an alternate midi navigation on the Main Menu via Pure Data (+ script ?). I have tried some pd patches to send messages BUT I’m not enough into this language SO I’m stuck, making rumbles and clics with this noisy encoder.
And thinking again that changing it is perhaps the way.

Any ideas ?
Thanks.

I think those OSC messages are the other way around: they allow you to tell the puredata patch that things happened, not receive messages to send virtual input messages.

If you look in mother.pd (find messageIO) You will find that you can send knob1, etc, but no navigation. You can see similar in the shell script in fw_dir/scripts/midi-config.sh (it listens to mother cpp program to send OSC messages about what happened.)

I think for it to work how you want, you would need to add some OSC callbacks to the mother cpp program, to call encoderUp, etc, then you could send those pd messages (the other way around.)

I tested a solution that seems to work. I modified it like this. I don’t have an organelle to test on, but it builds, and it seems to work with oscsend (so you could use it in a shell script.)

Since mother.pd is loaded by mother program, it still seems like a bit of a catch 22 inside another patch (once mother.pd is loaded, it goes into “running patch”, not menu mode.)

1 Like

Maybe one idea would be to map the midi to OSC with a little service, and use some funny channel that you don’t normally use (or just far from the most-used 4 controls.) That way, it would run outside of pd (which is spawned by mother cpp program) and you could send the cpp mother OSC messages to navigate. It brings to mind that regular pot controls (instead of rotary encoders) might be a bit weird, since they have end-points, so it might make more sense to map them to pads/button controls (for up/down/ok.) I feel like you could do a really nice direct input (or a tiny program that sends OSC messages) with a (typing) keyboard or joystick, too, using libhid or even something like this

Heck, you could probly write a little bash script to do it all with a joystick using jstest and oscsend with the above OSC mods to cpp program.

This also seems really nice, if you like python.