TUIO-UDP-OSC-spreading data

i am working on a patch (in beta18 and beta19.1) which receives the tuio protocol from an LSSS. it is a custom made program written in java. in vvvv i receive thru a udp network server node and go to oscdecoder node. i tried the tuiodecoder node but it is not working (nil). i guess it is only for tuio from fiducials, not tuio in general.
as you can see in my attached file i receive a string thru s+h and decode in oscdecoder thru the adress /tuio/2Dobj which is working.
the data comes thru the asstring node in an iobox. i dont know how to separate the right data (slices). the lsss sends (pretty fast) a zone number followed by x, y and something like mouse up or down, etc.
(for example: /tuio/2Dobj set 3104 3104 0.00000000 0.00 000000 0 0 0 0 0 0.04444445)
has anybody experience with receiving such tuio from other apps than the reactable fiducials?
thanks a lot!
armin (195.4 kB)

ei amin,

not sure about your problem. everything looks good in the screenshot, doesn’t it?

if you now want individual slices out of all the received slices uses Stallone (Spreads) to split all the 11 slice up statically. or use another GetSlice (Spreads) with its Bin Size set to 1 to retrieve individual slices.

or was the problem something completely different?

hey joreg,
you are right. in the screenshot it does look pretty good and normal.
i tried the getslice again, did it yesterday also before i posted. was just confused because the data from tuio arrives to fast for my eye.
now i take the zone number (slice3), x and y (slice4 and 5) with getslice and it is working, hurra!
but when the lsss detects a zone without movement it sends me the zone number only for example 2780, 2782, 2783, etc. which comes out on all my getslice outputs (please see the attached jpg).
how can i get rid of values (zone numbers) without movement?
thanks for the quick answer.

tuio-receiver02_2008.12.17-11.20.17.jpg (153.2 kB)


then simply check for that, can’t you?
messages without movement info have less parameters, right? so via a count node you could get the number of received parameters and compare it. then use maybe a Switch (Value Input) …see? or am i not getting the problem right?

it is working. no problem. thanks.

hello joreg,

now i want to store the incoming data (zone number, x and y position) into a spread and change the content (index, x,y,) dynamical.
i receive tuio data thru udp osc nodes and split it up with switch and get slice as you suggested to me in the last post. thats working fine. i can see when incoming data changes and new zone numbers (tracked objects) are created and deleted.

if an object is created it sends me the object number and its x and y position (0. to 1.). when it is not moving it sends only the object number and nothing else.

here i wanna save all in a new spread.
i used the buildspread module from woei but still have troubles with editing the right slices with the right index number.

for example i receive zone number 23 with x and y data. next i receive zone 24, 25, 26, 27, but they all just pop up short (like noise) so i write them in the new spread and delete them immediatly while 23 should stay there holding its last x and y postion.
perhaps the best solution would be something like the “tuioreceiver” node or the “fiducialtracker” node, where i get the index number, x and y pos., etc. but i think it is possible to patch. i just miss a small “piece” or i think to complicated.

later today i will upload pics of the patch.
i greatly appreciate any help.

here are some screenshots from the patch i was talking about.
i hope this says something.
armin (1.4 MB)

hm…the screenshots don’t really help my understanding of what you are trying to achieve…

from the beginning. why won’t the TUIODecoder plugin work for you again? have you tried it with a tuio-client available from the reactivision site? if this works wouldn’t it probably an option to adapt your custom java-program to send a standard-conformant tuio-protocoll? or should the TUIODecoder plugin need improvements?

i receive tuio information via the UDP node but the TUIODecoder node is not reacting on it. every output is always NIL.
that’s the reason why i started to patch it.

there are some differences in the protocol (incoming data) between the TUIO_Simulator’s and my LSSS application but until now i could not figure out what exactly it is. i don’t think the TUIODecoder node need improvements. i guess in my apps output is something missing…

i try to explain my problem again:
the whole thing is about a multi touch tracking system mounted under a table. this system sends me tuio information (zone number, x, y, and some other values, as it is specified in TUIO prot.).
from this string i can extract the 3 values i need. i split the incoming tuio data in an alive spread and a set spread. the alive spread shows me, which zones are still alive. the set spread outputs when a zone is created or any other movement of alive zones happens. but it “overwrites” the previews values.
the important point here is to create a spread which stores the x and y values from all alive zones (even if they are not moving). i tested the TUIO_Simulator with the TUIODecoder node and this kind of output is exactly what i would like to patch.
the problem is i did not find a way to create such a dynamical changing spread. tried it with BuildSpreads, Edit(Spreads) and some other nodes but it did not work. possible that my skills are not enough or my knowledge about spreads…
is it possible to patch something similar to the output of the TUIODecoder node?

if all this sounds to abstract or “NIL” i try to reach you on skype tomorrow (if you don’t mind).
thanks! amicalement,

hmja i think patching a tuiodecoder should be possible but now but still i thought it would be kinda tricky (not having an idea of the exact problematic at the moment…maybe it can be realized quite simple with some S+Hs?).

in the meanwhile…could you record the output of your LSSS application and post it here? also record the output of the tuio-simulator, so we can compare it.

with recording i mean simply attach a queue (string) to the udp-server and then post the queued strings here.

here are some jpgs from the incoming strings (tried to copy - paste the string from queue node but it was not possible to copy the content of the iobox, just the adress “/tuio/2Dobj”).
the two inputs look very different on the pictures. i add them one time as they come in and the second time with “show characters” in the inspector activated.
meanwhile i tried different things with s+h, =(spreads), getindex, etc. and i think i am closer to what i need.
now i have three lists (spreads). one is the alive list which shows me all alive zone numbers (e.g. detected hands on the table). in the other two lists i write all incoming, changing x and y coordinates. i have to tell the second and third list which zones (index of zone numbers) disappear from the alive list. the same slices i have to delete from the second(x) and third(y) list.
is there a node like “DeleteSlice”, somethink like the opposite of InsertSlice?

next tuesday i’ll be back on my pc.

thanks and best,
armin (229.8 kB)

hei amin,

in your screenshots we see that your lsss application doesn’t send in OSC bundles, but the simulator does. i just checked the source of the TUIODecoder plugin and there it clearly discards all incoming messages that are not bundles. so…i see 3 simple options:

i realized that too when i compared the incoming strings. guess that’s the reason why the values don’t come in a spread.
i’ll try and see whats the best and quickest solution for me.
can you post the link for the TUIODecoder plugin again? it’s not working (The requested URL /svnroot/vvvv/plugins/c was not found on this server.).


the above link is for direct checkout via subversion. here is a link to the webview of the plugins sources:

tried to patch the wrapper by adding #bundle#0#etc. with the +(string) node at the beginning of the incoming string from the udp node. connected it to the tuiodecoder node but nothing changed. still nil. the osc decoder output a long counting number. maybe this comes from the osc-timetag. at all it was kind of to abstract for me to add the right string to make the incoming string a bundle. if somebody ever tried to bundle incoming unbundled tuio strings from the udp node in vvvv any tipp is very welcome and helpful.
i do not have the source of my java app which sends the tuio so this week i’ll have a close look on the tuiodecoder sourcecode and try to modify it to accept unbundled tuio.

until now i didn’t had the time to look at the TUIODecoder source but i found a way to patch it (see attached patch).
the patch writes the incoming unbundled tuio in a spread (thanks woei for his BuildSpread node!). output is compared with the spread of alive zone numbers (thanks kalle for his =(Spreads) node). the Sift node selects and outputs only the last x and y values of all alive zones. voila.
i use this for an 32step4channel sound sequencer. interface is a capacity system mounted under a 240x120cm table.
the attached screenshot gives a first very reduced impression of my output. 128 growing boxes, everything connected over udp osc to a max/msp audio patch. it’s wonderful.
vvvv is awesome. i am STOKED!

the patch:

tuio-receiver-directxy-test01.v4p (58.6 kB)

the screenshot:

real-space01-DirectX Renderer_2009.02.13-16.50.12.jpg (62.3 kB)