That, for now, compiles a simply server processing (LibloSource) using the high level API of liblo.
On NetworkEditor (click to see animation):

As you can see on the animation, it have 2 options: osc port number and osc path.
LibloSource print whatever osc pakage it receives on that port in the console[1], and if the package have the config path and contain just 3 floats, the values are sent to the three control outputs[2].
If you configure the processing to get port 7000, you will see in the console:
LibloSource::ConcreteConfigure: STARTING the server. port 7000So, just run the blender animation and back to the clam console, it will show something like:

That's it! You have three floats from every blender object osc position package! So, you could configure your LibloSource server to receive an object position subpath[3]:


[1] catched with
lo_server_thread_add_method(st, NULL, NULL, generic_handler, this);
[2] catched with
lo_server_thread_add_method(st, _config.GetOscPath().c_str(), "fff", controls_handler, this);(the tree "f"s are the three typespec: floats...)
[3] at the moment just once at the time, because it create a new thread server on each processing, which make the port slot be busy and clam crash. This is an IMPORTANT todo task, when see how to deal with several osc paths/objects... Another bugs in actual implementation: if you duplicate a object with the same parameters it crashes... and if you change the options there is no reload (you actually need to quit and open the file again).
I expect to strike these bugs soon, but that need to define some things: what we want to use? a processing as server with different linked (sub)processings as paths? (this could be implemented using some kind of list control messages to deal with paths) Or just a big but configurable processing to receive all paths from an osc sender (for instance, blender)?























