jvolker's picture

Hey,

I'm trying to build an App that receives skeleton data via OSC, filters for certain joints and processes them as vectors / 3D Points. So far I've programmed the part that takes the messages and creates a 3D point according to it's OSC address.

If I look at it, it's a big network of nodes and lines with many repeating patterns. I'm quite familiar with other textual programming languages like Processing. I've used Quartz Composer and other node based Programming languages before. I very much like the general idea of visual and live programming, but have so say I'm still a beginner in this field though.

Right now my composition seems too complicated for me and I had quite a few frustrating moments doing this. I know this would be just a few lines in Processing and wonder how I could simplify it in Vuo.

Things I was looking for, but couldn't find:
- Grouping of nodes
- Hold Point UPDATE: just read about generic nodes in the quite useful manual. This can be done using Hold Value.
- Hold List (or Point) with the option to update on an event. I think this option exists in QC. Why doesn't exists here? I had to workaround using Select Event Output
- Lists containing Lists (multidimensional)
- Lists containing multiple data types
- Disabling nodes

Furthermore I'm looking for:
- Object oriented programming. How can I create objects with multiple variables of different types in a clear way?

At this point I have the feeling that Vuo is still kind of incomplete (I also realized many text operations are not working yet) eventhough it's at version 1.0. It slows my development down and I think I can use it only for certain purposes, where it's nice to take advantage of the visual and live programming. But a few things are still super complicated. Saying that Vuo is not ready for production is probably wrong in general, but there are moments were I think certain things are missing.

I would very much like to know how to simplify this composition and hope it's just something I need to learn! I'm highly interested in others opinions! Please correct me, if I'm wrong here.

Thanks!

Comments

@jvolker, I've attached a

smokris's picture
Submitted by

jvolker, I've attached a simplified version of your composition that does the same thing you were trying to do — get 4 x 3D point values from specific OSC addresses. For working with OSC, we have a Filter by Address node which helps clean up this composition a lot.

Regarding your other points:

  • "Grouping nodes" — Our focus for the Vuo 1.2 release (coming in several months) is to add support for subcompositions. So that's definitely a top priority for us. When you group nodes into a subcomposition, you'll be able to create multiple instances of it — so it facilitates both code reuse and cleaning up the visual layout.
  • "Hold List (or Point) with the option to update on an event" — Vuo's Hold Value and Hold List nodes are similar to Quartz Composer's "Sample and Hold" patch; they store a value which can later be retrieved. If you just want to pass a value through when it comes in, check out Vuo's Share Value and Share List nodes.
  • "Lists containing Lists" and "Lists containing multiple data types" — Definitely; we have plans for both.
  • "Object-oriented programming" — You can already create your own types by writing some C code (it's easy, and unlike Quartz Composer it's a public/supported API). We also have plans to allow creating your own data types in Vuo Editor — so you can benefit from strict typing (as opposed to merely throwing everything into a list with multiple data types).

Since you mentioned being familiar with text programming — it's really easy to get started creating Vuo nodes in the C language. Check out our documentation on creating node classes and types. Sometimes it's just easier to make a text-code node that encapsulates some complex logic, rather than trying to implement it visually (though we hope, over time, to reduce the need to do this).

We understand not everything is there yet. We're working hard to add more functionality (and fix embarrassing issues like the text crash you reported). And we eagerly listen to the community's feature requests (thanks for your 2 feature requests so far). So we encourage you to keep trying, keep asking questions, and keep the requests coming. And hopefully we'll get there together.