I see that only the button widgets have osc loopback, but wouldn’t it be more useful if you have this option for all widgets and then a new widget (or added functionality to the “null widget”) in which you can enter functions to combine OSC messages before sending them further (either loopback or to external programs)?
The combiner widget should take in multiple different OSC paths and use their values&names to do certain operations:
-append to OSC adress: take in the osc adress and add the value of the control widget as an extension: slider_1/slider_2/slider_3, in which the basic OSC adress would be “slider” to which the values 0,1,2 are added with a “_”. The osc could then be send outside the program (or further in the program to do more adjustments before sending it out).
-select widget: a control widget would select between several different OSC adresses and output the selected value to a custom set osc adress (the osc-adress selecting could be done in the same way as the example above).
-set selection of widgets to either on or off : define several sets of adresses that would respond to the control widget, that are then turned on/off. Eg. a row of buttons with which you could select a different set of buttons to go on. Eg, using a switch to set the values of 12 readout buttons that show which notes in a scale are active: if the switch is at 0, button 0,2,4,5,7,9,11 are on and 1,3,6,8,10 are off (c-scale), if 1, button 0,1,4,5,7,8,11 are on and 2,3,6,8,10 are off (an indian scale), etc. (Adress naming could again be done like above).
-spin-off of the above functionality: a memory/array selector in which you could store a set of values and recall them to update several controls to different states.
-another spin-off: select which set of controls are active and shown on the screen
-math functionality: multiply/add/subtract/etc the values of two OSC adresses and output on another adress.
-list functionality: use osc button-row value to select from a list of names/strings to send as OSC values.
To actually show all these options in the current menu would be too much for the small space, but perhaps a seperate menu-window could be opened or some editable text-files could be opened to create these options?
So you’ld have momentary buttons in the menu which would open a text editor when clicked, to allow you to enter a set of values like:
eg. for the adress selector/multiplexer
OSC-in adress button: OSC/slider_1,OSC/slider_2,OSC/slider_3,OSC/slider_4 (thus 4 sliders to select from)
select OSC-in adress button: OSC/control (using a button row with values 0,1,2,3 to select between slider_1 to slider_4)
OSC-send adress button: OSC/sld (sets base OSC adress to send on)
select OSC-send adress button (append to send adress): _1,_2,_3,_4 like: sld_1,sld_2,sld_3,sld_4
eg. the table/array/list selector
select OSC-in adress button: OSC/control (sets adress that controls the list selection)
set table button: sine,saw,ramp,square,pulse,noise (to enter your list)
select OSC-out adress button: OSC/wave (sets adress to send out the OSC value selected from the list)
OSC-in adress: OSC/wave
OSC-in table: sine,saw,ramp,square,pulse,noise
OSC-out table: 0,1,2,3,4,5
OSC-out adress: OSC/wavecontrol
just a couple of ideas, hope it makes sence