» Global S & R nodes
This site relies heavily on Javascript. You should enable it if you want the full experience. Learn more.

Global S & R nodes

module variable Send Receive global

about

This is a global S & R set of nodes which will allow users to send values from multiple locations in their application into a centralized "global variable" and receive all values in the same frame as a spread anywhere else on their application.

Useful for example to store lists of values such as application-wide used fonts, configuration parameters, etc.

For a working example check out \vvvv\girlpower inside the download zip.

Cheers!

Features

  • Nodes come with support for Value, String, Color, Raw and Transform data types
  • Input spreads for all data types are supported
  • Clear pin allows resetting of the full value spread from any S or R node with the same Name
  • Avoid Duplicates pin prevents existing values from being sent
  • Add pin allow you to control when the data is sent

The nodes work on both 32 and 64 bit systems.

Source

Source code is available via github herehttps://github.com/ravazquez/globalSR.

Feel free to add issues or expand the nodes as you see fit.

Installation

Download zip file and extract in your project.

To use in your own patches just drag and drop \lib\GlobalSR.dll into your patch and select the version you need (String, Value, Color, etc.)

download

GlobalSR.v1.0.5.zip
11.10.18 [17:35 UTC] by ravazquez | 38 downloads
v 1.0.5

io 02/09/2018 - 14:23

Spreadable input please.

ravazquez 02/09/2018 - 14:49

io: Done!

u7angel 03/09/2018 - 10:08

looks interesting, but i don't really get the usecase. right now it looks like a queue node. why would i want to set a queue from random locations without a reference where the stuff is coming from. maybe you can provide a more practise based patch with comments. cheers

ravazquez 03/09/2018 - 10:19

u7angel: Hi! Initially my usecase was to make a list of all the fonts used in a rather large application in order to detect which ones were missing on any given client machine. With a nodeset like this I managed to do just that, every text node I used has an S on the font input pin and somewhere else I receive all these font names and check against installed fonts in the running system to create a list of used vs missing fonts. It was of no relevance for me to know where exactly in the many patches the font was used, I just needed a full list.

With a Queue node and the existing S/R I did not find an easy way to do that. If you send from multiple places into the same S on the same frame, only one value makes it through, and how would you Queue up values from many different locations without having to link every source into the Queue node? Maybe I missed something. In any case, that is one usecase, my hope is that other users might have other cases where this makes sense.

Hope that brings some light into what these nodes are trying to accomplish.

And yes, a better help patch would help. I will work on that.

Cheers!

ravazquez 03/09/2018 - 11:47

u7angel: I added a new help patch which hopefully makes things slightly clearer. Let me know if it helps.

u7angel 03/09/2018 - 16:12

thank you for the explanation and for sharing. some sort of database it is i guess.

colorsound 09/09/2018 - 13:04

@ravazquez , thank you for this contribution pretty useful.

i was looking and asking for something similar here https://discourse.vvvv.org/t/asset-checker-file/16304/2

but in this case of the forum link the value should change and remain in same slice like normal s r nodes. so if i get a 0 it change to 0 and if i get a 1 it changes to 1 in same slice instead of adding a new slice in the spread. not sure if this behavior is posible too in your s r nodes ?

some more features requests ;D :

it seems now it adds values on a sort of internal onchange which is cool but a swith or something to add manually would be very helpful, could we add some manual add bang input pin for better control of it ?

and more powerfull and advance is to include an add and remove input pins choosing the slice input pin of the spread in which to add or remove.

great contrib ¡¡

ravazquez 09/09/2018 - 21:47

hey colorsound: thanks for the kind words, glad to hear it is useful for you.

Regarding your requests:

  • an "Add" bang pin is fairly easy to add, I will get it done soon and update you on it. My only question is, should this manual bang be now the only way to send data, or should I add another pin on the lines of "AutoUpdate" or something similar which let's you decide if you want the manual bang or the onChange behavior? Any thoughts?
  • having the nodes know which value in the spread has changed so only that value is updated is a bit more tricky since I do not really have any information on the execution order in which the S nodes are sending data. An option from the top of my head would be to have an additional pin in which you can specify an index/name for the specific slice you want to write into, but this is effectively almost the same as having a separate Send node which writes only to that value. I need to give it some thought. An example of how/where you need it would be helpful to design the solution properly.
  • as for the dynamic input pins to choose where you are adding or removing data, sounds to me like you want direct write access to the inner data structure holding all the values. I could add a couple of more nodes like GetData/SetData which take in the name of the S/R and a spread of values, allowing you to set the inner structure's data manually, would this be handy? Here again an example of what you are trying to achieve would be best to think about an optimal solution.

Let me know what your thoughts are.

Cheers!

colorsound 11/09/2018 - 10:23

@ravazquez

Great you are happy to update it.

  • I think the more flexible the better so an autoupdate and manual seems good.

Other option is to have 2 versions the basic and the advance which have all specifi features, in case you only need to use the basic hundreds times for performance reason better to have basic and advance i,m just guessing.

But Before we get too complex ,lets start with the first scenario where you want to collect data from different patches in the same final spread in which global s r node will be handy, i leave an explanation here :

https://discourse.vvvv.org/t/asset-checker-file/16304/3

david 09/10/2018 - 15:28

Super! Exactly what I always wanted to have. My usecase: Write whatever infos to a log from anywhere in your patch graph. but have access to that log at a single patch and write it from there to the HD. The Add pin is missing indeed!
Nice!

ravazquez 10/10/2018 - 19:33

@colorsound: I have not forgotten about you, been rather busy lately but this is high up on my TODO list. I am almost certain what you show in your post can already be achieved with the nodes as they are (maybe the the Add feature is needed for that). I will try to come up with a sample patch that shows this.

@david: glad to hear it works for you! Indeed the Add pin is missing, right now it only adds on Change, but I understand this is not ideal in a lot of scenarios. I will introduce that feature and an "Avoid Duplicates" feature in the next release.

Cheers!

ravazquez 11/10/2018 - 16:40

@colorsound and @david: Add and AvoidDuplicates pins have been added. Let me know how if they are working as you expected.

Happy patching!

colorsound 15/10/2018 - 17:55

@ravazquez , thanks a lot for the update. i did some quick tests and it seems to work pretty nice.

will it be posible at some point to add string category ?

cheers.

ravazquez 15/10/2018 - 19:47

@colorsound: String category is already there, let me know if you cannot find it

colorsound 15/10/2018 - 19:57

@ravazquez , yes now when i drag dll to patch i saw all categories , wonderfull ¡¡ , gracias ¡¡.

anonymous user login

Shoutbox

~10h ago

joreg: sunday afternoon...best time to apply for a #vvvv #vl #xenko residency: vvvvertigo-starts-residency-2019

~2d ago

joreg: @microdee: yep i think the site takes user submissions..

~2d ago

microdee: @joreg: it's missing FlareTic... ;)

~2d ago

joreg: @motzi yeah, welcome to my life..

~2d ago

motzi: @joreg: i'm tempted to look into PraxisLIVE :)

~2d ago

joreg: @u7: no worries, we'll still be here when you everyone comes back...

~2d ago

u7angel: @joreg, are u trying to get rid of the community ? :)

~3d ago

joreg: bored of #vvvv? try some alternatives: https://alternativeto.net/software/vvvv/

~4d ago

tonfilm: @beyon you can also use F# together with #vl, see: #fsharp #dotnet #visualprogramming https://github.com/vvvv/VL.DemoLib/tree/master/src/VL.FSharpDemoLib

~5d ago

beyon: tonfilm: Ok,currently using F# though but maybe I should look into sharpdx vs xenko math