Close
Asset

OSC Query Server Component

Custom parameters have become the new standard to store your data. One of the advantages they offer is that they have a data type and you can add value ranges (min/max). When controling Touchdesigner custom parameters through an OSC control software (e.g. TouchOSC, Vezér, Chataigne, ...) you need to manually wire some incoming OSC values to the custom parameters. You also need to configure many things in your OSC control software, e.g. OSC output IP + port, for each OSC message define the OSC address and also it's value range. So basically we have to recreate the OSC structure that already is defined in our Touchdesigner project.

 

What if there would be a way to make all this manual wiring disappear?

Yes, there is a way. A protocol called OSC Query let's us communicate what kind of OSC messages a OSC server is able to understand. It is already implemented in many software (e.g. Millumin, Madmapper, VDMX) and thus can be seen as the standard way to do this. And thanks to the current addition (TD version 2020) of the Webserver DAT, it has become much more easy to implement an OSC Query server in Touchdesigner. This is what I have done and I'm sharing it with you:

https://github.com/jonglissimo/td-osc-query-server

 

What does this component do?

It let's you expose all custom parameters of one or more COMPs (e.g. container) through OSC Query. A client can consequently use this to control the custom parameters without any manual setup. All the custom parameter data types (e.g. Float, String, RGB, XYZ, Menu) are implemented and just work.

 

Here are two videos demonstrating how to use this component with Chataigne as a client:

 

What about a web app?

Yes, indeed. The component comes with an OSC Query web app. It reads the OSC Query definition that this component provides and automatically generates controls for it. You can just go to http://127.0.0.1:9000/ui or replace the IP with your computers IP address if you want to access it from another computer or phone.

 

If you find this component useful please say hi. If you have a problem please fill a bug or pull request on the github page.

 

Comments