So I’m using kontroleur to send data from gui to output patch, I have a few channels…
Currently nearly 300. Every now and again I need to send all those values to the patch, to try and make sure all the parameters are correct, I’ve had instances where things arent quite right, and so I have some global presets to do this.
So I send the parameters via UDP to the output patch, which itself sends osc to the server node to set the pins. All the values arrive via udp, but over 200 odd, and it becomes sporadic in whether the pins receives them, and eventually simply stops sending altogether.
I’m guessing osc is maxing out, is there anyway to do away with osc and send values straight to a pin, or is the pin itself receiving the osc?
Thing is, I havent finished adding parameters yet :D
hm…can you elaborate on that setup?! why aren’t you sending the data to the Server (VVVV) directly?
then please read my remarks in Boygrouping Video problem - #3 by Elias. since noone disputed my findings there so far i still suspect those to be correct. meaning what you observe makes sense in that as you go beyond the 1472 bytes per message you increase the chance for data loss. i’d expect quite a lot of loss on a wifi, i’ve noticed some on a lan and i’d not expect any on locahost. what are you on?
you can check the length of your osc messages using the Length (Raw) and then experiment with different max-length for messages over which you split them into extra messages.
Quick reply before I try and squeeze tests in before a gig. It’s all local host, the GUI is a separate instance in the same PC, I send via udp to the output patch (with extra data, ie fade times/types, as the GUI runs slower than the output and I get stutters in the fades if I don’t.)
So the osc is local host to the server from the same patch. I’ve doubled the buffer size, but will check the message length next.
Ok, around 8000 bytes, and the osc messages get lost, thats not just part of the message, the earlier parts of it dont get received either. If I get a chance I’ll try and make a demo patch next week. The UDP I’m sending from the GUI is 6600 bytes at the moment.
(the doubled buffer size is on the UDP receiver from the other patch, dont know if its made a difference, it was when I was trying to work out why values werent arriving!)
So attached is a patch that demo’s going over the 8k limit, its not many ioboxes…
I’ve looked at the code for the server node, and it seems fairly simple, but I can’t manage to get it to run as a dynamic plugin, and I’m too dumb to be able to debug that! All I want to do is address pins via a spread of addresses and a spread of csv strings for values etc and get rid of the the osc part altogether. Any pointers of how to do this in a dynamic plugin would be great, or do I need the full sdk for dependencies?
ServerChoke.v4p (86.0 kB)
ok, two things:
-
you’re sending your floats as strings by setting s as typetags instead of f that costs a lot of bytes. make it an f and see how your message length decreases.
-
udp seems to have a default 8k limit on the receiver. maybe this could be increased on the server node. would need some investigation
but since you’re localhost you could use Reader/Writer (Raw SharedMemory) maybe in combination with SetIO (Value) if you don’t want to write your own plug.
1/ this was a demo, not how I’m using it in my patch, I’m using 100’s of ioboxes via kontroleur
2/ this would be useful, but ideally I would like a plugin to do it as setio is too slow, I’m have a timeline with fades computed locally to stop stuttering, and it would be great if I could just write directly to the ioboxes rather than having to osc to the server node and then that set the pins, doesnt make sense really!
I’d ideally like some help knowing what exactly is setting the pins,
eg. pin = FCachedPinsmessage.Address; is this setting the iobox? Address being the pin location or osc addess, and message being an osc encoded bundle? Can I set this by giving a spread of address and a spread of piped and/or csv strings. Could input a raw osc formated input into the plugin and use that here? I can’t find any documentation that seems to refer to this at all.
I found a getpin in IpluginHost2 but no Setpin, does this exist?
Attached is some mutilated non functional plugin, any pointers would be appreciated
NoFunctionalShite (6.7 kB)
hei cat,
the needed code is all scattered here: https://github.com/vvvv/vvvv-sdk/blob/da2c2bb3dabe645938016e1f7c4376e961432c37/vvvv45/src/nodes/plugins/vvvv/Server/VVVVServerNode.cs
i allowed myself to put together what i think is what you’re looking for. basically the SetIO as plugin, please see attached and report.
exposedPins.zip (20.0 kB)
Thanks Joreg, that looks so simple!
I did go through the sever node code, and hacked it back to my awful and none functioning hack, but gots lost without a paddle…
Fantastic!
the node is now in latest alphas and is called SetExposedPin (VVVV)