This is gal, a small, flexible library of gadgets that is much more adaptable than the basic components in the OP Create dialog. Go in the network and copy/paste any of these gadgets into your project networks and adjust their custom parameters.
The gadgets are fully-self-contained. If you choose to put gal.tox in /as /gal, all the gadgets you create will be clones of the masters in /gal. If the .tox is not located at /gal, the gadgets will be fully independent, not needing any data or variables outside the gadget, so you can later delete the gal component.
There are only 8 “master” gadgets in gal.tox from which all the variants you see are customized with custom parameters: slider, binary, sliderxy, knob, radio, menu, string, label. Aside from that, tuikslider and tuiktoggle were made to resemble other gadgets in TouchDesigner UI.
Read the readMe DATs in the component for more info. It may be instructive to look inside the gadgets at their design … it uses custom parameters, a minimum of nodes, and internally builds export DAT tables that customize the look/feel of the gadgets.
One of TouchDesigner’s strengths is that you can design and shape your own UI kits based on your intended applications and personal aesthetics. A different, more comprehensive library of gadgets (widgets) from Derivative will be available in TouchDesigner 099.
gal now has a simple system to drive gadgets with MIDI, OSC and other sources.
Basically you move controller, click gadget, press alt-m. It assigns a CHOP channel to a gadget value (the Value parameter).
You need to have gal installed as /gal for this to work. Read readMe in gal/mapper. It enforces one-to-one (each channel goes to one gadget). It uses a sImple table that can be hand-edited or amended.
I am able to get everything working with the midi mapping except the actual updating of the gadget value. I placed the ‘gal’ tox in the main directory and the mapping functionality with alt-m is working fine.
If I create another chopexec with valchange true and use the use the script from the ‘cmd’ column in ‘fromMap’ it will work. - op(‘/gal/knob’).par.Value1 = 0.0 + val * 1.0
It seems like ‘run(eval(cmd))’ isn’t evaluating/running the script correctly
I’m having the same outcome as Matt above - The mapping works and I can see my gadget listed in the map table, but the mapped channel doesn’t actually update the gadget.
I love these things, is there a chance they could be updated to work with 099’s container sizing options? I just tried to put a bunch of string fields into a container and make them fit their parent and it throws it off.
i just upadted a version of raido that improves the peformance
the old one cause every button comp to cook eveytime the value change
so if you have a big list it will slow you down!
You are right. All 25 buttons cook their Text TOP because each button has an expression that gets Value1 from their radio component, and every time Value1 changes (like every time you click a new button), the 25 expressions cook and the Text TOP cooks. That’s very inefficient.
So in your new version of radio, when its Value1 changes, you set unset/set only the 2 affected buttons’ value and border color using single-line python commands.
By the way, the new Version 25 gal.tox that is in the recent 099 Official and Experimantal palettes have a lightweight binaryC button used in the radio buttons and menus. But they still have the over-cooking artifact, which I’ll fix in the next Version 26 gal.tox.
(The version numbers are on the first pages of the gal and other components. You can hardly make out the version numbers because we’ve disable those parameters. But coming in the next experimental you will see that you can set a parameter to be “read-only” - a parameter that isn’t disabled, it’s used, but you don’t expect the user to modify it. So a “read-only” parameter is only editable with python. It can contain an expression or a constant. )
A note on earlier posts: "is there a chance they could be updated to work with 099’s container sizing options? " They do now in 099 Official 20000 series.
And, the MIDI mapping problem that matt1up reported (with a workaround) is fixed in latest Offical now.
A note on this - How should we gracefully upgrade apps to updated versions of GAL? Due to the /gal clone trick, when I try to load a chromaKey palette item into your latest timeBase, the chromaKey component completely fails due to an outdated version of gal gadgets with different parameter names. For now I’m just using Syhpon to send/return from a separate TouchDesigner instance…
To update apps and components to the latest gal, you would generally delete /gal from the app, then drag-drop the latest gal from the palette as /gal. In the case of timeBase, this updates cleanly.
Then when you drop in chromaKey which uses a yet older version of gal (I’ll update that), all radio button COMPs error (as the new radios contain the lightweight binaryC buttons). You just need to go into all the radio components and on the Replicator COMP, press Recreate All Operators.