Best practices for MIDI/OSC control of large patch
Hello everyone,
I've created a fairly large patcher for live performance. Now I'd like to implement MIDI control using touchOSC.
I'm looking for advice on the best practices to:
- make the coding as easy as possible (all in one place, maybe calling the objects by name without patch cords)
- make sure that the flow of information is bidirectional (if I change a parameter in Max, it also changes in touchOSC)
Many thanks!
I prefer to use OSC than midi.
not ony beause of 7bit resolution, but I find it also easier to deal with
multisliders, multibuttons etc.
I use very short strings, or even single letters to form the structure,
like /A or /A/a /A/b and similar.
makes routing easier compared to
/mysoftware/mainpage/multislider-22
group values to split and unpack them to several
send - receive pairs, depending on the structure.
Can't say more withou any infos abut your patch.
Thanks! I have tried to stay away from OSC so far, but I think I will give it a go this time.
What I want to control are live.dials in nested bpatchers, as well as some matrixctrl. Only control messages, no note input/output.
I was mainly wondering if there were tips and tricks to make the whole thing rational and limit as much as possible repeated code and messy patching cords.



More details: In the attached patch, I've created a simple version of what I'd like to happen for many controllers (so far, it's still in MIDI). While simple, it gets extremely cumbersome with so many controllers to update.
So my question really is: Is there an elegant way of dealing with this?
@noisewrangler this sounds interesting.
I am on the same path and still using midi. Never thought about using OSC.
live GUI objects are more tricky to deal with because of automation, storage etc.
I mean one has to take care to keep amount of data sent arround to needed minimum.
OSC would be a better choice than midi because all dials with different ranges will respond to 0. - 1. float.
I would take each sub patcher or bpatcher as own unit and assign it an
ID, so that you can route received OSC messages easy.
Messages like /A/B/C can be run through regexp to replace / slashes
with spaces, and so use route A route B route C, or mach C nn and similar
--------
That big matrix is a bit of challenge.
To pair it with single multidial in touchOSC
can be done, but control on small iOS screen could be difficut.
at the end .... I am used to work with objects like send, receive, pack unpack etc and in max only, not live.
dict, pattr an such are maybe other options when it comes
to grab values to resend them to touchOSC.